Procházet zdrojové kódy

演练需求变动 代码提交

jingyuanchao před 2 roky
rodič
revize
689dbaff28

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

@@ -263,7 +263,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             //标准计划 且是省联社创建的
             updateStandardPlan(plan, request, range);
         } else {
-            //标准计划 还可能是行社创建的标准计划
+            //普通计划,还可能是行社创建的标准计划
             updateCommonPlan(plan, request, range);
         }
 
@@ -302,19 +302,11 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             coreDrillTaskMapper.updateTaskNameByParentPlanId(planId, plan.getPlanName(), range.getStartTime(), range.getEndTime());
         } else {
             doUpdatePlan(plan, request);
-            List<CoreDrillPlan> list = lambdaQuery().eq(CoreDrillPlan::getParentId, planId).list();
-            for (CoreDrillPlan drillPlan : list) {
-                populateProperties(plan, drillPlan);
-                updateById(drillPlan);
-                coreDrillPlanToExecOrgMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
-                batchSavePlanToExecOrg(request.getPlanExecOrgIdList(), plan.getId());
-            }
-            List<Long> collect = list.stream().map(CoreDrillPlan::getId).collect(Collectors.toList());
-            coreDrillTaskService.delByStartTimeAndEndTimeAndPlanIdList(collect, null, null);
-            TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
+            delAllByParentPlanId(plan.getId());
+            List<CoreDrillPlan> planList = buildPlanData(plan, null, false);            TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
                 @Override
                 public void afterCommit() {
-                    for (CoreDrillPlan drillPlan : list) {
+                    for (CoreDrillPlan drillPlan : planList) {
                         CompletableFuture.runAsync(() -> {
                             //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
                             if ((ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus())
@@ -376,10 +368,11 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         if (parentPlan.getExecTimes() > request.getExecTimes()) {
             throw new RuntimeException("执行次数不能小于基准计划执行次数!");
         }
-        String errorMsg = "子计划仅允许修改演练次数!";
-        validatePlanForStandard(request, plan, errorMsg);
+        if (ObjectUtil.notEqual(plan.getId(), plan.getParentId())) {
+            String errorMsg = "子计划仅允许修改培训次数!";
+            validatePlanForStandard(request, plan, errorMsg);
+        }
         doUpdatePlan(plan, request);
-
         final long done = coreDrillTaskMapper.selectCount(new LambdaQueryWrapper<CoreDrillTask>()
                 .eq(CoreDrillTask::getPlanId, plan.getId())
                 .ge(CoreDrillTask::getStartDate, range.getStartTime())
@@ -408,6 +401,23 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     }
 
 
+    private void delAllByParentPlanId(Long planId) {
+        List<Long> planIdList = coreDrillPlanMapper.selectIdByParentId(planId);
+        if (ObjectUtil.isEmpty(planIdList)) {
+            return;
+        }
+        coreDrillPlanMapper.deleteBatchIds(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) {
         validateFieldForStandard(request.getPlanCycle(), plan.getPlanCycle(), errorMsg);
         validateFieldForStandard(request.getExecOrgType(), plan.getExecOrgType(), errorMsg);

+ 0 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingPlanMapper.java

@@ -65,7 +65,6 @@ public interface CoreEduTrainingPlanMapper extends BaseMapper<CoreEduTrainingPla
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
-    public int deleteCoreEduTrainingPlanByIds(Long[] ids);
 
     Page<CoreEduTrainingPlanPageVo> selectPageData(Page<CoreEduTrainingPlanPageVo> page, @Param("request") CoreEduTrainingPlanPageDto request);
 

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

@@ -259,12 +259,12 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             //草稿状态 可以修改计划
             doUpdatePlan(plan, request);
         }
-        final SysOrg sysOrg = orgService.selectTopOrg(SecurityConstants.FROM_SOURCE);
+        final SysOrg sysOrg = orgService.selectTopOrg(SecurityConstants.INNER);
         if (plan.getStandard() == 1 && ObjectUtil.equal(plan.getCreateOrgId(), sysOrg.getId())) {
             //标准计划 且是省联社创建的
             updateStandardPlan(plan, request, range);
         } else {
-            //标准计划 还可能是行社创建的标准计划
+            //普通计划,还可能是行社创建的标准计划
             updateCommonPlan(plan, request, range);
         }
 
@@ -279,8 +279,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (parentPlan.getExecTimes() > request.getExecTimes()) {
             throw new RuntimeException("执行次数不能小于基准计划执行次数!");
         }
-        String errorMsg = "子计划仅允许修改培训次数!";
-        validatePlanForStandard(request, plan, errorMsg);
+
+        if (ObjectUtil.notEqual(plan.getId(), plan.getParentId())) {
+            String errorMsg = "子计划仅允许修改培训次数!";
+            validatePlanForStandard(request, plan, errorMsg);
+        }
         doUpdatePlan(plan, request);
 
         final long done = coreEduTrainingTaskMapper.selectCount(new LambdaQueryWrapper<CoreEduTrainingTask>()
@@ -343,19 +346,13 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             coreEduTrainingTaskMapper.updateTaskNameByParentPlanId(planId, plan.getPlanName(), range.getStartTime(), range.getEndTime());
         } else {
             doUpdatePlan(plan, request);
-            List<CoreEduTrainingPlan> list = lambdaQuery().eq(CoreEduTrainingPlan::getParentId, planId).list();
-            for (CoreEduTrainingPlan trainingPlan : list) {
-                populateProperties(plan, trainingPlan);
-                updateById(trainingPlan);
-                coreEduTrainingPlanToExecOrgMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
-                batchSavePlanToExecOrg(request.getPlanExecOrgIdList(), plan.getId());
-            }
-            List<Long> collect = list.stream().map(CoreEduTrainingPlan::getId).collect(Collectors.toList());
-            coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(collect, null, null);
+            delAllByParentPlanId(planId);
+
+            List<CoreEduTrainingPlan> planList = buildPlanData(plan, null, false);
             TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
                 @Override
                 public void afterCommit() {
-                    for (CoreEduTrainingPlan trainingPlan : list) {
+                    for (CoreEduTrainingPlan trainingPlan : planList) {
                         CompletableFuture.runAsync(() -> {
                             //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
                             if ((ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus())
@@ -375,6 +372,22 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 
     }
 
+    private void delAllByParentPlanId(Long planId) {
+        List<Long> planIdList = coreEduTrainingPlanMapper.selectIdByParentId(planId);
+        if (ObjectUtil.isEmpty(planIdList)) {
+            return;
+        }
+        coreEduTrainingPlanMapper.deleteBatchIds(planIdList);
+        coreEduTrainingPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToRole>()
+                .in(CoreEduTrainingPlanToRole::getPlanId, planIdList));
+        coreEduTrainingPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToExecOrg>()
+                .in(CoreEduTrainingPlanToExecOrg::getPlanId, planIdList));
+
+        coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(planIdList, null, null);
+
+
+    }
+
     private void populateProperties(CoreEduTrainingPlan source, CoreEduTrainingPlan target) {
         target.setPlanName(source.getPlanName());
         target.setPlanCycle(source.getPlanCycle());