jingyuanchao 2 лет назад
Родитель
Сommit
77f985298f
13 измененных файлов с 189 добавлено и 67 удалено
  1. 52 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/drill/DrillPlanCycleEnum.java
  2. 3 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/edu/EduTrainingPlanCycleEnum.java
  3. 56 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/utils/DateUtils.java
  4. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/controller/CoreDrillPlanController.java
  5. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillPlanService.java
  6. 16 41
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java
  7. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  8. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingPlanController.java
  9. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingPlanService.java
  10. 52 14
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java
  11. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  12. 1 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java
  13. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml

+ 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;
 
 /**
  * 教育培训周期枚举

+ 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) {

+ 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());
                         }

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

@@ -22,7 +22,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.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());

+ 1 - 1
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;

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

@@ -23,13 +23,12 @@ 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.EduTrainingPlanCycleEnum;
+import com.xunmei.common.core.enums.edu.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.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;
@@ -45,7 +44,6 @@ import com.xunmei.system.api.domain.SysDictData;
 import com.xunmei.system.api.domain.SysOrg;
 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;

+ 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>