Explorar o código

培训/演练 有参定时任务执行报错

jingyuanchao hai 1 ano
pai
achega
2979a95367

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

@@ -1,7 +1,5 @@
 package com.xunmei.core.drill.service.impl;
 
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -20,7 +18,11 @@ import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.IdName;
-import com.xunmei.common.core.domain.drill.domain.*;
+import com.xunmei.common.core.domain.compensate.dto.CompensateDto;
+import com.xunmei.common.core.domain.drill.domain.CoreDrillPlan;
+import com.xunmei.common.core.domain.drill.domain.CoreDrillPlanToExecOrg;
+import com.xunmei.common.core.domain.drill.domain.CoreDrillPlanToRole;
+import com.xunmei.common.core.domain.drill.domain.CoreDrillTask;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillPlanInsertDto;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillPlanPageDto;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillPlanUpdateDto;
@@ -47,13 +49,13 @@ import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.common.core.domain.compensate.dto.CompensateDto;
 import com.xunmei.core.compense.interfaces.CompensateService;
 import com.xunmei.core.compense.service.ICoreCompensateLogService;
-import com.xunmei.core.drill.mapper.*;
+import com.xunmei.core.drill.mapper.CoreDrillPlanMapper;
+import com.xunmei.core.drill.mapper.CoreDrillPlanToExecOrgMapper;
+import com.xunmei.core.drill.mapper.CoreDrillTaskMapper;
 import com.xunmei.core.drill.service.ICoreDrillPlanService;
 import com.xunmei.core.drill.service.ICoreDrillPlanToExecOrgService;
-import com.xunmei.core.drill.service.ICoreDrillPlanToRoleService;
 import com.xunmei.core.drill.service.ICoreDrillTaskService;
 import com.xunmei.core.edu.mapper.PhysicalDeleteMapper;
 import com.xunmei.core.registerbook.service.ICoreRegisterBookPdfService;
@@ -74,8 +76,6 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.support.TransactionSynchronizationAdapter;
-import org.springframework.transaction.support.TransactionSynchronizationManager;
 
 import java.time.Duration;
 import java.util.*;
@@ -97,10 +97,6 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     @Autowired
     private CoreDrillPlanMapper coreDrillPlanMapper;
     @Autowired
-    private CoreDrillPlanToRoleMapper coreDrillPlanToRoleMapper;
-    @Autowired
-    private ICoreDrillPlanToRoleService coreDrillPlanToRoleService;
-    @Autowired
     private ICoreDrillPlanToExecOrgService coreDrillPlanToExecOrgService;
     @Autowired
     private CoreDrillPlanToExecOrgMapper coreDrillPlanToExecOrgMapper;
@@ -109,8 +105,6 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     @Autowired
     private CoreDrillTaskMapper coreDrillTaskMapper;
     @Autowired
-    private CoreDrillTaskToRoleMapper coreDrillTaskToRoleMapper;
-    @Autowired
     private PhysicalDeleteMapper physicalDeleteMapper;
     @Autowired
     @Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
@@ -402,7 +396,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         if (ObjectUtil.isEmpty(list)){
             return;
         }
-        physicalDeleteMapper.deletedEduPlanByIds(list);
+        physicalDeleteMapper.deletedDrillPlanByIds(list);
         coreDrillPlanToExecOrgService.deleteByPlanIds(list);
 
 
@@ -436,58 +430,6 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         coreDrillPlanMapper.updateById(plan);
     }
 
