Prechádzať zdrojové kódy

教培计划代码提交

jingyuanchao 2 rokov pred
rodič
commit
43973cffbd

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

@@ -258,18 +258,21 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         batchSavePlanToRole(request.getPlanRoleId(), plan.getId());
         batchSavePlanToExecOrg(request.getPlanExecOrgIdList(), plan.getId());
         final int i = coreEduTrainingPlanMapper.updateById(plan);
-        if (ObjectUtil.equal(plan.getStandard(), 0)) {
-            //自建计划
-            Integer exit = coreEduTrainingTaskMapper.checkHasTask(request.getId());
-            Integer hasDone = coreEduTrainingTaskMapper.checkHasTaskIsDone(Collections.singletonList(request.getId()));
-            if (ObjectUtil.equal(exit, 1) && ObjectUtil.isNull(hasDone)) {
-                coreEduTrainingTaskMapper.deleteByMap(MapUtil.of("plan_id", request.getId()));
-                //说明有任务并且都没执行过,需要重新生成任务
-                final CoreEduTrainingPlanDataVo dataVo = getCoreEduTrainingPlanDataVo(request.getId());
-                coreEduTrainingTaskService.createTaskForNow(dataVo, plan.getStartDate(), plan.getEndDate());
-            }
-        }
-
+        /*
+          判断能否修改: 如果上面返回了true; 说明两种情况
+                   1:计划生成了任务,但是未执行:  此时需要删除所有任务,修改计划数据后重新创建任务
+                   2:计划生成了任务且执行了,但是没有修改到关键信息,此时则不能删除任务,只允许修改计划信息
+         */
+        final Integer done = coreEduTrainingTaskMapper.checkHasTaskIsDone(Arrays.asList(plan.getId()));
+        if (ObjectUtil.equal(1,done)){
+            //此为情况二, 计划生成了任务且执行 不能删除任务,只允许修改计划信息,所以直接返回
+            return i;
+        }
+        //此为情况一,计划没有生成任务或者生成了任务但未执行
+        coreEduTrainingTaskMapper.deleteByMap(MapUtil.of("plan_id", request.getId()));
+        //说明有任务并且都没执行过,需要重新生成任务
+        final CoreEduTrainingPlanDataVo dataVo = getCoreEduTrainingPlanDataVo(request.getId());
+        coreEduTrainingTaskService.createTaskForNow(dataVo, plan.getStartDate(), plan.getEndDate());
         return i;
     }