Procházet zdrojové kódy

Merge remote-tracking branch 'origin/V0.0.2' into V0.0.2

ouyang před 2 roky
rodič
revize
59d75b1e3e
43 změnil soubory, kde provedl 1212 přidání a 432 odebrání
  1. 1 2
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteWorkTimeService.java
  2. 1 3
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteWorkTimesFallbackFactory.java
  3. 1 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/worktime/domain/SysWorkTime.java
  4. 52 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/drill/DrillPlanCycleEnum.java
  5. 3 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/edu/EduTrainingPlanCycleEnum.java
  6. 5 5
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/event/WorkTimeChangeEvent.java
  7. 56 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/utils/DateUtils.java
  8. 70 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/TaskCreatingServiceImplBase.java
  9. 178 92
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java
  10. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/vo/TMonitoringRetrievalPlanVO.java
  11. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/controller/CoreDrillPlanController.java
  12. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillPlanService.java
  13. 16 41
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java
  14. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  15. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingPlanController.java
  16. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingPlanService.java
  17. 52 14
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java
  18. 2 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  19. 20 14
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreResumptionConfigurationServiceImpl.java
  20. 28 5
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/listener/WorkTimeChangeEventListener.java
  21. 28 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ApiPlanController.java
  22. 16 7
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/TaskController.java
  23. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionService.java
  24. 44 45
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
  25. 115 111
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java
  26. 260 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/RebuildResumptionTaskBusiness.java
  27. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/ResumptionTaskBusiness.java
  28. 48 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java
  29. 59 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/ICoreMonitoringRetrievalTaskService.java
  30. 49 6
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java
  31. 2 1
      soc-modules/soc-modules-core/src/main/resources/mapper/access/TMonitoringRetrievalPlanMapper.xml
  32. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml
  33. 1 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml
  34. 29 1
      soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml
  35. 5 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysWorkTimeController.java
  36. 8 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/WorkTimeMonthOnAppController.java
  37. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/dto/SysWorkTimeDto.java
  38. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/dto/WorkTimeMonthEditNewDto.java
  39. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysWorkTimeMapper.java
  40. 2 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysWorkTimeService.java
  41. 36 52
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java
  42. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java
  43. 8 8
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysWorkTimeMapper.xml

+ 1 - 2
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteWorkTimeService.java

@@ -5,8 +5,7 @@ import com.xunmei.common.core.constant.ServiceNameConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.utils.Ymd;
-import com.xunmei.common.core.web.domain.AjaxResult;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.api.factory.RemoteWorkTimesFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;

+ 1 - 3
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteWorkTimesFallbackFactory.java

@@ -3,14 +3,12 @@ package com.xunmei.system.api.factory;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.utils.Ymd;
-import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.RemoteWorkTimeService;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.PostMapping;
 
 import java.util.Date;
 import java.util.List;

+ 1 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysWorkTime.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/worktime/domain/SysWorkTime.java

@@ -1,4 +1,4 @@
-package com.xunmei.system.api.domain;
+package com.xunmei.common.core.domain.worktime.domain;
 
 import java.util.Date;
 

+ 52 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/drill/DrillPlanCycleEnum.java

