Pārlūkot izejas kodu

培训/演练 代码提交

jingyuanchao 1 gadu atpakaļ
vecāks
revīzija
4e652b3ab5

+ 1 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillPlanMapper.java

@@ -73,6 +73,7 @@ public interface CoreDrillPlanMapper extends BaseMapper<CoreDrillPlan> {
     CoreDrillPlanDataVo getDetailPlanData(@Param("id") Long id);
 
     List<Long> selectIdByParentId(@Param("planId") Long planId);
+    List<Long> selectIdByParentIdOrId(@Param("planId") Long planId);
 
     List<Long> selectAllIdByParentId(@Param("planId") Long planId);
 

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

@@ -317,13 +317,16 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             coreDrillTaskMapper.updateTaskNameByParentPlanId(planId, plan.getPlanName(), range.getStartTime(), range.getEndTime());
         } else {
             doUpdatePlan(plan, request);
-            delAllByParentPlanId(plan.getId());
+            delAllByParentPlanId(plan);
             List<CoreDrillPlan> planList = null;
             if (plan.getIssue() == 1) {
                 planList = buildPlanData(plan, null, false);
             } else {
                 planList = ListUtil.list(true, plan);
             }
+            if (checkOrgType(plan.getExecOrgType())){
+                planList.add(plan);
+            }
             List<CoreDrillPlan> finalPlanList = planList;
             TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
                 @Override
@@ -428,11 +431,23 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     }
 
 
-    private void delAllByParentPlanId(Long planId) {
-        List<Long> planIdList = coreDrillPlanMapper.selectIdByParentId(planId);
+    private void delAllByParentPlanId(CoreDrillPlan plan) {
+        List<Long> planIdList = coreDrillPlanMapper.selectIdByParentIdOrId(plan.getId());
         if (ObjectUtil.isEmpty(planIdList)) {
             return;
         }
+        if (plan.getId().equals(plan.getParentId())){
+            ArrayList<Long> list = new ArrayList<>(planIdList);
+            list.remove(plan.getId());
+            if (!list.isEmpty()){
+                coreDrillPlanMapper.deleteBatchIds(planIdList);
+                coreDrillPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToRole>()
+                        .in(CoreDrillPlanToRole::getPlanId, planIdList));
+                coreDrillPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToExecOrg>()
+                        .in(CoreDrillPlanToExecOrg::getPlanId, planIdList));
+
+            }
+        }
         coreDrillPlanMapper.deleteBatchIds(planIdList);
         coreDrillPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillPlanToRole>()
                 .in(CoreDrillPlanToRole::getPlanId, planIdList));

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

@@ -409,7 +409,18 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         // List<CoreDrillTaskToRole> taskRoleList = new ArrayList<>();
         List<CoreDrillTask> taskList = new ArrayList<>();
         Map<Integer, DateRange> dateRangeMap = DateUtils.splitDateRange(start, end, plan.getExecTimes());