-    private void updateStandardPlan(CoreDrillPlan plan, CoreDrillPlanUpdateDto request, DateRange range) {
-
-        //使用中的标准计划
-
-        Long planId = plan.getId();
-        // 判断标准计划能否修改:存在下发的计划生成了任务且任务存在已执行
-        Integer standardPlanHasDone = coreDrillTaskMapper.checkHasTaskIsDoneByPlanParentId(planId);
-        if (ObjectUtil.equal(standardPlanHasDone, 1)) {
-            SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() ->
-                    orgService.selectOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-            //验证修改的字段是否符合要求
-            String errorMsg = "有任务已执行或已过期,仅允许修改任务名称!";
-            validatePlanForStandard(request, plan, errorMsg, sysOrg.getType());
-            doUpdatePlan(plan, request);
-            coreDrillPlanMapper.updatePlanName(plan.getId(), plan.getPlanName());
-            coreDrillTaskMapper.updateTaskNameByParentPlanId(planId, plan.getPlanName(), range.getStartTime(), range.getEndTime());
-        } else {
-            doUpdatePlan(plan, request);
-            delAllByParentPlanId(plan);
-            List<CoreDrillPlan> planList = null;
-            if (plan.getIssue() == 1) {
-                planList = buildPlanData(plan, null, false, 0);
-            } else {
-                planList = ListUtil.list(true, plan);
-            }
-/*            if (checkOrgType(plan.getExecOrgType())) {
-                planList.add(plan);
-            }*/
-            List<CoreDrillPlan> finalPlanList = planList;
-            TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
-                @Override
-                public void afterCommit() {
-                    for (CoreDrillPlan drillPlan : finalPlanList) {
-                        CompletableFuture.runAsync(() -> {
-                            //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
-                            if (checkCanBuildTaskNow(plan)) {
-                                CoreDrillPlanDataVo detailPlanData = getCoreDrillPlanDataVo(drillPlan.getId());
-                                coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate());
-                            }
-                        }, threadPoolTaskExecutor);
-                    }
-                }
-            });
-
-
-        }
-
-        //TODO 修改任务名称
-        //coreEduTrainingTaskMapper.updateTaskNameByPlanId(planId, planName, plan.getStartDate(), plan.getEndDate());
-
-    }
-
     @Override
     public void populateProperties(CoreDrillPlan source, CoreDrillPlan target) {
         target.setPlanName(source.getPlanName());
@@ -501,119 +443,6 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         target.setRemark(source.getRemark());
         target.setFileList(source.getFileList());
     }