@@ -0,0 +1,52 @@
+package com.xunmei.common.core.enums.drill;
+
+import com.xunmei.common.core.enums.CycleCommonEnum;
+
+/**
+ * 教育培训周期枚举
+ *
+ * @author xunmei
+ */
+public enum DrillPlanCycleEnum {
+    NONE(0, "无周期"),
+    QUARTERLY(4, "每季度"),
+    HALF_YEARLY(5, "每半年"),
+    YEARLY(6, "每年");
+
+    private final Integer code;
+    private final String desc;
+
+    DrillPlanCycleEnum(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public static CycleCommonEnum toCommmonEnum(Integer code) {
+        switch (code) {
+            case 0:
+                return CycleCommonEnum.NONE;
+            case 1:
+                return CycleCommonEnum.DAILY;
+            case 2:
+                return CycleCommonEnum.WEEKLY;
+            case 3:
+                return CycleCommonEnum.MONTHLY;
+            case 4:
+                return CycleCommonEnum.QUARTERLY;
+            case 5:
+                return CycleCommonEnum.HALF_YEARLY;
+            case 6:
+                return CycleCommonEnum.YEARLY;
+            default:
+                throw new IllegalArgumentException();
+        }
+    }
+}

+ 3 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/EduTrainingPlanCycleEnum.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/edu/EduTrainingPlanCycleEnum.java

@@ -1,4 +1,6 @@
-package com.xunmei.common.core.enums;
+package com.xunmei.common.core.enums.edu;
+
+import com.xunmei.common.core.enums.CycleCommonEnum;
 
 /**
  * 教育培训周期枚举

+ 5 - 5
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/event/WorkTimeChangeEvent.java

@@ -1,5 +1,6 @@
 package com.xunmei.common.core.event;
 
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import org.springframework.context.ApplicationEvent;
@@ -13,13 +14,12 @@ public class WorkTimeChangeEvent extends ApplicationEvent {
 
     @ApiModelProperty(value = "机构id数组", notes = "受影响的机构")
     private final List<Long> orgIds;
-    private final Date ymdDate;
 
-    public WorkTimeChangeEvent(Object source, List<Long> orgIds,Date ymdDate) {
+    private final List<SysWorkTime> dataList;
+
+    public WorkTimeChangeEvent(Object source, List<Long> orgIds, List<SysWorkTime> dataList) {
         super(source);
         this.orgIds = orgIds;
-      //  this.dataList = dataList;
-        this.ymdDate = ymdDate;
+        this.dataList = dataList;
     }
-
 }

+ 56 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/utils/DateUtils.java

@@ -172,7 +172,62 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
     }
 
     public static DateRange getStartAndEnd(Date date, Integer cycle) {
-        return getStartAndEnd(date, CycleCommonEnum.getEnum(cycle));
+        LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        LocalDateTime startDateTime;
+        LocalDateTime endDateTime;
+        Date startTime;
+        Date endTime;
+        if (ObjectUtil.equal(cycle, 0)) {
+            startTime = DateUtil.beginOfDay(date);
+            endTime = DateUtil.endOfDay(date);
+        } else if (ObjectUtil.equal(cycle, 1)) {
+            startDateTime = localDate.atStartOfDay();
+            endDateTime = localDate.atTime(LocalTime.MAX);
+            startTime = Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant());
+            endTime = Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant());
+        } else if (ObjectUtil.equal(cycle, 2)) {
+            LocalDate startOfWeek = localDate.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+            LocalDate endOfWeek = localDate.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
+            startDateTime = startOfWeek.atStartOfDay();
+            endDateTime = endOfWeek.atTime(LocalTime.MAX);
+            startTime = Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant());
+            endTime = Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant());
+        } else if (ObjectUtil.equal(cycle,3)) {
+            LocalDate startOfMonth = localDate.with(TemporalAdjusters.firstDayOfMonth());
+            LocalDate endOfMonth = localDate.with(TemporalAdjusters.lastDayOfMonth());
+            startDateTime = startOfMonth.atStartOfDay();
+            endDateTime = endOfMonth.atTime(LocalTime.MAX);
+            startTime = Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant());
+            endTime = Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant());
+        } else if (ObjectUtil.equal(cycle, 4)) {
+            Month month = localDate.getMonth();
+            int quarter = (month.getValue() - 1) / 3 + 1;
+            LocalDate startOfQuarter = LocalDate.of(localDate.getYear(), (quarter - 1) * 3 + 1, 1);
+            LocalDate endOfQuarter = startOfQuarter.plusMonths(2).with(TemporalAdjusters.lastDayOfMonth());
+            startDateTime = startOfQuarter.atStartOfDay();
+            endDateTime = endOfQuarter.atTime(LocalTime.MAX);
+            startTime = Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant());
+            endTime = Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant());
+        } else if (ObjectUtil.equal(cycle,5)) {
+            int halfYear = (localDate.getMonthValue() - 1) / 6 + 1;
+            LocalDate startOfHalfYear = LocalDate.of(localDate.getYear(), (halfYear - 1) * 6 + 1, 1);
+            LocalDate endOfHalfYear = startOfHalfYear.plusMonths(5).with(TemporalAdjusters.lastDayOfMonth());
+            startDateTime = startOfHalfYear.atStartOfDay();
+            endDateTime = endOfHalfYear.atTime(LocalTime.MAX);
+            startTime = Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant());
+            endTime = Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant());
+        } else if (ObjectUtil.equal(cycle, 6)) {
+            LocalDate startOfYear = localDate.with(TemporalAdjusters.firstDayOfYear());
+            LocalDate endOfYear = localDate.with(TemporalAdjusters.lastDayOfYear());
+            startDateTime = startOfYear.atStartOfDay();
+            endDateTime = endOfYear.atTime(LocalTime.MAX);
+            startTime = Date.from(startDateTime.atZone(ZoneId.systemDefault()).toInstant());
+            endTime = Date.from(endDateTime.atZone(ZoneId.systemDefault()).toInstant());
+        } else {
+            throw new IllegalArgumentException("Unsupported planCycle: " + cycle);
+        }
+
+        return new DateRange(DateTime.of(startTime).setField(DateField.MILLISECOND, 0), DateTime.of(endTime).setField(DateField.MILLISECOND, 0));
     }
 
     public static DateRange getStartAndEnd(Date date, CycleCommonEnum cycle) {

+ 70 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/TaskCreatingServiceImplBase.java

@@ -1,6 +1,7 @@
 package com.xunmei.core;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -12,7 +13,7 @@ import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.enums.CycleCommonEnum;
 import com.xunmei.system.api.RemoteWorkTimeService;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.*;
@@ -43,11 +44,78 @@ public abstract class TaskCreatingServiceImplBase<M extends BaseMapper<T>, T> ex
 
     public Map<Long, Boolean> orgWorkTimeStatusMap(Date now, CycleCommonEnum cycle, List<Long> orgIds) {
         List<SysWorkTime> times = selectWorkTimeList(now, cycle, orgIds);
-        Map<Long, List<SysWorkTime>> map = times.stream().filter(t -> ObjectUtil.equal(t.getIsEnable(), 1)).collect(Collectors.groupingBy(t -> t.getOrgId()));
+        Map<Long, List<SysWorkTime>> map = times.stream()
+                .filter(t -> ObjectUtil.equal(t.getIsEnable(), 1L))
+                .collect(Collectors.groupingBy(t -> t.getOrgId()));
         Map<Long, Boolean> r = new HashMap<>();
         map.forEach((k, v) -> {
             r.put(k, CollectionUtil.isNotEmpty(v));
         });
         return r;
     }
+
+    public void rebuildTask(WorkTimeChangeEvent timeChangeEvent) {
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.DAILY)){
+            SysWorkTime today= timeChangeEvent.getDataList().stream().filter(d->d.getYmdDate().equals (DateUtil.beginOfDay(new Date()) )).findFirst().get();
+            rebuildDayTask(timeChangeEvent.getOrgIds(), today);
+        }
+
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.WEEKLY)){
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.WEEKLY);
+            rebuildWeeklyTask(timeChangeEvent.getOrgIds(),range.getStartTime(),range.getEndTime());
+        }
+
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.MONTHLY)){
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.MONTHLY);
+            rebuildMonthTask(timeChangeEvent.getOrgIds(),range.getStartTime(),range.getEndTime());
+        }
+
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.QUARTERLY)){
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.QUARTERLY);
+            rebuildQuarterTask(timeChangeEvent.getOrgIds(),range.getStartTime(),range.getEndTime());
+        }
+
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.HALF_YEARLY)){
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.HALF_YEARLY);
+            rebuildHalfYearTask(timeChangeEvent.getOrgIds(),range.getStartTime(),range.getEndTime());
+        }
+
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.YEARLY)){
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.YEARLY);
+            rebuildYearTask(timeChangeEvent.getOrgIds(),range.getStartTime(),range.getEndTime());
+        }
+    }
+
+    private Boolean containCurrentCycle(List<SysWorkTime> workTimes, CycleCommonEnum cycle) {
+        DateRange range = DateUtils.getStartAndEnd(new Date(), cycle);
+        Date start = range.getStartTime();
+        Date end = range.getEndTime();
+        if (start.after(end)) {
+            return false;
+        }
+        Set<Long> timeValues = workTimes.stream().map(t -> t.getYmdDate().getTime()).collect(Collectors.toSet());
+        while (true) {
+            if (timeValues.contains(start.getTime())) {
+                return true;
+            }
+
+            if (start.equals(end) || start.after(end)) {
+                return false;
+            }
+
+            start = DateUtil.offset(start, DateField.DAY_OF_YEAR, 1);
+        }
+    }
+
+    public  void rebuildDayTask(List<Long> orgIds, SysWorkTime workTime){}
+
+    public  void rebuildWeeklyTask(List<Long> orgIds, Date startDate, Date endDate){}
+
+    public  void rebuildMonthTask(List<Long> orgIds, Date startDate, Date endDate){}
+
+    public  void rebuildQuarterTask(List<Long> orgIds, Date startDate, Date endDate){}
+
+    public  void rebuildHalfYearTask(List<Long> orgIds, Date startDate, Date endDate){}
+
+    public  void rebuildYearTask(List<Long> orgIds, Date startDate, Date endDate){}
 }

+ 178 - 92
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java

@@ -9,7 +9,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
+import com.xunmei.common.core.enums.CycleCommonEnum;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.DateUtils;
@@ -128,10 +130,16 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
         TMonitoringRetrievalPlan plan = tMonitoringRetrievalPlanMapper.selectById(id);
         BeanUtils.copyProperties(plan, tMonitoringRetrievalPlanVO);
         boolean isEdit = false;
+        boolean isComplete = false;
         if (plan.getParentId() != null) {
             isEdit = true;
         }
         tMonitoringRetrievalPlanVO.setIsEdit(isEdit);
+        List<CoreMonitoringRetrievalTask> coreMonitoringRetrievalTasks = iCoreMonitoringRetrievalTaskService.selectComplete(id);
+        if (CollectionUtils.isNotEmpty(coreMonitoringRetrievalTasks) && plan.getParentId() == null) {
+            isComplete = true;
+        }
+        tMonitoringRetrievalPlanVO.setIsComplete(isComplete);
         return tMonitoringRetrievalPlanVO;
     }
 
@@ -197,7 +205,7 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                             tm.setEndTime(time);
                             tMonitoringRetrievalPlans.add(tm);
                         }
-                    }else {
+                    } else {
                         SysOrg sysOrg = new SysOrg();
                         sysOrg.setPath(tm.getOrgPath());
                         sysOrg.setType(Integer.valueOf(tMonitoringRetrievalPlan.getOrgType()));
@@ -305,6 +313,7 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                             cal.add(Calendar.DATE, amount);
                             Date time = cal.getTime();
                             tMonitoringRetrievalPlan1.setEndTime(time);
+                            //   List<TMonitoringRetrievalPlan> tMonitoringRetrievalPlans1 = tMonitoringRetrievalPlans(l.getPath(), l.getType(), tMonitoringRetrievalPlan1);
                         }
                         tMonitoringRetrievalPlans.add(tMonitoringRetrievalPlan1);
                     } else {
@@ -446,8 +455,74 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
         return 1;
     }
 
+    private List<TMonitoringRetrievalPlan> tMonitoringRetrievalPlans(String path, Integer type, TMonitoringRetrievalPlan tMonitoringRetrievalPlan) {
+        List<TMonitoringRetrievalPlan> tMonitoringRetrievalPlans = new ArrayList<>();
+        SysOrg sysOrg = new SysOrg();
+        sysOrg.setPath(path);
+        sysOrg.setType(Integer.valueOf(type));
+        List<SysOrg> sysOrgs = remoteOrgService.listByParentIdAndType(sysOrg, SecurityConstants.INNER);
+        for (SysOrg s : sysOrgs) {
+            TMonitoringRetrievalPlan plan = new TMonitoringRetrievalPlan();
+            BeanUtils.copyProperties(tMonitoringRetrievalPlan, plan);
+            plan.setPlanName(tMonitoringRetrievalPlan.getPlanName());
+            plan.setOrgId(s.getId());
+            plan.setOrgName(s.getShortName());
+            plan.setRoleId(tMonitoringRetrievalPlan.getRoleId());
+            plan.setRoleName(tMonitoringRetrievalPlan.getRoleName());
+            plan.setOrgPath(s.getPath());
+            plan.setOrgType(tMonitoringRetrievalPlan.getOrgType());
+            plan.setPlanCycle(tMonitoringRetrievalPlan.getPlanCycle());
+            plan.setPlanFrequency(tMonitoringRetrievalPlan.getPlanFrequency());
+            plan.setPlanStatus(ZERO);
+            plan.setCreateBy(SecurityUtils.getUsername());
+            plan.setUpdateTime(DateUtils.getNowDate());
+            plan.setUpdateBy(SecurityUtils.getUsername());
+            plan.setCreateTime(DateUtils.getNowDate());
+            plan.setDescription(tMonitoringRetrievalPlan.getDescription());
+            plan.setCreateType(1);
+            plan.setParentId(tMonitoringRetrievalPlan.getId());
+            plan.setIsDistribute("1");
+            if (!tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString()) &&
+                    tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE)) {
+                plan.setStartTime(new Date());
+                int amount = 0;
+                LocalDate lastDayOfMonth;
+                switch (tMonitoringRetrievalPlan.getPlanCycle()) {
+                    case "1":
+                        amount = 1;
+                        break;
+                    case "2":
+                        amount = 7;
+                        break;
+                    case "3":
+                        LocalDate currentDate = LocalDate.now();
+                        lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth());
+                        amount = lastDayOfMonth.getDayOfMonth() - currentDate.getDayOfMonth();
+                        break;
+                    case "4":
+                        amount = getDayNum(3);
+                        break;
+                    case "5":
+                        amount = getDayNum(6);
+                        break;
+                    case "6":
+                        amount = getDayNum(12);
+                        break;
+                }
+                Calendar cal = Calendar.getInstance();
+                cal.setTime(new Date());
+                cal.add(Calendar.DATE, amount);
+                Date time = cal.getTime();
+                plan.setEndTime(time);
+            }
+            tMonitoringRetrievalPlans.add(plan);
+        }
+        return tMonitoringRetrievalPlans;
+    }
+
     @Override
     public int withdraw(Long id) {
+        DateRange startAndEnd;
         TMonitoringRetrievalPlan plan = baseMapper.selectById(id);
         QueryWrapper queryWrapper = new QueryWrapper();
         queryWrapper.eq(PARENT_ID, id);
@@ -457,15 +532,33 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
                 tMonitoringRetrievalPlan.setPlanStatus(2);
                 tMonitoringRetrievalPlan.setIsDistribute("0");
                 baseMapper.updateById(tMonitoringRetrievalPlan);
-                iCoreMonitoringRetrievalTaskService.deleteTaskByPlanId(tMonitoringRetrievalPlan.getId());
+                //删除所有的任务,现在删除本周期的任务
                 if (plan.getPlanCycle().equals("0")) {
+                    iCoreMonitoringRetrievalTaskService.deleteAllTaskByPlanId(tMonitoringRetrievalPlan.getId());
+                    //如果无周期删除计划
                     baseMapper.deleteById(tMonitoringRetrievalPlan.getId());
                 }
             }
+            if (!plan.getPlanCycle().equals("0")) {
+                switch (plan.getPlanCycle()) {
+                    //天
+                    case "1":
+                        LocalDate localDate = LocalDate.now();
+                        iCoreMonitoringRetrievalTaskService.deleteDayTaskByPlanId(plan.getId(), plan.getPlanCycle(), localDate);
+                        break;
+                    default:
+                        startAndEnd = DateUtils.getStartAndEnd(new Date(), Integer.valueOf(plan.getPlanCycle()) + 1);
+                        iCoreMonitoringRetrievalTaskService.deleteDayTaskByTime(plan.getId(), plan.getPlanCycle(), startAndEnd.getStartTime(), startAndEnd.getEndTime());
+                        break;
+                }
+            }
         }
         plan.setPlanStatus(2);
         plan.setIsDistribute("0");
-        iCoreMonitoringRetrievalTaskService.deleteTaskByPlanId(id);
+        if (!plan.getPlanCycle().equals("0")) {
+            startAndEnd = DateUtils.getStartAndEnd(new Date(), Integer.valueOf(plan.getPlanCycle()) + 1);
+            iCoreMonitoringRetrievalTaskService.deleteDayTaskByTimeAndPlanId(id, plan.getPlanCycle(), startAndEnd.getStartTime(), startAndEnd.getEndTime());
+        }
         return baseMapper.updateById(plan);
     }
 
@@ -625,98 +718,99 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
     @Override
     public int updateTMonitoringRetrievalPlan(TMonitoringRetrievalPlan tMonitoringRetrievalPlan) {
         List<CoreMonitoringRetrievalTask> coreMonitoringRetrievalTasks = iCoreMonitoringRetrievalTaskService.selectComplete(tMonitoringRetrievalPlan.getId());
-        if (CollectionUtils.isNotEmpty(coreMonitoringRetrievalTasks)) {
-            throw new ServiceException("下发任务已做完,不能修改");
-        }
-        //  iCoreMonitoringRetrievalTaskService.updateDeleteTaskByPlanId(tMonitoringRetrievalPlan.getId(), 1);
-        iCoreMonitoringRetrievalTaskService.deleteTaskByPlanId(tMonitoringRetrievalPlan.getId());
+        //如果计划下面的任务都是没完成就删除所有任务,有完成就只修改
         tMonitoringRetrievalPlan.setUpdateTime(DateUtils.getNowDate());
         tMonitoringRetrievalPlan.setUpdateBy(SecurityUtils.getUsername());
         TMonitoringRetrievalPlan plan = baseMapper.selectById(tMonitoringRetrievalPlan.getId());
         BeanUtils.copyProperties(tMonitoringRetrievalPlan, plan);
         plan.setIsDistribute("0");
         int i = tMonitoringRetrievalPlanMapper.updateById(plan);
-        try {
-            QueryWrapper queryWrapper = new QueryWrapper();
-            queryWrapper.eq("parent_id", plan.getId());
-            baseMapper.delete(queryWrapper);
-            SysOrg sysOrg1 = remoteOrgService.selectSysOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER);
-            List<TMonitoringRetrievalPlan> tMonitoringRetrievalPlans = new ArrayList<>();
-            if (sysOrg1.getType() == 1) {
-                distribute(plan.getId());
-            } else {
-                SysOrg sysOrg = new SysOrg();
-                sysOrg.setPath(plan.getOrgPath());
-                sysOrg.setType(Integer.valueOf(tMonitoringRetrievalPlan.getOrgType()));
-                List<SysOrg> sysOrgs = remoteOrgService.listByParentIdAndType(sysOrg, SecurityConstants.INNER);
-                for (SysOrg s : sysOrgs) {
-                    TMonitoringRetrievalPlan plan1 = new TMonitoringRetrievalPlan();
-                    BeanUtils.copyProperties(tMonitoringRetrievalPlan, plan1);
-                    plan1.setPlanName(tMonitoringRetrievalPlan.getPlanName());
-                    plan1.setOrgId(s.getId());
-                    plan1.setOrgName(s.getShortName());
-                    plan1.setRoleId(tMonitoringRetrievalPlan.getRoleId());
-                    plan1.setRoleName(tMonitoringRetrievalPlan.getRoleName());
-                    plan1.setOrgPath(s.getPath());
-                    plan1.setOrgType(tMonitoringRetrievalPlan.getOrgType());
-                    plan1.setPlanCycle(tMonitoringRetrievalPlan.getPlanCycle());
-                    plan1.setPlanFrequency(tMonitoringRetrievalPlan.getPlanFrequency());
-                    plan1.setPlanStatus(ZERO);
-                    plan1.setCreateBy(SecurityUtils.getUsername());
-                    plan1.setUpdateTime(DateUtils.getNowDate());
-                    plan1.setUpdateBy(SecurityUtils.getUsername());
-                    plan1.setCreateTime(DateUtils.getNowDate());
-                    plan1.setDescription(tMonitoringRetrievalPlan.getDescription());
-                    plan1.setCreateType(1);
-                    plan1.setParentId(tMonitoringRetrievalPlan.getId());
-                    plan1.setIsDistribute("1");
-                    if (!tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString()) &&
-                            tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE)) {
-                        plan1.setStartTime(new Date());
-                        int amount = 0;
-                        LocalDate lastDayOfMonth;
-                        switch (tMonitoringRetrievalPlan.getPlanCycle()) {
-                            case "1":
-                                amount = 1;
-                                break;
-                            case "2":
-                                amount = 7;
-                                break;
-                            case "3":
-                                LocalDate currentDate = LocalDate.now();
-                                lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth());
-                                amount = lastDayOfMonth.getDayOfMonth() - currentDate.getDayOfMonth();
-                                break;
-                            case "4":
-                                amount = getDayNum(3);
-                                break;
-                            case "5":
-                                amount = getDayNum(6);
-                                break;
-                            case "6":
-                                amount = getDayNum(12);
-                                break;
+        if (CollectionUtils.isEmpty(coreMonitoringRetrievalTasks)) {
+            iCoreMonitoringRetrievalTaskService.deleteTaskByPlanId(tMonitoringRetrievalPlan.getId());
+            try {
+                QueryWrapper queryWrapper = new QueryWrapper();
+                queryWrapper.eq("parent_id", plan.getId());
+                baseMapper.delete(queryWrapper);
+                SysOrg sysOrg1 = remoteOrgService.selectSysOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER);
+                List<TMonitoringRetrievalPlan> tMonitoringRetrievalPlans = new ArrayList<>();
+                if (sysOrg1.getType() == 1) {
+                    distribute(plan.getId());
+                } else {
+                    SysOrg sysOrg = new SysOrg();
+                    sysOrg.setPath(plan.getOrgPath());
+                    sysOrg.setType(Integer.valueOf(tMonitoringRetrievalPlan.getOrgType()));
+                    List<SysOrg> sysOrgs = remoteOrgService.listByParentIdAndType(sysOrg, SecurityConstants.INNER);
+                    for (SysOrg s : sysOrgs) {
+                        TMonitoringRetrievalPlan plan1 = new TMonitoringRetrievalPlan();
+                        BeanUtils.copyProperties(tMonitoringRetrievalPlan, plan1);
+                        plan1.setPlanName(tMonitoringRetrievalPlan.getPlanName());
+                        plan1.setOrgId(s.getId());
+                        plan1.setOrgName(s.getShortName());
+                        plan1.setRoleId(tMonitoringRetrievalPlan.getRoleId());
+                        plan1.setRoleName(tMonitoringRetrievalPlan.getRoleName());
+                        plan1.setOrgPath(s.getPath());
+                        plan1.setOrgType(tMonitoringRetrievalPlan.getOrgType());
+                        plan1.setPlanCycle(tMonitoringRetrievalPlan.getPlanCycle());
+                        plan1.setPlanFrequency(tMonitoringRetrievalPlan.getPlanFrequency());
+                        plan1.setPlanStatus(ZERO);
+                        plan1.setCreateBy(SecurityUtils.getUsername());
+                        plan1.setUpdateTime(DateUtils.getNowDate());
+                        plan1.setUpdateBy(SecurityUtils.getUsername());
+                        plan1.setCreateTime(DateUtils.getNowDate());
+                        plan1.setDescription(tMonitoringRetrievalPlan.getDescription());
+                        plan1.setCreateType(1);
+                        plan1.setParentId(tMonitoringRetrievalPlan.getId());
+                        plan1.setIsDistribute("1");
+                        if (!tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString()) &&
+                                tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE)) {
+                            plan1.setStartTime(new Date());
+                            int amount = 0;
+                            LocalDate lastDayOfMonth;
+                            switch (tMonitoringRetrievalPlan.getPlanCycle()) {
+                                case "1":
+                                    amount = 1;
+                                    break;
+                                case "2":
+                                    amount = 7;
+                                    break;
+                                case "3":
+                                    LocalDate currentDate = LocalDate.now();
+                                    lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth());
+                                    amount = lastDayOfMonth.getDayOfMonth() - currentDate.getDayOfMonth();
+                                    break;
+                                case "4":
+                                    amount = getDayNum(3);
+                                    break;
+                                case "5":
+                                    amount = getDayNum(6);
+                                    break;
+                                case "6":
+                                    amount = getDayNum(12);
+                                    break;
+                            }
+                            Calendar cal = Calendar.getInstance();
+                            cal.setTime(new Date());
+                            cal.add(Calendar.DATE, amount);
+                            Date time = cal.getTime();
+                            plan1.setEndTime(time);
                         }
-                        Calendar cal = Calendar.getInstance();
-                        cal.setTime(new Date());
-                        cal.add(Calendar.DATE, amount);
-                        Date time = cal.getTime();
-                        plan1.setEndTime(time);
+                        tMonitoringRetrievalPlans.add(plan1);
                     }
-                    tMonitoringRetrievalPlans.add(plan1);
-                }
-                if ((tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE) || tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString())) && CollectionUtils.isNotEmpty(tMonitoringRetrievalPlans)) {
-                    try {
-                        iCoreMonitoringRetrievalTaskService.noCycleTask(tMonitoringRetrievalPlans);
-                    } catch (Exception e) {
-                        throw new ServiceException("下发任务异常,请联系管理员");
+                    if ((tMonitoringRetrievalPlan.getImmediately().equals(Boolean.TRUE) || tMonitoringRetrievalPlan.getPlanCycle().equals(ZERO.toString())) && CollectionUtils.isNotEmpty(tMonitoringRetrievalPlans)) {
+                        try {
+                            iCoreMonitoringRetrievalTaskService.noCycleTask(tMonitoringRetrievalPlans);
+                        } catch (Exception e) {
+                            throw new ServiceException("下发任务异常,请联系管理员");
+                        }
                     }
                 }
-            }
 
-        } catch (Exception e) {
-            e.getMessage();
+            } catch (Exception e) {
+                e.getMessage();
+            }
         }
+
+
         return i;
     }
 
@@ -736,18 +830,10 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
             TMonitoringRetrievalPlan monitoringRetrievalPlan = tMonitoringRetrievalPlanMapper.selectById(id);
             List<CoreMonitoringRetrievalTask> coreMonitoringRetrievalTasks = iCoreMonitoringRetrievalTaskService.selectComplete(id);
             if (CollectionUtils.isNotEmpty(coreMonitoringRetrievalTasks)) {
-                throw new ServiceException("下发任务已做完,不能删除");
+                throw new ServiceException("计划有已完成或者已逾期的任务,不能被删除。");
             }
-            //如果是下发的任务
-      /*      if (monitoringRetrievalPlan.getParentId() != null) {
-                //不能删除
-                throw new ServiceException("子任务,不能删除");
-            } else {*/
-            //   if (monitoringRetrievalPlan.getCreateType() == 0) {
             i = tMonitoringRetrievalPlanMapper.updatePlan(monitoringRetrievalPlan);
             iCoreMonitoringRetrievalTaskService.deleteWaitTaskByPlanId(id);
-            // }
-            // }
         }
         return i;
     }

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/vo/TMonitoringRetrievalPlanVO.java

