|
|
@@ -611,7 +611,9 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
|
|
|
final CoreEduTrainingPlan plan = coreEduTrainingPlanMapper.selectById(planId);
|
|
|
AssertUtil.isNotEmpty(plan, "计划不存在!");
|
|
|
AssertUtil.equal(plan.getIssue(), 0, "计划已完成下发!");
|
|
|
- List<CoreEduTrainingPlan> planList = lambdaQuery().eq(CoreEduTrainingPlan::getParentId, planId).select(CoreEduTrainingPlan::getId).list();
|
|
|
+ List<CoreEduTrainingPlan> planList = lambdaQuery()
|
|
|
+ .eq(CoreEduTrainingPlan::getParentId, planId)
|
|
|
+ .select(CoreEduTrainingPlan::getId).list();
|
|
|
if (planList.isEmpty()) {
|
|
|
planList = buildPlanData(plan, new ArrayList<>(), true);
|
|
|
} else {
|
|
|
@@ -619,12 +621,19 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
|
|
|
List<Long> collect = planList.stream().map(CoreEduTrainingPlan::getId).collect(Collectors.toList());
|
|
|
coreEduTrainingPlanMapper.updatePlanStatusByIdList(collect, EduTrainingPlanStatus.USING.getCode());
|
|
|
}
|
|
|
+ //非无周期的撤回后重新下发下个周期生效,无周期的立即生效
|
|
|
+ int buildTaskNow = 0;
|
|
|
+ if (plan.getPlanCycle().equals(EduTrainingPlanCycleEnum.NONE.getCode()) ||
|
|
|
+ EduTrainingPlanStatus.DRAFT.getCode().equals(plan.getPlanStatus())) {
|
|
|
+ buildTaskNow = 1;
|
|
|
+ }
|
|
|
//下发后修改为使用中
|
|
|
plan.setPlanStatus(EduTrainingPlanStatus.USING.getCode());
|
|
|
plan.setIssue(1);
|
|
|
this.updateById(plan);
|
|
|
//事务提交后执行
|
|
|
List<CoreEduTrainingPlan> finalPlanList = planList;
|
|
|
+ Integer finalBuildTaskNow = buildTaskNow;
|
|
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
|
|
|
@Override
|
|
|
public void afterCommit() {
|
|
|
@@ -632,7 +641,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
|
|
|
CompletableFuture.runAsync(() -> {
|
|
|
//如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
|
|
|
if ((ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus())
|
|
|
- && (ObjectUtil.equal(EduTrainingPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
|
|
|
+ && (ObjectUtil.equal(EduTrainingPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, finalBuildTaskNow)))) {
|
|
|
CoreEduTrainingPlanDataVo detailPlanData = getCoreEduTrainingPlanDataVo(trainingPlan.getId());
|
|
|
coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
|
|
|
}
|
|
|
@@ -723,10 +732,16 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
|
|
|
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);
|
|
|
+
|
|
|
+ //无周期计划撤回,不管任务状态,删除所有任务,撤回后计划停用
|
|
|
+ //有周期计划撤回,如果没有任务已执行,删除所有任务,撤回后计划停用
|
|
|
+ Integer isExecute = coreEduTrainingTaskMapper.checkHasTaskIsDone(list);
|
|
|
+ if (ObjectUtil.equal(isExecute, null) || EduTrainingPlanCycleEnum.NONE.getCode().equals(plan.getPlanCycle())) {
|
|
|
+ coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
|
|
|
+ }
|
|
|
+
|
|
|
coreEduTrainingPlanMapper.updatePlanStatusByIdOrParentId(planId, EduTrainingPlanStatus.DELETED.getCode());
|
|
|
- coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, range.getStartTime(), range.getEndTime());
|
|
|
return coreEduTrainingPlanMapper.updateById(plan);
|
|
|
}
|
|
|
|