-
+        //获取dateRangeMap中最大和最小的时间
+        Date maxDateRange = dateRangeMap.get(dateRangeMap.size()).getEndTime();
+        Date minDateRange = dateRangeMap.get(1).getStartTime();
+        final List<Long> collect = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
+        Date date = new Date();
+        final List<CoreDrillTask> trainingTaskList = baseMapper.selectList(new LambdaQueryWrapper<CoreDrillTask>()
+                .in(CoreDrillTask::getOrgId, collect)
+                .ge(CoreDrillTask::getStartDate, minDateRange)
+                .le(CoreDrillTask::getEndDate, maxDateRange)
+                .eq(CoreDrillTask::getPlanId, plan.getId())
+                .select(CoreDrillTask::getId,CoreDrillTask::getOrgId, CoreDrillTask::getStartDate, CoreDrillTask::getEndDate, CoreDrillTask::getPlanId)
+        );
         for (SysOrg org : orgList) {
             for (int i = 1; i <= plan.getExecTimes(); i++) {
                 final LocalDateTime time = DateUtils.toLocalDateTime(DateUtils.getPreciseTime(dateRangeMap.get(i).getEndTime()));
@@ -448,7 +459,15 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 trainingTask.setUpdateTime(new Date());
                 trainingTask.setComment(null);
 
-                taskList.add(trainingTask);
+                final Optional<CoreDrillTask> any = trainingTaskList.stream()
+                        .filter(task -> task.getOrgId().equals(org.getId()))
+                        .filter(task -> task.getStartDate().equals(trainingTask.getStartDate()))
+                        .filter(task -> task.getEndDate().equals(trainingTask.getEndDate()))
+                        .filter(task -> task.getPlanId().equals(trainingTask.getPlanId()))
+                        .findAny();
+                if (!any.isPresent()) {
+                    taskList.add(trainingTask);
+                }
                /* for (CoreDrillPlanToRole planToRole : planRoleList) {
                     CoreDrillTaskToRole coreDrillTaskToRole = new CoreDrillTaskToRole();
                     coreDrillTaskToRole.setDrillTaskId(trainingTask.getId());

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

@@ -77,6 +77,7 @@ public interface CoreEduTrainingPlanMapper extends BaseMapper<CoreEduTrainingPla
     List<CoreEduTrainingPlanPageVo> selectChildrenPlan(@Param("request") CoreEduTrainingPlanPageDto request);
 
     List<Long> selectIdByParentId(@Param("planId") Long planId);
+    List<Long> selectIdByParentIdOrId(@Param("planId") Long planId);
     List<Long> selectAllIdByParentId(@Param("planId") Long planId);
 
     int updatePlanStatus(@Param("planId") Long planId, @Param("status") int status);

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

@@ -360,7 +360,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             coreEduTrainingTaskMapper.updateTaskNameByParentPlanId(planId, plan.getPlanName(), range.getStartTime(), range.getEndTime());
         } else {
             doUpdatePlan(plan, request);
-            delAllByParentPlanId(planId);
+            delAllByParentPlanId(plan);
 
             List<CoreEduTrainingPlan> planList = null;
             if (plan.getIssue() == 1) {
@@ -368,6 +368,9 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             } else {
                 planList = ListUtil.list(true, plan);
             }
+            if (checkOrgType(plan.getExecOrgType())) {
+                planList.add(plan);
+            }
             //List<CoreEduTrainingPlan> planList = buildPlanData(plan, null, false);
             List<CoreEduTrainingPlan> finalPlanList = planList;
             TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@@ -392,20 +395,31 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 
     }
 
-    private void delAllByParentPlanId(Long planId) {
-        List<Long> planIdList = coreEduTrainingPlanMapper.selectIdByParentId(planId);
+    private void delAllByParentPlanId(CoreEduTrainingPlan plan) {
+        List<Long> planIdList = coreEduTrainingPlanMapper.selectIdByParentIdOrId(plan.getId());
         if (ObjectUtil.isEmpty(planIdList)) {
             return;
         }
-        coreEduTrainingPlanMapper.deleteBatchIds(planIdList);
+        // 下发给省联社/办事处/行社的计划 在下发时会把id设置为parentId,所以这里不需要删除
+        if (plan.getId().equals(plan.getParentId())) {
+            List<Long> list = new ArrayList<>(planIdList);
+            list.remove(plan.getId());
+            if (!list.isEmpty()) {
+                coreEduTrainingPlanMapper.deleteBatchIds(list);
+
+                coreEduTrainingPlanToRoleMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToRole>()
+                        .in(CoreEduTrainingPlanToRole::getPlanId, list));
+                coreEduTrainingPlanToExecOrgMapper.delete(new LambdaQueryWrapper<CoreEduTrainingPlanToExecOrg>()
+                        .in(CoreEduTrainingPlanToExecOrg::getPlanId, list));
+            }
+        }
+
         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) {
@@ -598,7 +612,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             return all.stream().filter(org -> collect.contains(org.getType())).collect(Collectors.toList());*/
 
 
-            return all.stream().filter(org->ObjectUtil.isNotNull(org.getType())).filter(org -> org.getType().equals(plan.getExecOrgType())).collect(Collectors.toList());
+            return all.stream().filter(org -> ObjectUtil.isNotNull(org.getType())).filter(org -> org.getType().equals(plan.getExecOrgType())).collect(Collectors.toList());
         }
     }
 