@@ -15,4 +15,6 @@ public class TMonitoringRetrievalPlanVO extends TMonitoringRetrievalPlan {
     @ApiModelProperty(value = "是否可以编辑")
     private Boolean isEdit;
     private Long parentOrgId;
+    @ApiModelProperty(value = "是否有已完成和已逾期")
+    private Boolean isComplete;
 }

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/controller/CoreDrillPlanController.java

@@ -86,7 +86,8 @@ public class CoreDrillPlanController extends BaseController {
     @Log(title = "预案演练计划", businessType = BusinessType.DELETE)
     @DeleteMapping("/{id}")
     public AjaxResult remove(@PathVariable Long id) {
-        return toAjax(coreDrillPlanService.deleteCoreDrillPlanByIds(id));
+        coreDrillPlanService.deleteCoreDrillPlanByIds(id);
+        return success();
     }
 
     /**

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillPlanService.java

@@ -59,7 +59,7 @@ public interface ICoreDrillPlanService extends IService<CoreDrillPlan> {
      * @param ids 需要删除的预案演练计划主键集合
      * @return 结果
      */
-    int deleteCoreDrillPlanByIds(Long ids);
+    void deleteCoreDrillPlanByIds(Long ids);
 
     /**
      * 删除预案演练计划信息

+ 16 - 41
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java

@@ -22,7 +22,9 @@ import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDataVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDetailVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanPageVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanRoleVo;
-import com.xunmei.common.core.enums.EduTrainingPlanCycleEnum;
+import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlan;
+import com.xunmei.common.core.enums.drill.DrillPlanCycleEnum;
+import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.drill.DrillPlanStatus;
 import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
@@ -217,7 +219,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         int insert = coreDrillPlanMapper.insert(plan);
 
         //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
-        if ((!checkOrgType(org.getType())) && ObjectUtil.equal(DrillPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow()))) {
+        if ((!checkOrgType(org.getType())) && ObjectUtil.equal(DrillPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(DrillPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow()))) {
             final CoreDrillPlanDataVo detailPlanData = this.getCoreDrillPlanDataVo(plan.getId());
             coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate());
         }
@@ -294,7 +296,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
                 CompletableFuture.runAsync(() -> {
                     //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
                     if ((ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus())
-                            && (ObjectUtil.equal(EduTrainingPlanCycleEnum.NONE, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
+                            && (ObjectUtil.equal(DrillPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
                         CoreDrillPlanDataVo detailPlanData = getCoreDrillPlanDataVo(drillPlan.getId());
                         coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate());
                     }
@@ -404,47 +406,20 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int deleteCoreDrillPlanByIds(Long id) {
-        Integer count = coreDrillTaskMapper.checkHasTaskIsDone(Collections.singletonList(id));
-        if (count != null && count > 0) {
-            throw new RuntimeException("已有任务完成,无法删除");
+    public void deleteCoreDrillPlanByIds(Long id) {
+        CoreDrillPlan plan = getById(id);
+        if (EduTrainingPlanStatus.DRAFT.getCode() == plan.getPlanStatus()) {
+            removeById(id);
+            coreDrillTaskService.delByStartTimeAndEndTimeAndPlanIdList(Arrays.asList(id), null, null);
         }
         final Integer done = coreDrillTaskMapper.checkHasTaskIsDoneByPlanParentId(id);
         if (done != null && done > 0) {
-            throw new RuntimeException("已有任务完成,无法删除");
-        }
-        final CoreDrillPlan plan = getById(id);
-        if (plan.getStandard() == 0) {
-            //自建计划
-            final List<CoreDrillTask> drillTaskList = coreDrillTaskMapper.selectList(new LambdaQueryWrapper<CoreDrillTask>()
-                    .eq(CoreDrillTask::getPlanId, id)
-                    .select(CoreDrillTask::getId));
-            final List<Long> taskIdList = drillTaskList.stream().map(CoreDrillTask::getId).collect(Collectors.toList());
-            //删除任务相关
-            if (ObjectUtil.isNotEmpty(taskIdList)) {
-                coreDrillTaskMapper.deleteBatchIds(taskIdList);
-                coreDrillTaskToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillTaskToRole>().in(CoreDrillTaskToRole::getDrillTaskId, taskIdList));
-            }
-            //删除计划
-            return coreDrillPlanMapper.deleteBatchIds(Collections.singletonList((id)));
-        } else {
-            //标准计划
-            List<Long> planIdList = coreDrillPlanMapper.selectIdByParentId(id);
-            if (ObjectUtil.isNotEmpty(planIdList)) {
-                //删除任务相关
-                final List<CoreDrillTask> drillTaskList = coreDrillTaskMapper.selectList(new LambdaQueryWrapper<CoreDrillTask>()
-                        .in(CoreDrillTask::getPlanId, planIdList)
-                        .select(CoreDrillTask::getId));
-                final List<Long> taskIdList = drillTaskList.stream().map(CoreDrillTask::getId).collect(Collectors.toList());
-                if (ObjectUtil.isNotEmpty(taskIdList)) {
-                    coreDrillTaskMapper.deleteBatchIds(taskIdList);
-                    coreDrillTaskToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillTaskToRole>().in(CoreDrillTaskToRole::getDrillTaskId, taskIdList));
-                }
-            }
-            //删除计划
-            planIdList.add(id);
-            return coreDrillPlanMapper.deleteBatchIds(planIdList);
+            throw new RuntimeException("计划有已完成或者已逾期的任务,不能被删除");
         }
+        List<Long> list = baseMapper.selectIdByParentId(id);
+        list.add(id);
+        coreDrillTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
+        removeByIds(list);
     }
 
     /**
@@ -492,7 +467,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
                 for (CoreDrillPlan drillPlan : list) {
                     CompletableFuture.runAsync(() -> {
                         //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
-                        if ((ObjectUtil.equal(DrillPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
+                        if ((ObjectUtil.equal(DrillPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(DrillPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
                             final CoreDrillPlanDataVo detailPlanData = getCoreDrillPlanDataVo(drillPlan.getId());
                             coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate());
                         }

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -20,9 +20,10 @@ import com.xunmei.common.core.domain.drill.vo.*;
 import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.enums.CycleCommonEnum;
-import com.xunmei.common.core.enums.EduTrainingPlanCycleEnum;
+import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
 import com.xunmei.common.core.enums.ExportPdfType;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.drill.DrillDoStatus;

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingPlanController.java

@@ -83,7 +83,8 @@ public class CoreEduTrainingPlanController extends BaseController {
     @Log(title = "教育培训计划", businessType = BusinessType.DELETE)
     @DeleteMapping("/{id}")
     public AjaxResult remove(@PathVariable(value = "id") Long id) {
-        return toAjax(coreEduTrainingPlanService.deleteCoreEduTrainingPlanByIds(id));
+        coreEduTrainingPlanService.deleteCoreEduTrainingPlanByIds(id);
+        return success();
     }
 
     /**

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingPlanService.java

@@ -60,7 +60,7 @@ public interface ICoreEduTrainingPlanService extends IService<CoreEduTrainingPla
      * @param ids 需要删除的教育培训计划主键集合
      * @return 结果
      */
-    int deleteCoreEduTrainingPlanByIds(Long ids);
+    void deleteCoreEduTrainingPlanByIds(Long ids);
 
     /**
      * 删除教育培训计划信息

+ 52 - 14
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java

@@ -22,7 +22,7 @@ import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDataVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDetailVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanRoleVo;
-import com.xunmei.common.core.enums.EduTrainingPlanCycleEnum;
+import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
 import com.xunmei.common.core.utils.AssertUtil;
@@ -39,6 +39,7 @@ import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -213,7 +214,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         int insert = coreEduTrainingPlanMapper.insert(plan);
 
         //如果不是省联社或者办事处行社,状态启用,并且是无周期或者立即生效
-        if ((!checkOrgType(org.getType())) && ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow()))) {
+        if ((!checkOrgType(org.getType())) && ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(EduTrainingPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow()))) {
             CoreEduTrainingPlanDataVo detailPlanData = this.getCoreEduTrainingPlanDataVo(plan.getId());
             coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
         }
@@ -289,21 +290,27 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         Long planId = plan.getId();
         // 判断标准计划能否修改:存在下发的计划生成了任务且任务存在已执行
         Integer standardPlanHasDone = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(planId);
-        if (standardPlanHasDone == 1) {
+        if (ObjectUtil.equal(standardPlanHasDone, 1)) {
             //验证修改的字段是否符合要求
             String errorMsg = "有任务已执行或已过期,仅允许修改培训主题!";
             validatePlanForStandard(request, plan, errorMsg, 1);
             doUpdatePlan(plan, request);
         } else {
             doUpdatePlan(plan, request);
-            List<CoreEduTrainingPlan> list = lambdaQuery().eq(CoreEduTrainingPlan::getParentId, planId).select(CoreEduTrainingPlan::getId).list();
+            List<CoreEduTrainingPlan> list = lambdaQuery().eq(CoreEduTrainingPlan::getParentId, planId).list();
+            for (CoreEduTrainingPlan trainingPlan : list) {
+                populateProperties(plan, trainingPlan);
+                updateById(trainingPlan);
+                coreEduTrainingPlanToExecOrgMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
+                batchSavePlanToExecOrg(request.getPlanExecOrgIdList(), plan.getId());
+            }
             List<Long> collect = list.stream().map(CoreEduTrainingPlan::getId).collect(Collectors.toList());
             coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(collect, null, null);
             for (CoreEduTrainingPlan trainingPlan : list) {
                 CompletableFuture.runAsync(() -> {
                     //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
                     if ((ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus())
-                            && (ObjectUtil.equal(EduTrainingPlanCycleEnum.NONE, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
+                            && (ObjectUtil.equal(EduTrainingPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
                         CoreEduTrainingPlanDataVo detailPlanData = getCoreEduTrainingPlanDataVo(trainingPlan.getId());
                         coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
                     }
@@ -316,6 +323,19 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 
     }
 
+    private void populateProperties(CoreEduTrainingPlan source, CoreEduTrainingPlan target) {
+        target.setPlanName(source.getPlanName());
+        target.setPlanCycle(source.getPlanCycle());
+        target.setExecTimes(source.getExecTimes());
+        target.setPlanStatus(source.getPlanStatus());
+        target.setExecOrgType(source.getExecOrgType());
+        target.setStartDate(source.getStartDate());
+        target.setEndDate(source.getEndDate());
+        target.setBuildTaskNow(source.getBuildTaskNow());
+        target.setRemark(source.getRemark());
+        target.setFileList(source.getFileList());
+
+    }
 
     private void validatePlanForStandard(CoreEduTrainingPlanEditDto request, CoreEduTrainingPlan plan, String errorMsg, Integer type) {
         validateFieldForStandard(request.getPlanCycle(), plan.getPlanCycle(), errorMsg);
@@ -323,7 +343,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         List<Long> execOrgIdList = coreEduTrainingPlanToExecOrgMapper.selectOrgIdByPlanId(plan.getId());
         validateListForStandard(execOrgIdList, request.getPlanExecOrgIdList(), errorMsg);
         validateFieldForStandard(request.getRemark(), plan.getRemark(), errorMsg);
-        validateFieldForStandard(JSON.toJSONString(request.getFileList()), plan.getFileList(), errorMsg);
+        validateFileListForStandard(request.getFileList(), JSON.parseArray(plan.getFileList(), String.class), errorMsg);
         if (type == 0) {
             //标准计划可以修改名称
             validateFieldForStandard(request.getPlanName(), plan.getPlanName(), errorMsg);
@@ -334,8 +354,24 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         }
     }
 
+    private void validateFileListForStandard(List<String> requestFileList, List<String> sourceFileList, String errorMsg) {
+        if (ObjectUtil.isEmpty(requestFileList) && ObjectUtil.isEmpty(sourceFileList)) {
+            return;
+        }
+        if (ObjectUtil.isEmpty(requestFileList) && ObjectUtil.isNotEmpty(sourceFileList)) {
+            throw new RuntimeException(errorMsg);
+        }
+        if (ObjectUtil.isNotEmpty(requestFileList) && ObjectUtil.isEmpty(sourceFileList)) {
+            throw new RuntimeException(errorMsg);
+        }
+        if (sourceFileList.size() != requestFileList.size() || !sourceFileList.containsAll(requestFileList)) {
+            throw new RuntimeException(errorMsg);
+        }
+
+    }
+
     private void validateFieldForStandard(Object requestValue, Object planValue, String errorMessage) {
-        if (ObjectUtil.notEqual(requestValue, planValue)) {
+        if (ObjectUtil.notEqual(requestValue, planValue) || ObjectUtils.allNull(requestValue, planValue)) {
             throw new RuntimeException(errorMessage);
         }
     }
@@ -389,10 +425,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int deleteCoreEduTrainingPlanByIds(Long id) {
+    public void deleteCoreEduTrainingPlanByIds(Long id) {
         CoreEduTrainingPlan plan = getById(id);
         if (EduTrainingPlanStatus.DRAFT.getCode() == plan.getPlanStatus()) {
             removeById(id);
+            coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(Arrays.asList(id), null, null);
         }
         final Integer done = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(id);
         if (done != null && done > 0) {
@@ -401,9 +438,9 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         List<Long> list = baseMapper.selectIdByParentId(id);
         list.add(id);
         coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
+        removeByIds(list);
 
-
-        Integer count = coreEduTrainingTaskMapper.checkHasTaskIsDone(Collections.singletonList(id));
+       /* Integer count = coreEduTrainingTaskMapper.checkHasTaskIsDone(Collections.singletonList(id));
         if (count != null && count > 0) {
             throw new RuntimeException("已有任务完成,无法删除");
         }
@@ -433,7 +470,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             //删除计划
             planIdList.add(id);
             return coreEduTrainingPlanMapper.deleteBatchIds(planIdList);
-        }
+        }*/
     }
 
     /**
@@ -492,9 +529,9 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         AssertUtil.isNotEmpty(plan, "计划不存在!");
         AssertUtil.equal(plan.getIssue(), 0, "计划已完成下发!");
         List<CoreEduTrainingPlan> planList = lambdaQuery().eq(CoreEduTrainingPlan::getParentId, planId).select(CoreEduTrainingPlan::getId).list();
-        if (planList.isEmpty()){
+        if (planList.isEmpty()) {
             planList = buildPlanData(plan, new ArrayList<>(), true);
-        }else {
+        } else {
             planList.forEach(plan1 -> plan1.setPlanStatus(EduTrainingPlanStatus.USING.getCode()));
             List<Long> collect = planList.stream().map(CoreEduTrainingPlan::getId).collect(Collectors.toList());
             coreEduTrainingPlanMapper.updatePlanStatusByIdList(collect, EduTrainingPlanStatus.USING.getCode());
@@ -512,7 +549,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
                     CompletableFuture.runAsync(() -> {
                         //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
                         if ((ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus())
-                                && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
+                                && (ObjectUtil.equal(EduTrainingPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
                             CoreEduTrainingPlanDataVo detailPlanData = getCoreEduTrainingPlanDataVo(trainingPlan.getId());
                             coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
                         }
@@ -602,6 +639,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     public Integer revocationPlan(Long planId) {
         CoreEduTrainingPlan plan = getById(planId);
         plan.setIssue(0);
+        plan.setPlanStatus(EduTrainingPlanStatus.DELETED.getCode());
         DateRange range = DateUtils.getStartAndEnd(new Date(), plan.getPlanCycle());
         List<Long> list = coreEduTrainingPlanMapper.selectIdByParentId(planId);
         coreEduTrainingPlanMapper.updatePlanStatusByIdOrParentId(planId, EduTrainingPlanStatus.DELETED.getCode());

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -28,7 +28,7 @@ import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.enums.CycleCommonEnum;
-import com.xunmei.common.core.enums.EduTrainingPlanCycleEnum;
+import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
 import com.xunmei.common.core.enums.ExportPdfType;
 import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
 import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
@@ -52,7 +52,7 @@ import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;

+ 20 - 14
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreResumptionConfigurationServiceImpl.java

@@ -273,9 +273,11 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
         List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "2");
-        resumptions.forEach(r -> {
-            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
-        });
+        if (CollectionUtils.isNotEmpty(coreResumptionConfigurations) && CollectionUtils.isNotEmpty(resumptions)) {
+            resumptions.forEach(r -> {
+                addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
+            });
+        }
     }
 
     @Override
@@ -285,11 +287,11 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
         List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "3");
-      if(CollectionUtils.isNotEmpty(coreResumptionConfigurations)){
-          resumptions.forEach(r -> {
-              addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
-          });
-      }
+        if (CollectionUtils.isNotEmpty(coreResumptionConfigurations) && CollectionUtils.isNotEmpty(resumptions)) {
+            resumptions.forEach(r -> {
+                addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
+            });
+        }
     }
 
     @Override
@@ -299,9 +301,11 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
         List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "4");
-        resumptions.forEach(r -> {
-            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
-        });
+        if (CollectionUtils.isNotEmpty(coreResumptionConfigurations) && CollectionUtils.isNotEmpty(resumptions)) {
+            resumptions.forEach(r -> {
+                addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
+            });
+        }
     }
 
     @Override
@@ -311,8 +315,10 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
         List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "1");
-        resumptions.forEach(r -> {
-            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
-        });
+        if (CollectionUtils.isNotEmpty(coreResumptionConfigurations) && CollectionUtils.isNotEmpty(resumptions)) {
+            resumptions.forEach(r -> {
+                addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
+            });
+        }
     }
 }

+ 28 - 5
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/listener/WorkTimeChangeEventListener.java

@@ -2,7 +2,8 @@ package com.xunmei.core.listener;
 
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
-import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
+import com.xunmei.core.resumption.task.RebuildResumptionTaskBusiness;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.event.EventListener;
@@ -11,19 +12,41 @@ import org.springframework.transaction.event.TransactionPhase;
 import org.springframework.transaction.event.TransactionalEventListener;
 
 @Component
+@Slf4j
 public class WorkTimeChangeEventListener implements ApplicationListener<WorkTimeChangeEvent> {
 
     @Autowired
     private ICoreEduTrainingTaskService coreEduTrainingTaskService;
+
     @Autowired
-    private ICoreMonitoringRetrievalTaskService coreMonitoringRetrievalTaskService;
+    private RebuildResumptionTaskBusiness rebuildResumptionTaskBusiness;
+
     @Override
     @EventListener(WorkTimeChangeEvent.class)
-    @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT,fallbackExecution = true)
+    @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = true)
     public void onApplicationEvent(WorkTimeChangeEvent event) {
+        eduTask(event);
+        resumptionTask(event);
+    }
 
-        coreEduTrainingTaskService.taskChangeForTimeWorkChange(event);
+    private void eduTask(WorkTimeChangeEvent event) {
+        try {
+            log.info("教育培训开始处理机构作息变更");
+            coreEduTrainingTaskService.taskChangeForTimeWorkChange(event);
+            log.info("教育培训结束处理机构作息变更");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+
+    }
 
-        coreMonitoringRetrievalTaskService.taskChangeForTimeWorkChange(event);
+    private void resumptionTask(WorkTimeChangeEvent event) {
+        try {
+            log.info("履职开始处理机构作息变更");
+            rebuildResumptionTaskBusiness.rebuildTask(event);
+            log.info("履职结束处理机构作息变更");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
     }
 }

+ 28 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ApiPlanController.java

@@ -215,6 +215,34 @@ public class ApiPlanController {
 //    @RequiresPermissions("core:plan:findById")
     public AjaxResult cheHui(@PathVariable Long id) {
         appPlanService.cheHui(id);
+        AppPlan plan = appPlanService.getById(id);
+        //撤回后的下发如果存在子计划并且勾选立即执行也需要生成任务
+        if(plan.getBuildTaskNow()==1){
+            DateTime datetime = new DateTime();
+            datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+            //当有周期存在时保持原有接口不变(doTask),否则按照新的接口创建
+            Integer plancycle = plan.getPlanCycle();
+            if (plancycle != null) {
+                if (plancycle == 2) {
+                    taskBusiness.syncDay(datetime, plancycle);
+                }
+                if (plancycle == 3) {
+                    taskBusiness.syncWeek(datetime, plancycle);
+                }
+                if (plancycle == 4) {
+                    taskBusiness.syncMonth(datetime, plancycle);
+                }
+                if (plancycle == 5) {
+                    taskBusiness.syncQuarter(datetime, plancycle);
+                }
+                if (plancycle == 6) {
+                    taskBusiness.syncHalfYear(datetime, plancycle);
+                }
+                if (plancycle == 7) {
+                    taskBusiness.syncYear(datetime, plancycle);
+                }
+            }
+        }
         return AjaxResult.success();
     }
     @ApiOperation(value = "撤回后下发")

+ 16 - 7
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/TaskController.java

@@ -3,7 +3,7 @@ package com.xunmei.core.resumption.controller;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.nacos.shaded.com.google.gson.Gson;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.xunmei.common.core.constant.SecurityConstants;
@@ -18,11 +18,12 @@ import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.dto.doTaskDto;
 import com.xunmei.core.resumption.service.AppPlanService;
 import com.xunmei.core.resumption.service.ResumptionService;
+import com.xunmei.core.resumption.task.RebuildResumptionTaskBusiness;
 import com.xunmei.core.resumption.task.ResumptionTaskBusiness;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -50,6 +51,9 @@ public class TaskController {
     @Autowired
     private ResumptionService resumptionService;
 
+    @Autowired
+    RebuildResumptionTaskBusiness rebuildTaskBusiness;
+
     @GetMapping("/dayTask")
     public AjaxResult dayTask() {
 
@@ -136,14 +140,19 @@ public class TaskController {
             this.createNewResumptionByOrgAndPlan(orgIds, planIds, datetime);
         }
     }
+
     @InnerAuth
-    @PostMapping ("/dayTaskByWorkTime")
-    public AjaxResult dayTaskByWorkTime(@RequestBody  Map<String,Object> params) {
+    @PostMapping("/dayTaskByWorkTime")
+    public AjaxResult dayTaskByWorkTime(@RequestBody Map<String, Object> params) {
         try {
-            resumptionService.dayTaskByWorkTime(params);
+            Gson gson = new Gson();
+            SysWorkTime workTime = gson.fromJson((String) params.get("sysWorkTime"), SysWorkTime.class);
+            //SysWorkTime workTime = params.get("sysWorkTime");
+            List<Long> orgIds = (List<Long>) params.get("orgIds");
+            rebuildTaskBusiness.rebuildDayTask(orgIds, workTime);
             return AjaxResult.success("任务生成成功");
-        }catch (Exception e){
-            return  AjaxResult.error("任务生成失败");
+        } catch (Exception e) {
+            return AjaxResult.error("任务生成失败");
         }
     }
 

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionService.java

@@ -46,7 +46,7 @@ public interface ResumptionService extends IService<Resumption> {
 
     List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 
-    void dayTaskByWorkTime(Map<String, Object> params);
+//    void dayTaskByWorkTime(Map<String, Object> params);
 
     List<CoreSafetyExceptionData> findResumptionList(DateTime time);
 }

+ 44 - 45
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java

@@ -145,39 +145,50 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
             for (DistributeStatusDto d :
                     dto.getOrgAndStatus()) {
 
-                AppPlan plan = baseMapper.selectById(dto.getId());
-                plan.setOrgId(d.getOrgId().toString());
-                plan.setDistributeStatus("1");
-                plan.setPlanOfOrgId(d.getOrgId());
-                plan.setPlanOfOrgType(Long.valueOf(orgService.selectSysOrgById(d.getOrgId(), SecurityConstants.INNER).getType()));
-                plan.setPlanStatus(d.getStatus());
-                plan.setDistributePlanStatus(d.getStatus().toString());
-                plan.setCreateTime(new Date());
-                plan.setId(null);
-//            plan.setPlanName(plan.getPlanName()+"下发"+orgService.selectOrgById(d.getOrgId(),SecurityConstants.INNER).getName());
-                plan.setPlanName(plan.getPlanName());
-                plan.setParentId(dto.getId());
-                baseMapper.insert(plan);
-                Long id = plan.getId();
 
-                List<Long> roleList = appPlanToRoleMapper.selectList(new LambdaQueryWrapper<AppPlanToRole>().eq(AppPlanToRole::getPlanId, dto.getId())).stream().map(AppPlanToRole::getRoleId).collect(Collectors.toList());
-                AppPlanToRole atr = null;
-                for (Long roleId : roleList) {
-                    atr = new AppPlanToRole();
-                    atr.setRoleId(roleId);
-                    atr.setPlanId(id);
-                    appPlanToRoleMapper.insert(atr);
-                }
-
-                List<AppPlanToPoint> itemList = appPlanToItemMapper.selectList(new LambdaQueryWrapper<AppPlanToPoint>().eq(AppPlanToPoint::getPlanId, dto.getId()));
-                AppPlanToPoint item = null;
-                for (AppPlanToPoint ruleItemVo : itemList) {
-                    item = new AppPlanToPoint();
-                    item.setPointId(ruleItemVo.getPointId());
-                    item.setPlanId(id);
-                    item.setPointScan(ruleItemVo.isPointScan());
-                    item.setRequired(ruleItemVo.isRequired());
-                    appPlanToItemMapper.insert(item);
+                AppPlan tempplan = baseMapper.selectOne(new LambdaQueryWrapper<AppPlan>().eq(AppPlan::getPlanOfOrgId,d.getOrgId()).eq(AppPlan::getParentId,dto.getId()));
+                //如果子计划已存在
+                if(tempplan!=null){
+                    tempplan.setPlanStatus(d.getStatus()>0?1:2);
+                    tempplan.setDistributePlanStatus(d.getStatus().toString());
+                    tempplan.setDistributeStatus("1");
+                    baseMapper.updateById(tempplan);
+                }else {
+                    AppPlan plan = baseMapper.selectById(dto.getId());
+                    plan.setOrgId(d.getOrgId().toString());
+                    plan.setDistributeStatus("1");
+                    plan.setPlanOfOrgId(d.getOrgId());
+                    plan.setPlanOfOrgType(Long.valueOf(orgService.selectSysOrgById(d.getOrgId(), SecurityConstants.INNER).getType()));
+                    plan.setPlanStatus(d.getStatus());
+                    plan.setDistributePlanStatus(d.getStatus().toString());
+                    plan.setCreateTime(new Date());
+                    plan.setId(null);
+//            plan.setPlanName(plan.getPlanName()+"下发"+orgService.selectOrgById(d.getOrgId(),SecurityConstants.INNER).getName());
+                    plan.setPlanName(plan.getPlanName());
+                    plan.setParentId(dto.getId());
+                    baseMapper.insert(plan);
+                    Long id = plan.getId();
+
+                    List<Long> roleList = appPlanToRoleMapper.selectList(new LambdaQueryWrapper<AppPlanToRole>().eq(AppPlanToRole::getPlanId, dto.getId())).stream().map(AppPlanToRole::getRoleId).collect(Collectors.toList());
+                    AppPlanToRole atr = null;
+                    for (Long roleId : roleList) {
+                        atr = new AppPlanToRole();
+                        atr.setRoleId(roleId);
+                        atr.setPlanId(id);
+                        appPlanToRoleMapper.insert(atr);
+                    }
+
+                    List<AppPlanToPoint> itemList = appPlanToItemMapper.selectList(new LambdaQueryWrapper<AppPlanToPoint>().eq(AppPlanToPoint::getPlanId, dto.getId()));
+                    AppPlanToPoint item = null;
+                    for (AppPlanToPoint ruleItemVo : itemList) {
+                        item = new AppPlanToPoint();
+                        item.setPointId(ruleItemVo.getPointId());
+                        item.setPlanId(id);
+                        item.setPointScan(ruleItemVo.isPointScan());
+                        item.setRequired(ruleItemVo.isRequired());
+                        item.setOfOrgId(ruleItemVo.getOfOrgId());
+                        appPlanToItemMapper.insert(item);
+                    }
                 }
             }
         }
@@ -221,20 +232,8 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
     @Override
     public int distributeCheHui(Long id) {
         AppPlan plan = baseMapper.selectById(id);
-        //修改所有子计划
-        List<AppPlan> appPlans = baseMapper.selectList(new LambdaQueryWrapper<AppPlan>().eq(AppPlan::getParentId, id));
-        //如果不存在子计划直接返回
-        if (appPlans == null || appPlans.size() == 0) {
-            return 0;
-        }
-        for (AppPlan ap :
-                appPlans) {
-//修改计划状态为停用
-            ap.setPlanStatus(1);
-            baseMapper.updateById(ap);
-        }
+
         //设置下发状态为下发
-        plan.setDistribute("1");
         plan.setPlanStatus(1);
 
         baseMapper.updateById(plan);

+ 115 - 111
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java

@@ -16,6 +16,7 @@ import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.ResumptionType;
 import com.xunmei.common.core.utils.Ymd;
+import com.xunmei.core.TaskCreatingServiceImplBase;
 import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.domain.AppPlanToRole;
 import com.xunmei.core.resumption.domain.Resumption;
@@ -31,7 +32,7 @@ import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
 import com.xunmei.core.resumption.vo.WorkChangeResumptionVo;
 import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.domain.SysRole;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -109,6 +110,9 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
     @Override
     @Transactional(readOnly = false, rollbackFor = {Exception.class, RuntimeException.class}, propagation = Propagation.REQUIRES_NEW)
     public void newbuild(Long orgId, ResumptionType type, final Date dateTime, final Boolean isWork, AppPlan appPlan, List<Object> nfcList, List<AppRulePointTaskVo> pointList, List<Long> roleIds, DateTime planstartTime, DateTime planendTime) {
+        if(ObjectUtil.notEqual(isWork,true)){
+            return;
+        }
         Ymd ymd = Ymd.of(dateTime);
         //id使用uuid
         // final Resumption resumption = this.findOrCreate(id,()-> Resumption.newof(orgId,type,ymd,appPlan.getId(), id));
@@ -191,117 +195,117 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
         return list;
     }
 
-    @Override
-    public void dayTaskByWorkTime(Map<String, Object> params) {
-        try {
-            Gson gson = new Gson();
-            SysWorkTime workTime = gson.fromJson((String) params.get("sysWorkTime"), SysWorkTime.class);
-            //SysWorkTime workTime = params.get("sysWorkTime");
-            List<Long> orgIds = (List<Long>) params.get("orgIds");
-            //按机构删除当天的每日履职
-            QueryWrapper<Resumption> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(Resumption::getYmdDate, workTime.getYmdDate());
-            queryWrapper.lambda().in(Resumption::getOrgId, orgIds);
-            //待履职,进行中
-            //queryWrapper.lambda().in(Resumption::getStatus,  1, 2);
-            //每日任务
-            queryWrapper.lambda().eq(Resumption::getType, 2);
-            List<Resumption> resumptionList = resumptionMapper.selectList(queryWrapper);
-            List<Resumption> resumptionListYlz = resumptionList.stream().filter(item -> item.getStatus() == 3).collect(Collectors.toList());
-            if (CollectionUtils.isNotEmpty(resumptionList)) {
-                //取出未履职的数据(待履职,进行中)
-                List<Resumption> resumptionListWlz = resumptionList.stream().filter(item -> item.getStatus() == 1 || item.getStatus() == 2).collect(Collectors.toList());
-                //删除这些数据
-                if (CollectionUtils.isNotEmpty(resumptionListWlz)) {
-                    resumptionMapper.deleteBatchIds(resumptionListWlz.stream().map(Resumption::getId).collect(Collectors.toList()));
-                }
-            }
+//    @Override
+//    public void dayTaskByWorkTime(Map<String, Object> params) {
+//        try {
+//            Gson gson = new Gson();
+//            SysWorkTime workTime = gson.fromJson((String) params.get("sysWorkTime"), SysWorkTime.class);
+//            //SysWorkTime workTime = params.get("sysWorkTime");
+//            List<Long> orgIds = (List<Long>) params.get("orgIds");
+//            //按机构删除当天的每日履职
+//            QueryWrapper<Resumption> queryWrapper = new QueryWrapper<>();
+//            queryWrapper.lambda().eq(Resumption::getYmdDate, workTime.getYmdDate());
+//            queryWrapper.lambda().in(Resumption::getOrgId, orgIds);
+//            //待履职,进行中
+//            //queryWrapper.lambda().in(Resumption::getStatus,  1, 2);
+//            //每日任务
+//            queryWrapper.lambda().eq(Resumption::getType, 2);
+//            List<Resumption> resumptionList = resumptionMapper.selectList(queryWrapper);
+//            List<Resumption> resumptionListYlz = resumptionList.stream().filter(item -> item.getStatus() == 3).collect(Collectors.toList());
+//            if (CollectionUtils.isNotEmpty(resumptionList)) {
+//                //取出未履职的数据(待履职,进行中)
+//                List<Resumption> resumptionListWlz = resumptionList.stream().filter(item -> item.getStatus() == 1 || item.getStatus() == 2).collect(Collectors.toList());
+//                //删除这些数据
+//                if (CollectionUtils.isNotEmpty(resumptionListWlz)) {
+//                    resumptionMapper.deleteBatchIds(resumptionListWlz.stream().map(Resumption::getId).collect(Collectors.toList()));
+//                }
+//            }
+//
+//            //营业重新生成任务
+//            if (workTime.getIsEnable() == 1) {
+//                QueryWrapper<AppPlan> qw = new QueryWrapper<>();
+//                qw.lambda().eq(AppPlan::getPlanStatus, 1);
+//                qw.lambda().in(AppPlan::getPlanOfOrgId, orgIds);
+//                List<AppPlan> listPlans = appPlanMapper.selectList(qw);
+//                //通过计划id获取计划关系的角色
+//                if (CollectionUtils.isNotEmpty(listPlans)) {
+//                    List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
+//                    List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
+//                    List<Resumption> newResumptionList = new ArrayList<>();
+//                    for (AppPlan plan : listPlans) {
+//                        //根据计划获取角色
+//                        List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
+//                        List<Resumption> resumptionLista = this.buildResumptions(plan, planToRoles, workTime);
+//                        if (CollectionUtils.isNotEmpty(resumptionLista)) {
+//                            //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
+//                            List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
+//                                    && item1.getRoleId().equals(item.getRoleId())).findFirst().isPresent()).collect(Collectors.toList());
+//                            if (CollectionUtils.isNotEmpty(resumptionListb)) {
+//                                newResumptionList.addAll(resumptionListb);
+//                            }
+//                        }
+//                    }
+//                    this.saveBatch(newResumptionList);
+//                }
+//
+//
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
 
-            //营业重新生成任务
-            if (workTime.getIsEnable() == 1) {
-                QueryWrapper<AppPlan> qw = new QueryWrapper<>();
-                qw.lambda().eq(AppPlan::getPlanStatus, 1);
-                qw.lambda().in(AppPlan::getPlanOfOrgId, orgIds);
-                List<AppPlan> listPlans = appPlanMapper.selectList(qw);
-                //通过计划id获取计划关系的角色
-                if (CollectionUtils.isNotEmpty(listPlans)) {
-                    List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
-                    List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
-                    List<Resumption> newResumptionList = new ArrayList<>();
-                    for (AppPlan plan : listPlans) {
-                        //根据计划获取角色
-                        List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
-                        List<Resumption> resumptionLista = this.buildResumptions(plan, planToRoles, workTime);
-                        if (CollectionUtils.isNotEmpty(resumptionLista)) {
-                            //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
-                            List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
-                                    && item1.getRoleId().equals(item.getRoleId())).findFirst().isPresent()).collect(Collectors.toList());
-                            if (CollectionUtils.isNotEmpty(resumptionListb)) {
-                                newResumptionList.addAll(resumptionListb);
-                            }
-                        }
-                    }
-                    this.saveBatch(newResumptionList);
-                }
-
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private List<Resumption> buildResumptions(AppPlan appPlan, List<AppPlanToRole> planToRoles, SysWorkTime workTime) {
-        List<Resumption> resumptionList = new ArrayList<>();
-        DateTime dateTime = new DateTime(workTime.getYmdDate());
-        String opentime = workTime.getOpenTime();//营业时间
-        String closetime = workTime.getCloseTime();//营业终了
-        DateTime planstartTime = null;
-        DateTime planendTime = null;
-
-        DateTime time1 = new DateTime(dateTime);
-        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
-        DateTime time2 = new DateTime(dateTime);
-        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
-
-        if (appPlan.getPlanExec() == 1) {//全天 上班时间-下班时间 00:00:00-23:59:59
-            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
-        } else if (appPlan.getPlanExec() == 2) {//营业前 上班时间-营业时间
-            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-        } else if (appPlan.getPlanExec() == 3) {//营业期间 营业时间-营业终了
-            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-        } else if (appPlan.getPlanExec() == 4) {//营业终 营业终了-23.59.59
-            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
-        }
-        for (AppPlanToRole role : planToRoles) {
-            Resumption resumption = new Resumption();
-            Ymd ymd = Ymd.of(dateTime);
-            resumption.setStatus(1);
-            resumption.setYmd(ymd);
-            resumption.setName(appPlan.getPlanName());
-            resumption.setYmdDate(ymd.getDate());
-            resumption.setYmdDay(Long.valueOf(ymd.getDay()));
-            resumption.setYmdMonth(Long.valueOf(ymd.getMonth()));
-            resumption.setYmdWeek(Long.valueOf(ymd.getWeek()));
-            resumption.setYmdYear(Long.valueOf(ymd.getYear()));
-            resumption.setYmdHour(Long.valueOf(ymd.getHour()));
-            resumption.setYmdQuarter(Long.valueOf(ymd.getQuarter()));
-            resumption.setYmdHalfyear(Long.valueOf(ymd.getHalfyear()));
-            resumption.setPlanId((ObjectUtil.equal(appPlan.getParentId(), -1L) || ObjectUtil.isNull(appPlan.getParentId())) ? appPlan.getId() : appPlan.getParentId());
-            resumption.setOrgId(appPlan.getPlanOfOrgId());
-            resumption.setType(appPlan.getPlanCycle());
-            resumption.setRoleId(role.getRoleId());
-            resumption.setPlanStartTime(planstartTime);
-            resumption.setPlanEndTime(planendTime);
-            resumption.setCreateTime(new Date());
-            resumptionList.add(resumption);
-        }
-        return resumptionList;
-    }
+//    private List<Resumption> buildResumptions(AppPlan appPlan, List<AppPlanToRole> planToRoles, SysWorkTime workTime) {
+//        List<Resumption> resumptionList = new ArrayList<>();
+//        DateTime dateTime = new DateTime(workTime.getYmdDate());
+//        String opentime = workTime.getOpenTime();//营业时间
+//        String closetime = workTime.getCloseTime();//营业终了
+//        DateTime planstartTime = null;
+//        DateTime planendTime = null;
+//
+//        DateTime time1 = new DateTime(dateTime);
+//        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+//        DateTime time2 = new DateTime(dateTime);
+//        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+//
+//        if (appPlan.getPlanExec() == 1) {//全天 上班时间-下班时间 00:00:00-23:59:59
+//            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
+//        } else if (appPlan.getPlanExec() == 2) {//营业前 上班时间-营业时间
+//            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//        } else if (appPlan.getPlanExec() == 3) {//营业期间 营业时间-营业终了
+//            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//        } else if (appPlan.getPlanExec() == 4) {//营业终 营业终了-23.59.59
+//            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
+//        }
+//        for (AppPlanToRole role : planToRoles) {
+//            Resumption resumption = new Resumption();
+//            Ymd ymd = Ymd.of(dateTime);
+//            resumption.setStatus(1);
+//            resumption.setYmd(ymd);
+//            resumption.setName(appPlan.getPlanName());
+//            resumption.setYmdDate(ymd.getDate());
+//            resumption.setYmdDay(Long.valueOf(ymd.getDay()));
+//            resumption.setYmdMonth(Long.valueOf(ymd.getMonth()));
+//            resumption.setYmdWeek(Long.valueOf(ymd.getWeek()));
+//            resumption.setYmdYear(Long.valueOf(ymd.getYear()));
+//            resumption.setYmdHour(Long.valueOf(ymd.getHour()));
+//            resumption.setYmdQuarter(Long.valueOf(ymd.getQuarter()));
+//            resumption.setYmdHalfyear(Long.valueOf(ymd.getHalfyear()));
+//            resumption.setPlanId((ObjectUtil.equal(appPlan.getParentId(), -1L) || ObjectUtil.isNull(appPlan.getParentId())) ? appPlan.getId() : appPlan.getParentId());
+//            resumption.setOrgId(appPlan.getPlanOfOrgId());
+//            resumption.setType(appPlan.getPlanCycle());
+//            resumption.setRoleId(role.getRoleId());
+//            resumption.setPlanStartTime(planstartTime);
+//            resumption.setPlanEndTime(planendTime);
+//            resumption.setCreateTime(new Date());
+//            resumptionList.add(resumption);
+//        }
+//        return resumptionList;
+//    }
 
     @Override
     public List<CoreSafetyExceptionData> findResumptionList(DateTime time) {

+ 260 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/RebuildResumptionTaskBusiness.java

@@ -0,0 +1,260 @@
+package com.xunmei.core.resumption.task;
+
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
+import com.xunmei.common.core.enums.CycleCommonEnum;
+import com.xunmei.common.core.utils.Ymd;
+import com.xunmei.core.TaskCreatingServiceImplBase;
+import com.xunmei.core.resumption.domain.AppPlan;
+import com.xunmei.core.resumption.domain.AppPlanToRole;
+import com.xunmei.core.resumption.domain.Resumption;
+import com.xunmei.core.resumption.mapper.AppPlanMapper;
+import com.xunmei.core.resumption.mapper.AppPlanToRoleMapper;
+import com.xunmei.core.resumption.mapper.ResumptionMapper;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.domain.SysOrg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Component
+public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<ResumptionMapper, Resumption> {
+    @Autowired
+    private AppPlanMapper appPlanMapper;
+
+    @Autowired
+    private AppPlanToRoleMapper appPlanToRoleMapper;
+
+    @Autowired
+    private RemoteOrgService remoteOrgService;
+
+    @Override
+    public void rebuildDayTask(List<Long> orgIds, SysWorkTime workTime) {
+        try {
+            List<Resumption> resumptionList = queryTask(workTime.getYmdDate(), CycleCommonEnum.DAILY, orgIds);
+            List<Resumption> resumptionListYlz = resumptionList.stream().filter(item -> item.getStatus() == 3).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(resumptionList)) {
+                //取出未履职的数据(待履职,进行中)
+                List<Resumption> resumptionListWlz = resumptionList.stream().filter(item -> item.getStatus() == 1 || item.getStatus() == 2).collect(Collectors.toList());
+                //删除这些数据
+                if (CollectionUtils.isNotEmpty(resumptionListWlz)) {
+                    baseMapper.deleteBatchIds(resumptionListWlz.stream().map(Resumption::getId).collect(Collectors.toList()));
+                }
+            }
+
+            //营业重新生成任务
+            if (workTime.getIsEnable() == 1) {
+                List<Long> hsOrgIds = remoteOrgService.selectParentHs(orgIds, SecurityConstants.INNER)
+                        .stream().map(SysOrg::getId)
+                        .collect(Collectors.toList());
+                List<AppPlan> listPlans = queryPlans(hsOrgIds, CycleCommonEnum.DAILY);
+                //通过计划id获取计划关系的角色
+                if (CollectionUtils.isNotEmpty(listPlans)) {
+                    List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
+                    List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
+                    List<Resumption> newResumptionList = new ArrayList<>();
+                    for (AppPlan plan : listPlans) {
+                        //根据计划获取角色
+                        List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
+                        List<Resumption> resumptionLista = this.buildResumptions(plan, planToRoles, workTime);
+                        if (CollectionUtils.isNotEmpty(resumptionLista)) {
+                            //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
+                            List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
+                                    && item1.getRoleId().equals(item.getRoleId())).findFirst().isPresent()).collect(Collectors.toList());
+                            if (CollectionUtils.isNotEmpty(resumptionListb)) {
+                                newResumptionList.addAll(resumptionListb);
+                            }
+                        }
+                    }
+                    this.saveBatch(newResumptionList);
+                }
+
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void rebuildWeeklyTask(List<Long> orgIds, Date startDate, Date endDate) {
+        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.WEEKLY);
+    }
+
+
+    @Override
+    public void rebuildMonthTask(List<Long> orgIds, Date startDate, Date endDate) {
+        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.MONTHLY);
+    }
+
+    @Override
+    public void rebuildQuarterTask(List<Long> orgIds, Date startDate, Date endDate) {
+        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.QUARTERLY);
+    }
+
+    @Override
+    public void rebuildHalfYearTask(List<Long> orgIds, Date startDate, Date endDate) {
+        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.HALF_YEARLY);
+    }
+
+    @Override
+    public void rebuildYearTask(List<Long> orgIds, Date startDate, Date endDate) {
+        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.YEARLY);
+    }
+    private void rebuildTask(List<Long> orgIds, Date startDate, Date endDate, CycleCommonEnum cycle) {
+        List<Resumption> resumptionList = queryTask(startDate, cycle, orgIds);
+        List<Long> deleteIds = resumptionList.stream()
+                .filter(r -> (ObjectUtil.equal(r.getStatus(), 1) || ObjectUtil.equal(r.getStatus(), 2)))
+                .map(Resumption::getId).collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(deleteIds)) {
+            baseMapper.deleteBatchIds(deleteIds);
+        }
+
+        List<Resumption> executedResumptionList = resumptionList.stream()
+                .filter(r -> ObjectUtil.equal(r.getStatus(), 3))
+                .collect(Collectors.toList());
+        Map<Long, Boolean> workingMap = orgWorkTimeStatusMap(startDate, cycle, orgIds);
+//        List<Long> deleteTaskIds = new ArrayList<>();
+
+        for (Long orgId : orgIds) {
+            if (!workingMap.containsKey(orgId) || workingMap.get(orgId) == false) {
+                //当前作息周期已经歇业
+                continue;
+            }
+
+            List<Long> hsOrgIds = remoteOrgService.selectParentHs(ListUtil.toList(orgId), SecurityConstants.INNER)
+                    .stream().map(SysOrg::getId)
+                    .collect(Collectors.toList());
+            List<AppPlan> listPlans = queryPlans(hsOrgIds, CycleCommonEnum.DAILY);
+            if (CollectionUtils.isEmpty(listPlans)) {
+                continue;
+            }
+
+            List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
+            List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
+            List<Resumption> newResumptionList = new ArrayList<>();
+            for (AppPlan plan : listPlans) {
+                //根据计划获取角色
+                List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
+                Long executedCount = executedResumptionList.stream()
+                        .filter(r -> ObjectUtil.equal(r.getOrgId(), orgId) && ObjectUtil.equal(r.getPlanId(), plan.getParentId()))
+                        .count();
+                List<Resumption> planResumptionList = this.buildResumptions(plan, planToRoles, startDate, endDate, executedCount);
+                if (CollectionUtils.isNotEmpty(planResumptionList)) {
+                    //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
+//                    List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
+//                            && item1.getRoleId().equals(item.getRoleId())).findFirst().isPresent()).collect(Collectors.toList());
+//                    if (CollectionUtils.isNotEmpty(resumptionListb)) {
+                    newResumptionList.addAll(planResumptionList);
+//                    }
+                }
+            }
+            this.saveBatch(newResumptionList);
+        }
+    }
+
+    private List<Resumption> buildResumptions(AppPlan appPlan, List<AppPlanToRole> planToRoles, SysWorkTime workTime) {
+        DateTime dateTime = new DateTime(workTime.getYmdDate());
+        String opentime = workTime.getOpenTime();//营业时间
+        String closetime = workTime.getCloseTime();//营业终了
+        DateTime planstartTime = null;
+        DateTime planendTime = null;
+
+        DateTime time1 = new DateTime(dateTime);
+        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime time2 = new DateTime(dateTime);
+        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+
+        if (appPlan.getPlanExec() == 1) {//全天 上班时间-下班时间 00:00:00-23:59:59
+            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
+        } else if (appPlan.getPlanExec() == 2) {//营业前 上班时间-营业时间
+            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+        } else if (appPlan.getPlanExec() == 3) {//营业期间 营业时间-营业终了
+            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+        } else if (appPlan.getPlanExec() == 4) {//营业终 营业终了-23.59.59
+            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
+        }
+
+        return buildResumptions(appPlan, planToRoles, planstartTime, planendTime, 0L);
+    }
+
+    private List<Resumption> buildResumptions(AppPlan appPlan, List<AppPlanToRole> planToRoles, Date planStartTime, Date planEndTime, Long executedCount) {
+        if (CollectionUtils.isEmpty(planToRoles)) {
+            return new ArrayList<>();
+        }
+
+        List<Resumption> resumptionList = new ArrayList<>();
+        Long count = 1L;
+        if (NumberUtil.isNumber(appPlan.getCount())) {
+            count = NumberUtil.parseLong(appPlan.getCount());
+        }
+
+        for (Long i = 0L; i < (count - executedCount); i++) {
+            Resumption resumption = new Resumption();
+            Ymd ymd = Ymd.of(planStartTime);
+            resumption.setStatus(1);
+            resumption.setYmd(ymd);
+            resumption.setName(appPlan.getPlanName());
+            resumption.setYmdDate(ymd.getDate());
+            resumption.setYmdDay(Long.valueOf(ymd.getDay()));
+            resumption.setYmdMonth(Long.valueOf(ymd.getMonth()));
+            resumption.setYmdWeek(Long.valueOf(ymd.getWeek()));
+            resumption.setYmdYear(Long.valueOf(ymd.getYear()));
+            resumption.setYmdHour(Long.valueOf(ymd.getHour()));
+            resumption.setYmdQuarter(Long.valueOf(ymd.getQuarter()));
+            resumption.setYmdHalfyear(Long.valueOf(ymd.getHalfyear()));
+            resumption.setPlanId((ObjectUtil.equal(appPlan.getParentId(), -1L) || ObjectUtil.isNull(appPlan.getParentId())) ? appPlan.getId() : appPlan.getParentId());
+            resumption.setOrgId(appPlan.getPlanOfOrgId());
+            resumption.setType(appPlan.getPlanCycle());
+            resumption.setRoleId(planToRoles.get(0).getRoleId());
+            resumption.setPlanStartTime(planStartTime);
+            resumption.setPlanEndTime(planEndTime);
+            resumption.setCreateTime(new Date());
+            resumptionList.add(resumption);
+        }
+
+        return resumptionList;
+    }
+
+    private List<Resumption> queryTask(Date ymdDate, CycleCommonEnum cycle, List<Long> orgIds) {
+        QueryWrapper<Resumption> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Resumption::getYmdDate, ymdDate);
+        queryWrapper.lambda().in(Resumption::getOrgId, orgIds);
+        queryWrapper.lambda().eq(Resumption::getType, cycle.getCode());
+
+        List<Resumption> resumptionList = baseMapper.selectList(queryWrapper);
+        return resumptionList;
+    }
+
+    /**
+     * 获取所属机构的计划
+     *
+     * @param planOfOrgId
+     * @param cycle
+     * @return
+     */
+    private List<AppPlan> queryPlans(List<Long> planOfOrgId, CycleCommonEnum cycle) {
+        QueryWrapper<AppPlan> qw = new QueryWrapper<>();
+        qw.lambda().eq(AppPlan::getPlanStatus, 1);
+        qw.lambda().eq(AppPlan::getPlanCycle, cycle.getCode());
+        qw.lambda().in(AppPlan::getPlanOfOrgId, planOfOrgId);
+
+        List<AppPlan> listPlans = appPlanMapper.selectList(qw);
+
+        return listPlans;
+    }
+}

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/ResumptionTaskBusiness.java