-
-    private void deletePlanAndTaskByParentPlanId(Long planId) {
-        //删除原有数据, 然后重新生成计划,任务
-        List<Long> planIdList = coreDrillPlanMapper.selectAllIdByParentId(planId);
-        if (ObjectUtil.isEmpty(planIdList)) {
-            return;
-        }
-        if (ObjectUtil.isNotEmpty(planIdList)) {
-            coreDrillPlanMapper.deleteBatchIds(planIdList);
-            coreDrillPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToExecOrg>().in(CoreDrillPlanToExecOrg::getPlanId, planIdList));
-            coreDrillPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToRole>().in(CoreDrillPlanToRole::getPlanId, planIdList));
-        }
-        List<CoreDrillTask> taskIdList = coreDrillTaskMapper.selectList(new LambdaQueryWrapper<CoreDrillTask>().in(CoreDrillTask::getPlanId, planIdList).select(CoreDrillTask::getId));
-        List<Long> collect = taskIdList.stream().map(CoreDrillTask::getId).collect(toList());
-        if (ObjectUtil.isNotEmpty(collect)) {
-            coreDrillTaskMapper.deleteBatchIds(collect);
-            coreDrillTaskToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillTaskToRole>().in(CoreDrillTaskToRole::getDrillTaskId, collect));
-
-        }
-    }
-
-    private void updateCommonPlan(CoreDrillPlan plan, CoreDrillPlanUpdateDto request, DateRange range) {
-        CoreDrillPlan parentPlan = coreDrillPlanMapper.selectOne(new LambdaQueryWrapper<CoreDrillPlan>()
-                .eq(CoreDrillPlan::getId, plan.getParentId()));
-        //使用中的普通计划
-        if (parentPlan.getExecTimes() > request.getExecTimes()) {
-            throw new RuntimeException("执行次数不能小于基准计划执行次数!");
-        }
-        if (ObjectUtil.notEqual(plan.getId(), plan.getParentId())) {
-            String errorMsg = null;
-            SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() ->
-                    orgService.selectOrgById(SecurityUtils.getLoginUser().getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-            if (ObjectUtil.equal(sysOrg.getType(), OrgTypeEnum.SHEGN_LIAN_SHE.getCode())) {
-                errorMsg = "当前用户身份仅允许修改子任务的任务名称和任务次数!!";
-            } else {
-                errorMsg = "当前用户身份仅允许修改子任务的任务次数!";
-            }
-            validatePlanForStandard(request, parentPlan, errorMsg, sysOrg.getType());
-        }
-        doUpdatePlan(plan, request);
-        final long done = coreDrillTaskMapper.selectCount(new LambdaQueryWrapper<CoreDrillTask>()
-                .eq(CoreDrillTask::getPlanId, plan.getId())
-                .ge(CoreDrillTask::getStartDate, range.getStartTime())
-                .le(CoreDrillTask::getEndDate, range.getEndTime())
-                .in(CoreDrillTask::getStatus, DrillDoStatus.DONE.getCode(), DrillDoStatus.OVERDUE.getCode()));
-        //如果有一条状态不等于待培训的数据,那么就下个周期生效
-        if (done > 0) {
-            //任务已执行,下个周期生效
-            return;
-        }
-        //如果没有,那就删除这个计划当前周期的所有任务,重新生成
-        coreDrillTaskService.delByStartTimeAndEndTimeAndPlanIdList(Arrays.asList(plan.getId()), range.getStartTime(), range.getEndTime());
-        TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
-            @Override
-            public void afterCommit() {
-                CompletableFuture.runAsync(() -> {
-                    //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
-                    if (checkCanBuildTaskNow(plan)) {
-                        final CoreDrillPlanDataVo detailPlanData = getCoreDrillPlanDataVo(plan.getId());
-                        coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate());
-                    }
-                }, threadPoolTaskExecutor);
-            }
-        });
-    }
-
-
-    private void delAllByParentPlanId(CoreDrillPlan plan) {
-        List<Long> planIdList = coreDrillPlanMapper.selectIdByParentId(plan.getId());
-        if (ObjectUtil.isEmpty(planIdList)) {
-            return;
-        }
-        if (plan.getId().equals(plan.getParentId())) {
-            List<Long> list = new ArrayList<>(planIdList);
-            list.remove(plan.getId());
-            if (list.isEmpty()) {
-                return;
-            }
-            coreDrillPlanMapper.deleteBatchIds(planIdList);
-            coreDrillPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToRole>()
-                    .in(CoreDrillPlanToRole::getPlanId, planIdList));
-            coreDrillPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToExecOrg>()
-                    .in(CoreDrillPlanToExecOrg::getPlanId, planIdList));
-        }
-        coreDrillPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToRole>()
-                .in(CoreDrillPlanToRole::getPlanId, planIdList));
-        coreDrillPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToExecOrg>()
-                .in(CoreDrillPlanToExecOrg::getPlanId, planIdList));
-
-        coreDrillTaskService.delByStartTimeAndEndTimeAndPlanIdList(planIdList, null, null);
-
-
-    }
-
-
-    private void validatePlanForStandard(CoreDrillPlanUpdateDto request, CoreDrillPlan plan, String errorMsg, Integer type) {
-        validateFieldForStandard(request.getPlanCycle(), plan.getPlanCycle(), errorMsg);
-        validateFieldForStandard(request.getExecOrgType(), plan.getExecOrgType(), errorMsg);
-        List<Long> execOrgIdList = coreDrillPlanToExecOrgMapper.selectOrgIdByPlanId(plan.getId());
-        validateListForStandard(execOrgIdList, request.getPlanExecOrgIdList(), errorMsg);
-        validateFieldForStandard(request.getRemark(), plan.getRemark(), errorMsg);
-        validateFileListForStandard(request.getFileList(), JSON.parseArray(plan.getFileList(), String.class), errorMsg);
-        if (plan.getPlanCycle().equals(EduTrainingPlanCycleEnum.NONE.getCode())) {
-            validateFieldForStandard(request.getStartDate(), plan.getPlanStartDate(), errorMsg);
-            validateFieldForStandard(request.getEndDate(), plan.getPlanEndDate(), errorMsg);
-        }
-        if (OrgTypeEnum.HANG_SHE.equals(OrgTypeEnum.getOrgTypeEnum(type))) {
-            //标准计划可以修改名称,行社不允许修改名称
-            validateFieldForStandard(request.getPlanName(), plan.getPlanName(), errorMsg);
-        }
-
-    }
-
     private void validateFieldForStandard(Object requestValue, Object planValue, String errorMessage) {
         if (ObjectUtils.allNull(requestValue, planValue)) {
             return;
@@ -645,18 +474,6 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
 
     }
 
-    public void batchSavePlanToRole(List<Long> roleIdList, Long planId) {
-        List<CoreDrillPlanToRole> planRoleList = new ArrayList<>();
-        for (Long roleId : roleIdList) {
-            CoreDrillPlanToRole role = new CoreDrillPlanToRole();
-            role.setRoleId(roleId);
-            role.setPlanId(planId);
-            planRoleList.add(role);
-        }
-        if (CollectionUtil.isNotEmpty(planRoleList)) {
-            coreDrillPlanToRoleService.saveBatch(planRoleList);
-        }
-    }
 
     public void batchSavePlanToExecOrg(List<Long> orgIdList, Long planId) {
 
@@ -809,17 +626,6 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         }
     }
 
