|
|
@@ -26,6 +26,8 @@ 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.domain.edu.domain.CoreEduTrainingPlan;
|
|
|
+import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDataVo;
|
|
|
import com.xunmei.common.core.enums.OrgTypeEnum;
|
|
|
import com.xunmei.common.core.enums.drill.DrillDoStatus;
|
|
|
import com.xunmei.common.core.enums.drill.DrillPlanCycleEnum;
|
|
|
@@ -35,6 +37,7 @@ import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
|
|
|
import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
|
|
|
import com.xunmei.common.core.exception.SystemException;
|
|
|
import com.xunmei.common.core.util.BeanHelper;
|
|
|
+import com.xunmei.common.core.utils.AssertUtil;
|
|
|
import com.xunmei.common.core.utils.DateUtils;
|
|
|
import com.xunmei.common.core.web.page.TableDataInfo;
|
|
|
import com.xunmei.common.redis.utils.RedisUtils;
|
|
|
@@ -692,22 +695,8 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void publishPlan(Long planId, Integer status) {
|
|
|
final CoreDrillPlan plan = coreDrillPlanMapper.selectById(planId);
|
|
|
- if (plan == null) {
|
|
|
- throw new SystemException("计划不存在!");
|
|
|
- }
|
|
|
- if (ObjectUtil.equal(plan.getIssue(), 1)) {
|
|
|
- throw new SystemException("计划已完成发布!");
|
|
|
- }
|
|
|
- List<CoreDrillPlan> planList = lambdaQuery()
|
|
|
- .eq(CoreDrillPlan::getParentId, planId)
|
|
|
- .select(CoreDrillPlan::getId).list();
|
|
|
- if (planList.isEmpty()) {
|
|
|
- planList = buildPlanData(plan, new ArrayList<>(), true, status);
|
|
|
- } else {
|
|
|
- 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());
|
|
|
- }
|
|
|
+ AssertUtil.isNotEmpty(plan, "计划不存在!");
|
|
|
+ AssertUtil.equal(plan.getIssue(), 0, "计划已完成下发!");
|
|
|
//下发后修改为使用中
|
|
|
plan.setPlanStatus(DrillPlanStatus.USING.getCode());
|
|
|
plan.setIssue(1);
|
|
|
@@ -720,19 +709,32 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
plan.setBuildTaskNow(0);
|
|
|
}
|
|
|
//事务提交后执行
|
|
|
- List<CoreDrillPlan> finalPlanList = planList;
|
|
|
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
|
|
|
@Override
|
|
|
public void afterCommit() {
|
|
|
- for (CoreDrillPlan drillPlan : finalPlanList) {
|
|
|
- CompletableFuture.runAsync(() -> {
|
|
|
- //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
|
|
|
+
|
|
|
+ final CompletableFuture<List<CoreDrillPlan>> planListFuture = CompletableFuture.supplyAsync(() -> {
|
|
|
+ List<CoreDrillPlan> planList = lambdaQuery()
|
|
|
+ .eq(CoreDrillPlan::getParentId, planId)
|
|
|
+ .select(CoreDrillPlan::getId).list();
|
|
|
+ if (planList.isEmpty()) {
|
|
|
+ planList = buildPlanData(plan, new ArrayList<>(), true, status);
|
|
|
+ } else {
|
|
|
+ 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());
|
|
|
+ }
|
|
|
+ return planList;
|
|
|
+ }, threadPoolTaskExecutor);
|
|
|
+
|
|
|
+ planListFuture.thenAcceptAsync((result) -> {
|
|
|
+ for (CoreDrillPlan drillPlan : result) {
|
|
|
if (checkCanBuildTaskNow(plan)) {
|
|
|
final CoreDrillPlanDataVo detailPlanData = getCoreDrillPlanDataVo(drillPlan.getId());
|
|
|
coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate());
|
|
|
}
|
|
|
- }, threadPoolTaskExecutor);
|
|
|
- }
|
|
|
+ }
|
|
|
+ }, threadPoolTaskExecutor);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
@@ -777,10 +779,11 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
|
|
|
// 删除所有任务数据
|
|
|
coreDrillTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
|
|
|
//删除所有子计划
|
|
|
- coreDrillPlanMapper.delByIds(list);
|
|
|
+ //coreDrillPlanMapper.delByIds(list);
|
|
|
+ list.add(planId);
|
|
|
//计划状态回到草稿状态
|
|
|
update(new LambdaUpdateWrapper<CoreDrillPlan>()
|
|
|
- .eq(CoreDrillPlan::getId, planId)
|
|
|
+ .in(CoreDrillPlan::getId, list)
|
|
|
.set(CoreDrillPlan::getIssue, 0)
|
|
|
.set(CoreDrillPlan::getWithdrawTime, new Date())
|
|
|
.set(CoreDrillPlan::getPlanStatus, DrillPlanStatus.DRAFT.getCode()));
|