@@ -26,7 +26,7 @@ import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;

+ 48 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java

@@ -16,6 +16,7 @@ import com.xunmei.core.access.dto.CoreMonitoringTaskRegistrationDTO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
 
@@ -104,6 +105,53 @@ public interface CoreMonitoringRetrievalTaskMapper extends BaseMapper<CoreMonito
 
     void deleteTaskByPlanId(@Param("planId") Long planId);
 
+    /**
+     * 根据计划删除
+     * @param planId
+     */
+    void deleteAllTaskByPlanId(@Param("planId") Long planId);
+    void deleteDayTaskByTime(Long planId, String cycle, Date startTime, Date endTime);
+    void deleteDayTaskByTimeAndPlanId(Long planId, String cycle, Date startTime, Date endTime);
+    /**
+     * 删除周任务
+     * @param planId
+     * @param cycle
+     * @param week
+     * @param year
+     */
+   void deleteWeekTaskByPlanId(Long planId, String cycle, String week, String year);
+
+    /**
+     * 删除天任务
+     * @param planId
+     * @param cycle
+     * @param ymdDate
+     */
+    void deleteDayTaskByPlanId(Long planId, String cycle, String ymdDate);
+
+    /**
+     * 删除月任务
+     * @param planId
+     * @param cycle
+     * @param month
+     * @param year
+     */
+    void deleteMonthTaskByPlanId(Long planId, String cycle, String month, String year);
+
+    /**
+     * 删除季度
+     * @param planId
+     * @param cycle
+     * @param quarter
+     * @param year
+     */
+    void  deleteQuarterTaskByPlanId(Long planId, String cycle, String quarter, String year);
+
+    /**
+     * 已完成
+     * @param planId
+     * @return
+     */
     List<CoreMonitoringRetrievalTask> selectCompleteByPlanId(Long planId);
 
     void deleteWaitTaskByPlanId(@Param("planId") Long planId);

