Quellcode durchsuchen

教育/演练计划下发撤回需求变更修改

jingyuanchao vor 2 Jahren
Ursprung
Commit
f8e199835b

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

@@ -567,9 +567,11 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         List<CoreDrillPlan> planList = lambdaQuery()
                 .eq(CoreDrillPlan::getParentId, planId)
                 .select(CoreDrillPlan::getId).list();
+        boolean isPublishAgain=false;
         if (planList.isEmpty()) {
             planList = buildPlanData(plan, new ArrayList<>(), true);
         } else {
+            isPublishAgain=true;
             planList.forEach(plan1 -> plan1.setPlanStatus(EduTrainingPlanStatus.USING.getCode()));
             List<Long> collect = planList.stream().map(CoreDrillPlan::getId).collect(Collectors.toList());
             coreDrillPlanMapper.updatePlanStatusByIdList(collect, EduTrainingPlanStatus.USING.getCode());
@@ -578,7 +580,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         plan.setPlanStatus(DrillPlanStatus.USING.getCode());
         plan.setIssue(1);
         this.updateById(plan);
-        if (ObjectUtil.isNotEmpty(planList)){
+        if (isPublishAgain){
             //说明是计划是二次下发,下个周期生效,此处临时set为0,不保存入库,
             plan.setBuildTaskNow(0);
         }
@@ -611,8 +613,11 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
 
         //无周期计划撤回,不管任务状态,删除所有任务,撤回后计划停用
         //有周期计划撤回,如果没有任务已执行,删除所有任务,撤回后计划停用
-        Integer isExecute = coreDrillTaskMapper.checkHasTaskIsDone(list);
-        if (ObjectUtil.equal(isExecute, null) || EduTrainingPlanCycleEnum.NONE.getCode().equals(plan.getPlanCycle())) {
+        Integer isExecute = coreDrillTaskMapper.selectCount(new LambdaQueryWrapper<CoreDrillTask>()
+                .in(CoreDrillTask::getPlanId, list)
+                .eq(CoreDrillTask::getStatus,DrillDoStatus.DONE.getCode()))
+                .intValue();
+        if (ObjectUtil.equal(isExecute, 0) || EduTrainingPlanCycleEnum.NONE.getCode().equals(plan.getPlanCycle())) {
             coreDrillTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
         }
         coreDrillPlanMapper.updatePlanStatusByIdOrParentId(planId, EduTrainingPlanStatus.DELETED.getCode());

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

@@ -614,9 +614,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         List<CoreEduTrainingPlan> planList = lambdaQuery()
                 .eq(CoreEduTrainingPlan::getParentId, planId)
                 .select(CoreEduTrainingPlan::getId).list();
+        boolean isPublishAgain = false;
         if (planList.isEmpty()) {
             planList = buildPlanData(plan, new ArrayList<>(), true);
         } else {
+            isPublishAgain = true;
             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());
@@ -625,7 +627,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         plan.setPlanStatus(EduTrainingPlanStatus.USING.getCode());
         plan.setIssue(1);
         this.updateById(plan);
-        if (ObjectUtil.isNotEmpty(planList)){
+        if (isPublishAgain) {
             //说明是计划是二次下发,下个周期生效,此处临时set为0,不保存入库,
             plan.setBuildTaskNow(0);
         }
@@ -733,8 +735,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 
         //无周期计划撤回,不管任务状态,删除所有任务,撤回后计划停用
         //有周期计划撤回,如果没有任务已执行,删除所有任务,撤回后计划停用
-        Integer isExecute = coreEduTrainingTaskMapper.checkHasTaskIsDone(list);
-        if (ObjectUtil.equal(isExecute, null) || EduTrainingPlanCycleEnum.NONE.getCode().equals(plan.getPlanCycle())) {
+        Integer isExecute = coreEduTrainingTaskMapper.selectCount(new LambdaQueryWrapper<CoreEduTrainingTask>()
+                        .in(CoreEduTrainingTask::getPlanId, list)
+                        .eq(CoreEduTrainingTask::getStatus, EduTrainingDoStatus.DONE.getCode()))
+                        .intValue();
+        if (ObjectUtil.equal(isExecute, 0) || EduTrainingPlanCycleEnum.NONE.getCode().equals(plan.getPlanCycle())) {
             coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
         }