|  | @@ -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,14 +49,15 @@ 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;
 | 
	
		
			
				|  |  |  import com.xunmei.core.reminder.service.ICoreReminderConfigurationService;
 | 
	
		
			
				|  |  |  import com.xunmei.core.reminder.service.ICoreReminderScheduleService;
 | 
	
	
		
			
				|  | @@ -73,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.*;
 | 
	
	
		
			
				|  | @@ -96,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;
 | 
	
	
		
			
				|  | @@ -108,8 +105,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private CoreDrillTaskMapper coreDrillTaskMapper;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  | -    private CoreDrillTaskToRoleMapper coreDrillTaskToRoleMapper;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    private PhysicalDeleteMapper physicalDeleteMapper;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      @Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
 | 
	
		
			
				|  |  |      private ThreadPoolTaskExecutor threadPoolTaskExecutor;
 | 
	
	
		
			
				|  | @@ -391,11 +387,22 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
 | 
	
		
			
				|  |  |          validateFieldForStandard(request.getPlanCycle(), plan.getPlanCycle(), "当前状态仅允许修改任务名称");
 | 
	
		
			
				|  |  |          validateFieldForStandard(request.getExecTimes(), plan.getExecTimes(), "当前状态仅允许修改任务名称");
 | 
	
		
			
				|  |  |          validateFieldForStandard(request.getExecOrgType(), plan.getExecOrgType(), "当前状态仅允许修改任务名称");
 | 
	
		
			
				|  |  | -        List<Long> execOrgIdList = coreDrillPlanToExecOrgMapper.selectOrgIdByPlanId(plan.getId());
 | 
	
		
			
				|  |  | -        validateListForStandard(execOrgIdList, request.getPlanExecOrgIdList(), "当前状态仅允许修改任务名称");
 | 
	
		
			
				|  |  | +      /*  List<Long> execOrgIdList = coreDrillPlanToExecOrgMapper.selectOrgIdByPlanId(plan.getId());
 | 
	
		
			
				|  |  | +        validateListForStandard(execOrgIdList, request.getPlanExecOrgIdList(), "当前状态仅允许修改任务名称");*/
 | 
	
		
			
				|  |  |          validateFieldForStandard(request.getRemark(), plan.getRemark(), "当前状态仅允许修改任务名称");
 | 
	
		
			
				|  |  |          validateFileListForStandard(request.getFileList(), JSON.parseArray(plan.getFileList(), String.class), "当前状态仅允许修改任务名称");
 | 
	
		
			
				|  |  |          plan.setPlanName(request.getPlanName());
 | 
	
		
			
				|  |  | +        List<Long> list = baseMapper.selectIdByParentId(plan.getId());
 | 
	
		
			
				|  |  | +        if (ObjectUtil.isEmpty(list)){
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        physicalDeleteMapper.deletedDrillPlanByIds(list);
 | 
	
		
			
				|  |  | +        coreDrillPlanToExecOrgService.deleteByPlanIds(list);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        coreDrillPlanToExecOrgMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
 | 
	
		
			
				|  |  | +        batchSavePlanToExecOrg(request.getPlanExecOrgIdList(), plan.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          updateById(plan);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -414,7 +421,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
 | 
	
		
			
				|  |  |          List<Long> longs = baseMapper.selectAllIdByParentId(plan.getId());
 | 
	
		
			
				|  |  |          if (!longs.isEmpty()) {
 | 
	
		
			
				|  |  |              baseMapper.delByIds(longs);
 | 
	
		
			
				|  |  | -            coreDrillPlanToExecOrgService.deleteByParentId(longs);
 | 
	
		
			
				|  |  | +            coreDrillPlanToExecOrgService.deleteByPlanIds(longs);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -423,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());
 | 
	
	
		
			
				|  | @@ -488,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;
 | 
	
	
		
			
				|  | @@ -632,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) {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -796,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);
 |