+ 59 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/ICoreMonitoringRetrievalTaskService.java

@@ -16,6 +16,7 @@ import com.xunmei.core.access.dto.CoreMonitoringTaskRegistrationDTO;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.time.LocalDate;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -109,6 +110,64 @@ public interface ICoreMonitoringRetrievalTaskService extends IService<CoreMonito
 
     void deleteTaskByPlanId(Long planId);
 
+    /**
+     * 根据计划删除所有任务
+     * @param planId
+     */
+    void deleteAllTaskByPlanId(Long planId);
+
+    /**
+     * 删除日任务
+     * @param planId
+     * @param cycle
+     * @param ymdDate
+     */
+    void  deleteDayTaskByPlanId(Long planId, String cycle, LocalDate ymdDate);
+void  deleteDayTaskByTime(Long planId, String cycle,Date startTime,Date endTime);
+void  deleteDayTaskByTimeAndPlanId(Long planId, String cycle,Date startTime,Date endTime);
+    /**
+     * 删除周任务
+     * @param planId
+     * @param cycle
+     * @param week
+     * @param year
+     */
+    void  deleteWeekTaskByPlanId(Long planId, String cycle, String week, String year);
+
+    /**
+     * 删除月任务
+     * @param planId
+     * @param cycle
+     * @param month
+     * @param year
+     */
+    void  deleteMonthTaskByPlanId(Long planId, String cycle, String month, String year);
+
+    /**
+     * 删除季度任务
+     * @param planId
+     * @param cycle
+     * @param quarter
+     * @param year
+     */
+    void  deleteQuarterTaskByPlanId(Long planId, String cycle, String quarter, String year);
+
+    /**
+     * 删除半年任务
+     * @param planId
+     * @param cycle
+     * @param halfYear
+     * @param year
+     */
+    void  deleteHalfYearTaskByPlanId(Long planId, String cycle, String halfYear, String year);
+
+    /**
+     * 删除年任务
+     * @param planId
+     * @param cycle
+     * @param year
+     */
+    void  deleteYearTaskByPlanId(Long planId, String cycle, String year);
     void deleteWaitTaskByPlanId(Long planId);
 
     void updateDeleteTaskByPlanId(Long planId, Integer isDeleted);