-    private Boolean anotherCheckOrgType(Integer orgType) {
-        if (ObjectUtil.isEmpty(orgType)) {
-            throw new RuntimeException("当前用户所在机构类型无法确认!");
-        }
-        //如果是省联社或者办事处及行社
-        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode())
-                || ObjectUtil.equal(orgType, OrgTypeEnum.BAN_SHI_CHU.getCode())
-                || ObjectUtil.equal(orgType, OrgTypeEnum.HANG_SHE.getCode())
-                || ObjectUtil.equal(orgType, OrgTypeEnum.YINGYE_WANGDIAN.getCode());
-    }
-
     private void checkPlanIsCreatingTask(Long planId, String msg) {
         String redisKey = "Drill_Creating_Task" + planId;
         Boolean hasKey = RedisUtils.hasKey(redisKey);

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

@@ -221,8 +221,8 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         record.setTypeText(DictUtils.getDictLabel(DictConstants.CORE_DRILL_TYPE, record.getType()));
         //处理演练任务推荐状态字典
         record.setRecStatusText(DictUtils.getDictLabel(DictConstants.DRILL_TASK_REC_STATUS, record.getRecStatus()));
-        if (SecurityUtils.isApp()){
-            record.setOrgName(orgService.concatOrgName(record.getOrgId(),SecurityConstants.INNER));
+        if (SecurityUtils.isApp()) {
+            record.setOrgName(orgService.concatOrgName(record.getOrgId(), SecurityConstants.INNER));
         }
     }
 
@@ -1005,7 +1005,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 //处理演练任务推荐状态字典
                 record.setRecStatusText(DictUtils.getDictLabel(DictConstants.DRILL_TASK_REC_STATUS, record.getRecStatus()));
             }
-            record.setOrgName(orgService.concatOrgName(record.getOrgId(),SecurityConstants.INNER));
+            record.setOrgName(orgService.concatOrgName(record.getOrgId(), SecurityConstants.INNER));
 
 
         }
@@ -1030,7 +1030,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         for (CoreDrillTaskRecTaskPageVo record : records) {
             //处理演练任务类型字典
             record.setTypeText(DictUtils.getDictLabel(DictConstants.CORE_DRILL_TYPE, record.getType()));
-            record.setOrgName(orgService.concatOrgName(record.getOrgId(),SecurityConstants.INNER));
+            record.setOrgName(orgService.concatOrgName(record.getOrgId(), SecurityConstants.INNER));
         }
         return TableDataInfo.build(page);
     }