@@ -620,8 +634,9 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             List<Long> collect = planList.stream().map(CoreEduTrainingPlan::getId).collect(Collectors.toList());
             coreEduTrainingPlanMapper.updatePlanStatusByIdList(collect, EduTrainingPlanStatus.USING.getCode());
         }
-        if (checkOrgType(plan.getExecOrgType())){
+        if (checkOrgType(plan.getExecOrgType())) {
             planList.add(plan);
+            plan.setParentId(planId);
         }
         //下发后修改为使用中
         plan.setPlanStatus(EduTrainingPlanStatus.USING.getCode());
@@ -679,7 +694,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         List<CoreEduTrainingPlanToExecOrg> planToExecOrgs = new ArrayList<>();
         List<CoreEduTrainingPlan> list = new ArrayList<>();
         for (SysOrgVO sysOrg : planPublishOrgList) {
-            if (checkOrgType(plan.getExecOrgType())){
+            if (checkOrgType(plan.getExecOrgType())) {
                 continue;
             }
             CoreEduTrainingPlan coreEduTrainingPlan = new CoreEduTrainingPlan();

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -476,7 +476,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 .ge(CoreEduTrainingTask::getStartDate, minDateRange)
                 .le(CoreEduTrainingTask::getEndDate, maxDateRange)
                 .eq(CoreEduTrainingTask::getPlanId, plan.getId())
-                .select(CoreEduTrainingTask::getId, CoreEduTrainingTask::getStartDate, CoreEduTrainingTask::getEndDate, CoreEduTrainingTask::getPlanId)
+                .select(CoreEduTrainingTask::getId,CoreEduTrainingTask::getOrgId, CoreEduTrainingTask::getStartDate, CoreEduTrainingTask::getEndDate, CoreEduTrainingTask::getPlanId)
         );
         for (SysOrg org : orgList) {
             for (int i = 1; i <= plan.getExecTimes(); i++) {
@@ -490,6 +490,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 DateRange dateRange = dateRangeMap.get(i);
                 CoreEduTrainingTask trainingTask = new CoreEduTrainingTask();
                 trainingTask.setId(IdWorker.getId());
+                trainingTask.setOrgId(org.getId());
                 trainingTask.setType(plan.getType());
                 trainingTask.setPlanId(plan.getId());
                 trainingTask.setPlanCycle(plan.getPlanCycle());

+ 6 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillPlanMapper.xml

@@ -625,6 +625,12 @@
           and deleted = 0
     </select>
 
+    <select id="selectIdByParentIdOrId" resultType="java.lang.Long">
+        select id
+        from core_drill_plan
+        where (parent_id = #{planId} or id = #{planId})
+          and deleted = 0
+    </select>
     <select id="selectPlanRole" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillPlanRoleVo">
         SELECT distinct r.role_id    as roleId,
                         sr.role_name as roleName

+ 6 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml

@@ -575,6 +575,12 @@
         where parent_id = #{planId}
           and deleted = 0
     </select>
+    <select id="selectIdByParentIdOrId" resultType="java.lang.Long">
+        select id
+        from core_edu_training_plan
+        where (parent_id = #{planId} or id=#{planId})
+          and deleted = 0
+    </select>
 
     <select id="selectAllIdByParentId" resultType="java.lang.Long">
         select id