+ 49 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java

@@ -24,16 +24,16 @@ import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskOne
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskVo;
 import com.xunmei.common.core.domain.retrieval.vo.TaskDataVo;
 import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
+import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.enums.CycleCommonEnum;
-import com.xunmei.common.core.enums.EduTrainingPlanCycleEnum;
 import com.xunmei.common.core.enums.RetrievalTaskCycle;
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.KeyValue;
 import com.xunmei.common.core.utils.Ymd;
-import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.access.domain.TMonitoringRetrievalPlan;
@@ -47,10 +47,8 @@ import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysDictData;
 import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.domain.SysWorkTime;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import com.xunmei.system.api.model.LoginUser;
-import io.swagger.models.auth.In;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -399,6 +397,51 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
     }
 
     @Override
+    public void deleteAllTaskByPlanId(Long planId) {
+        coreMonitoringRetrievalTaskMapper.deleteAllTaskByPlanId(planId);
+    }
+
+    @Override
+    public void deleteDayTaskByPlanId(Long planId, String cycle, LocalDate ymdDate) {
+        coreMonitoringRetrievalTaskMapper.deleteDayTaskByPlanId(planId,cycle,ymdDate.toString());
+    }
+
+    @Override
+    public void deleteDayTaskByTime(Long planId, String cycle, Date startTime, Date endTime) {
+        coreMonitoringRetrievalTaskMapper.deleteDayTaskByTime(planId,cycle,startTime,endTime);
+    }
+
+    @Override
+    public void deleteDayTaskByTimeAndPlanId(Long planId, String cycle, Date startTime, Date endTime) {
+
+    }
+
+    @Override
+    public void deleteWeekTaskByPlanId(Long planId, String cycle, String week, String year) {
+
+    }
+
+    @Override
+    public void deleteMonthTaskByPlanId(Long planId, String cycle, String month, String year) {
+
+    }
+
+    @Override
+    public void deleteQuarterTaskByPlanId(Long planId, String cycle, String quarter, String year) {
+
+    }
+
+    @Override
+    public void deleteHalfYearTaskByPlanId(Long planId, String cycle, String halfYear, String year) {
+
+    }
+
+    @Override
+    public void deleteYearTaskByPlanId(Long planId, String cycle, String year) {
+
+    }
+
+    @Override
     public void deleteWaitTaskByPlanId(Long planId) {
         coreMonitoringRetrievalTaskMapper.deleteWaitTaskByPlanId(planId);
     }
@@ -593,7 +636,7 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
     @Transactional(rollbackFor = Exception.class)
     public void taskChangeForTimeWorkChange(WorkTimeChangeEvent event) {
         //修改的作息的日期
-        Date ymdDate  =  event.getYmdDate();
+        Date ymdDate  =  event.getDataList().get(0).getDate();
 
         //受影响的机构
         List<Long> orgIds = event.getOrgIds();
@@ -791,7 +834,7 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         map.put("workendTime",DateUtil.format(workendTime,"yyyy-MM-dd"));
         map.put("orgId",orgId);
         Integer num = workTimeService.checkWorkTime(map,SecurityConstants.INNER);
-        if(num>0){
+       if(num>0){
             return true;
         }else {
             return  false;

+ 2 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/access/TMonitoringRetrievalPlanMapper.xml

@@ -92,7 +92,8 @@
         a.plan_status,
         a.end_time,
         a.description,
-        a.is_distribute
+        a.is_distribute,
+        a.parent_id
         FROM
         core_monitoring_retrieval_plan a
         LEFT JOIN core_monitoring_retrieval_plan b ON a.parent_id = b.id

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml

@@ -178,7 +178,7 @@
         from core_edu_training_task
         where status in (2,3)
           and plan_id in
-              (select id from core_edu_training_plan where plan_status = 0 and deleted = 0 and parent_id = #{planId})
+              (select id from core_edu_training_plan where  deleted = 0 and parent_id = #{planId})
         limit 1
     </select>
 

+ 1 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml

@@ -235,6 +235,7 @@
                  LEFT JOIN core_resumption_rule_item b ON a.item_id = b.id
                  LEFT JOIN sys_area c ON a.area_id = c.id
                  LEFT JOIN core_resumption_rule d on b.rule_id = d.id
+order by h.of_org_id desc
 --         order by b.item_num, a.point_num
     </select>
 

+ 29 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml

@@ -425,6 +425,34 @@
                                    OR parent_id = #{planId}) b)
           and status in (0, 3)
     </delete>
+    <delete id="deleteAllTaskByPlanId">
+        delete
+        from core_monitoring_retrieval_task
+        where plan_id = #{planId}
+    </delete>
+    <delete id="deleteDayTaskByPlanId">
+        DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle} AND ymd_date=#{ymdDate}
+                                                     AND plan_id IN(SELECT id FROM core_monitoring_retrieval_plan WHERE parent_id=#{planId})
+    </delete>
+    <delete id="deleteWeekTaskByPlanId">
+        DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle}  AND ymd_week=#{week}
+                                                     AND ymd_year=#{year}
+                                                     AND plan_id IN(SELECT id FROM core_monitoring_retrieval_plan WHERE plan_id=#{planId})
+    </delete>
+    <delete id="deleteMonthTaskByPlanId">
+        DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle} AND ymd_month=#{month}
+                                                     AND ymd_year=#{year}
+                                                     AND plan_id IN(SELECT id FROM core_monitoring_retrieval_plan WHERE plan_id=#{planId})
+    </delete>
+    <delete id="deleteQuarterTaskByPlanId"></delete>
+    <delete id="deleteDayTaskByTime">
+        DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle} AND ymd_date BETWEEN #{startTime} AND #{endTime}
+                                                     AND plan_id IN(SELECT id FROM core_monitoring_retrieval_plan WHERE parent_id=#{planId})
+    </delete>
+    <delete id="deleteDayTaskByTimeAndPlanId">
+        DELETE FROM core_monitoring_retrieval_task WHERE cycle = #{cycle} AND ymd_date BETWEEN #{startTime} AND #{endTime}
+                                                     AND plan_id =#{planId}
+    </delete>
 
 
     <update id="updateDeleteTaskByPlanId">
@@ -503,6 +531,6 @@
             core_monitoring_retrieval_task
         WHERE
             plan_id = #{planId}
-          AND `status` =2
+        and    `status` IN (2,3)
     </select>
 </mapper>

+ 5 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysWorkTimeController.java

@@ -1,5 +1,6 @@
 package com.xunmei.system.controller;
 
+import cn.hutool.core.collection.ListUtil;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
@@ -11,7 +12,7 @@ import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.annotation.RequiresPermissions;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.domain.SysWorkTimeSet;
 import com.xunmei.system.dto.SysWorkTimeDto;
 import com.xunmei.system.dto.WorkTimeMonthEditNewDto;
@@ -77,7 +78,7 @@ public class SysWorkTimeController extends BaseController {
         for (Long orgId : orgIds) {
             sysWorkTimeService.batchnew(orgId, sysWorkTimeSet.getWorkTimeList());
         }
-        //applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, orgIds, ymdDate));
+        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, orgIds,sysWorkTimeSet.getWorkTimeList()));
 
         return AjaxResult.success();
     }
@@ -102,6 +103,8 @@ public class SysWorkTimeController extends BaseController {
     @PostMapping("/saveOneWorkTime")
     public AjaxResult edit(@RequestBody SysWorkTime sysWorkTime) {
         sysWorkTimeService.updateSysWorkTime(sysWorkTime);
+        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(
+                this, ListUtil.list(true, sysWorkTime.getOrgId()),ListUtil.toList(sysWorkTime)));
         return success();
     }
 

+ 8 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/WorkTimeMonthOnAppController.java

@@ -1,14 +1,16 @@
 package com.xunmei.system.controller;
 
 import cn.hutool.core.date.DateUtil;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.dto.WorkTimeMonthEditNewDto;
 import com.xunmei.system.service.ISysWorkTimeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -24,6 +26,10 @@ import java.util.List;
 public class WorkTimeMonthOnAppController extends BaseController {
     @Autowired
     private ISysWorkTimeService sysWorkTimeService;
+
+    @Autowired
+    ApplicationEventPublisher applicationEventPublisher;
+
     @ApiOperation(value = "按月")
     @PostMapping(value = "/find/month")
     AjaxResult findMonth(@RequestBody @Valid SysWorkTime request) {
@@ -40,7 +46,7 @@ public class WorkTimeMonthOnAppController extends BaseController {
             List<SysWorkTime> batchnew = sysWorkTimeService.batchnew(orgId, sysWorkTimeSet.getWorkTimeList());
         }
 
-        sysWorkTimeService.handleTodayChanged(sysWorkTimeSet.getOrgIdList(),sysWorkTimeSet.getWorkTimeList(), exists, today);
+        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, orgIds,sysWorkTimeSet.getWorkTimeList()));
 //        this.workTimeMonthService.toLogNote("批量操作作息月[ %s ]", request.getOrgIdList());
         return success();
     }

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/dto/SysWorkTimeDto.java

@@ -1,6 +1,6 @@
 package com.xunmei.system.dto;
 
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import lombok.Data;
 
 @Data

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/dto/WorkTimeMonthEditNewDto.java

@@ -1,6 +1,6 @@
 package com.xunmei.system.dto;
 
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysWorkTimeMapper.java

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.system.dto.SysWorkTimeDto;
 import org.apache.ibatis.annotations.MapKey;

+ 2 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysWorkTimeService.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.common.core.web.page.TableDataInfo;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.domain.SysWorkTimeSet;
 import com.xunmei.system.dto.SysWorkTimeDto;
 
@@ -34,7 +34,7 @@ public interface ISysWorkTimeService extends IService<SysWorkTime> {
 
     List<Long> findOrgIdsByYmd(String toYmd);
 
-    void handleTodayChanged(List<Long> orgIdList, List<SysWorkTime> workTimeList, List<SysWorkTime> exists, Date today);
+//    void handleTodayChanged(List<Long> orgIdList, List<SysWorkTime> workTimeList, List<SysWorkTime> exists, Date today);
 
     List<SysWorkTime> findByYmd(List<Long> orgIds, Date ymd);
 

+ 36 - 52
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java

@@ -22,8 +22,7 @@ import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.system.api.RemoteResumptionTaskService;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.domain.SysWorkTimeSet;
 import com.xunmei.system.dto.SysWorkTimeDto;
 import com.xunmei.system.dto.WorkTimeMonthEditNewDto;
@@ -64,11 +63,6 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
     @Autowired
     private ApplicationContext context;
 
-    @Autowired
-    RemoteResumptionTaskService remoteResumptionTaskService;
-    @Autowired
-    ApplicationEventPublisher applicationEventPublisher;
-
     public static Date extractDate(String dateString, String dateFormat) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH);
         sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
@@ -265,28 +259,28 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
                 && StringUtils.equals(workTime.getWorkOffTime(), dto.getWorkOffTime()) && StringUtils.equals(workTime.getCloseTime(), dto.getCloseTime());
     }
 
-    @Override
-    public void handleTodayChanged(List<Long> orgIdList, List<SysWorkTime> workTimeList, List<SysWorkTime> exists, Date today) {
-//        Optional<SysWorkTimeSet> todaySet = workTimeList.stream().filter(t -> DateUtil.beginOfDay(t.getDate()).equals(today)).findFirst();
-//        if (todaySet.isPresent()) {
-//            List<Long> todayChanged = exists.stream().filter(e -> !timesetIsEqual(e, todaySet.get())).map(WorkTime::getOrgId).collect(Collectors.toList());
-//            List<Long> existOrgIds = exists.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
-//            List<Long> addOrgIds = orgIdList.stream().filter(o -> existOrgIds.indexOf(o) < 0).collect(Collectors.toList());
-//            todayChanged.addAll(addOrgIds);
-//            if (CollectionUtil.isNotEmpty(todayChanged)) {
-//                WORKTIMELOG.info("以下机构今日作息变更,重新生成履职:" + JSON.toJSONString(todayChanged));
-//                context.publishEvent(WorkChangeEvent.builder().orgIds(todayChanged).dateTime(DateTime.of(today)).build());
-//            } else {
-//                WORKTIMELOG.info("今日作息变更,今日作息未变化");
-//                WORKTIMELOG.info("今日变化todayChanged:" + JSON.toJSONString(todayChanged));
-//                WORKTIMELOG.info("今日变化existOrgIds:" + JSON.toJSONString(existOrgIds));
-//                WORKTIMELOG.info("今日变化orgIdList:" + JSON.toJSONString(orgIdList));
-//            }
-//        } else {
-//            WORKTIMELOG.info("今日作息变更,未找到今日作息配置数据" + DateUtil.format(today, "yyyy-MM-dd"));
-//            WORKTIMELOG.info("配置数据:" + JSON.toJSONString(workTimeList));
-//        }
-    }
+//    @Override
+//    public void handleTodayChanged(List<Long> orgIdList, List<SysWorkTime> workTimeList, List<SysWorkTime> exists, Date today) {
+////        Optional<SysWorkTimeSet> todaySet = workTimeList.stream().filter(t -> DateUtil.beginOfDay(t.getDate()).equals(today)).findFirst();
+////        if (todaySet.isPresent()) {
+////            List<Long> todayChanged = exists.stream().filter(e -> !timesetIsEqual(e, todaySet.get())).map(WorkTime::getOrgId).collect(Collectors.toList());
+////            List<Long> existOrgIds = exists.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
+////            List<Long> addOrgIds = orgIdList.stream().filter(o -> existOrgIds.indexOf(o) < 0).collect(Collectors.toList());
+////            todayChanged.addAll(addOrgIds);
+////            if (CollectionUtil.isNotEmpty(todayChanged)) {
+////                WORKTIMELOG.info("以下机构今日作息变更,重新生成履职:" + JSON.toJSONString(todayChanged));
+////                context.publishEvent(WorkChangeEvent.builder().orgIds(todayChanged).dateTime(DateTime.of(today)).build());
+////            } else {
+////                WORKTIMELOG.info("今日作息变更,今日作息未变化");
+////                WORKTIMELOG.info("今日变化todayChanged:" + JSON.toJSONString(todayChanged));
+////                WORKTIMELOG.info("今日变化existOrgIds:" + JSON.toJSONString(existOrgIds));
+////                WORKTIMELOG.info("今日变化orgIdList:" + JSON.toJSONString(orgIdList));
+////            }
+////        } else {
+////            WORKTIMELOG.info("今日作息变更,未找到今日作息配置数据" + DateUtil.format(today, "yyyy-MM-dd"));
+////            WORKTIMELOG.info("配置数据:" + JSON.toJSONString(workTimeList));
+////        }
+//    }
 
     @Override
     public List<SysWorkTime> findByYmd(List<Long> orgIds, Date ymd) {
@@ -348,17 +342,6 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
                 s.setModifiedName(SecurityUtils.getUsername());
                 baseMapper.insert(s);
             }
-            if (DateUtil.isSameDay(s.getYmdDate(), now)) {
-                List<Long> orgIds = new ArrayList<>();
-                orgIds.add(orgId);
-                Map<String, Object> param = new HashMap<>();
-                param.put("orgIds", orgIds);
-                param.put("sysWorkTime", new Gson().toJson(s));
-                log.info("时间{}修改作息远程调用生成履职任务", new Date());
-                AjaxResult result = remoteResumptionTaskService.dayTaskByWorkTime(param, SecurityConstants.INNER);
-                log.info("时间{}修改作息远程调用生成履职任务返回{}", new Date(), result.get("msg"));
-            }
-            applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, ListUtil.list(true, s.getOrgId()), s.getYmdDate()));
         }
         return workTimeDtoList;
     }
@@ -408,7 +391,7 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
      * @return 结果
      */
     @Override
-    @Transactional(rollbackFor =  Exception.class)
+    @Transactional(rollbackFor = Exception.class)
     public void updateSysWorkTime(SysWorkTime sysWorkTime) {
 
         sysWorkTime.setUpdateTime(DateUtils.getNowDate());
@@ -417,18 +400,19 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
 
         sysWorkTimeMapper.updateById(sysWorkTime);
         //判断日期是否为今天
-        if (DateUtil.format(sysWorkTime.getYmdDate(), "yyyy-MM-dd").equals(DateUtil.format(new Date(), "yyyy-MM-dd"))) {
-            List<Long> orgIds = new ArrayList<>();
-            orgIds.add(sysWorkTime.getOrgId());
-            Map<String, Object> param = new HashMap<>();
-            param.put("orgIds", orgIds);
-            param.put("sysWorkTime", new Gson().toJson(sysWorkTime));
-            log.info("时间{}修改作息远程调用生成履职任务", new Date());
-            AjaxResult result = remoteResumptionTaskService.dayTaskByWorkTime(param, SecurityConstants.INNER);
-            log.info("时间{}修改作息远程调用生成履职任务返回{}", new Date(), result.get("msg"));
+//        if (DateUtil.format(sysWorkTime.getYmdDate(), "yyyy-MM-dd").equals(DateUtil.format(new Date(), "yyyy-MM-dd"))) {
+//            List<Long> orgIds = new ArrayList<>();
+//            orgIds.add(sysWorkTime.getOrgId());
+//            Map<String, Object> param = new HashMap<>();
+//            param.put("orgIds", orgIds);
+//            param.put("sysWorkTime", new Gson().toJson(sysWorkTime));
+//            log.info("时间{}修改作息远程调用生成履职任务", new Date());
+//            AjaxResult result = remoteResumptionTaskService.dayTaskByWorkTime(param, SecurityConstants.INNER);
+//            log.info("时间{}修改作息远程调用生成履职任务返回{}", new Date(), result.get("msg"));
+//
+//        }
+
 
-        }
-        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, ListUtil.list(true, sysWorkTime.getOrgId()), sysWorkTime.getYmdDate()));
     }
 
     /**

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java

@@ -17,7 +17,7 @@ import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.common.core.utils.snowId.DateHelper;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.domain.SysWorkTimeSetDayofweek;
 import com.xunmei.system.mapper.SysWorkTimeMapper;
 import com.xunmei.system.mapper.SysWorkTimeSetDayofweekMapper;

+ 8 - 8
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysWorkTimeMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xunmei.system.mapper.SysWorkTimeMapper">
 
-    <resultMap type="com.xunmei.system.api.domain.SysWorkTime" id="SysWorkTimeResult">
+    <resultMap type="com.xunmei.common.core.domain.worktime.domain.SysWorkTime" id="SysWorkTimeResult">
                 <result property="id" column="id"/>
                 <result property="createTime" column="create_time"/>
                 <result property="modifiedId" column="modified_id"/>
@@ -39,7 +39,7 @@
         from sys_work_time
     </sql>
 
-    <select id="selectSysWorkTimeList" parameterType="com.xunmei.system.api.domain.SysWorkTime"
+    <select id="selectSysWorkTimeList" parameterType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime"
             resultMap="SysWorkTimeResult">
         <include refid="selectSysWorkTimeVo"/>
         <where>
@@ -133,14 +133,14 @@
             ${ew.customSqlSegment}
 
     </select>
-    <select id="findByOrgAndMonth" resultType="com.xunmei.system.api.domain.SysWorkTime">
+    <select id="findByOrgAndMonth" resultType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
 
         select *
         from sys_work_time
         where org_id = #{orgId}
           and ymd_date like concat(#{monthStr}, '%')
     </select>
-    <select id="findByYmd" resultType="com.xunmei.system.api.domain.SysWorkTime">
+    <select id="findByYmd" resultType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
         select * from sys_work_time where org_id in
         <foreach item="orgId" collection="orgIds" open="(" separator="," close=")">
             #{orgId}
@@ -148,7 +148,7 @@
 
          and  ymd_date=#{date}
     </select>
-    <select id="getOrgWorkTimeByMonth" resultType="com.xunmei.system.api.domain.SysWorkTime">
+    <select id="getOrgWorkTimeByMonth" resultType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
         select * from sys_work_time where is_manual=1 and ymd_date>=#{map.effectiveDate} and
         #{map.lastDayOfNextMonth}>=ymd_date
         and org_id in
@@ -162,7 +162,7 @@
         select org_id from sys_work_time where ymd_date=#{data} and is_enable=1
 
     </select>
-    <select id="findByOrgAndDate" resultType="com.xunmei.system.api.domain.SysWorkTime">
+    <select id="findByOrgAndDate" resultType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
         select *
         from sys_work_time
         where org_id = #{orgId}
@@ -172,7 +172,7 @@
         select count(*) from sys_work_time where ymd_date>=#{workstartTime} and #{workendTime} >=ymd_date and org_id=#{orgId} and is_enable=1
     </select>
 
-    <insert id="insertSysWorkTime" parameterType="com.xunmei.system.api.domain.SysWorkTime">
+    <insert id="insertSysWorkTime" parameterType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
         insert into sys_work_time
         <trim prefix="(" suffix=")" suffixOverrides=",">
                     <if test="id != null">id,
@@ -288,7 +288,7 @@
         </trim>
     </insert>
 
-    <update id="updateSysWorkTime" parameterType="com.xunmei.system.api.domain.SysWorkTime">
+    <update id="updateSysWorkTime" parameterType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
         update sys_work_time
         <trim prefix="SET" suffixOverrides=",">
                     <if test="createTime != null">create_time =