فهرست منبع

作息变更 演练/培训任务变更bug处理

jingyuanchao 1 سال پیش
والد
کامیت
bb0fe3f403

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

@@ -1290,20 +1290,20 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         //删除任务
         delTaskByIdList(delTaskIdList);
 
-        List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectParentHs(workOrgIdList, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-        final List<Long> collect = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
+        final List<Long> orgIdList = getNeedBuildPlanOrgIdList(workOrgIdList);
         //查询需要生成任务的机构的计划
         List<CoreDrillPlan> planList = coreDrillPlanMapper.selectList(new LambdaQueryWrapper<CoreDrillPlan>()
                 //.eq(CoreDrillPlan::getStandard, 0)
                 .eq(CoreDrillPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
                 .eq(CoreDrillPlan::getPlanCycle, EduTrainingPlanCycleEnum.WEEKLY.getCode())
                 .eq(CoreDrillPlan::getDeleted, 0)
-                .in(CoreDrillPlan::getBelongOrgId, collect)
+                .in(CoreDrillPlan::getBelongOrgId, orgIdList)
                 .select(CoreDrillPlan::getId, CoreDrillPlan::getPlanCycle));
         //此list中Plan对象仅id与planCycle字段有值,
         buildTaskByPlan(planList, today);
     }
 
+
     private void dealTimeWorkChangeForMonthly(WorkTimeChangeEvent event, String todayStr, List<SysWorkTime> futureWorkTime) {
         List<Long> orgIds = event.getOrgIds();
         DateTime today = DateUtil.parse(todayStr, Constants.DAILY_FORMAT);
@@ -1383,14 +1383,14 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 .map(CoreDrillTask::getId).collect(Collectors.toList());
         //删除任务
         delTaskByIdList(delTaskIdList);
-
+        final List<Long> orgIdList = getNeedBuildPlanOrgIdList(workOrgIdList);
         //查询需要生成任务的机构的计划
         List<CoreDrillPlan> planList = coreDrillPlanMapper.selectList(new LambdaQueryWrapper<CoreDrillPlan>()
                 //.eq(CoreDrillPlan::getStandard, 0)
                 .eq(CoreDrillPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
                 .eq(CoreDrillPlan::getPlanCycle, EduTrainingPlanCycleEnum.QUARTERLY.getCode())
                 .eq(CoreDrillPlan::getDeleted, 0)
-                .in(CoreDrillPlan::getBelongOrgId, workOrgIdList)
+                .in(CoreDrillPlan::getBelongOrgId, orgIdList)
                 .select(CoreDrillPlan::getId, CoreDrillPlan::getPlanCycle));
         //此list中Plan对象仅id与planCycle字段有值,
         buildTaskByPlan(planList, today);
@@ -1429,14 +1429,14 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 .map(CoreDrillTask::getId).collect(Collectors.toList());
         //删除任务
         delTaskByIdList(delTaskIdList);
-
+        final List<Long> orgIdList = getNeedBuildPlanOrgIdList(workOrgIdList);
         //查询需要生成任务的机构的计划
         List<CoreDrillPlan> planList = coreDrillPlanMapper.selectList(new LambdaQueryWrapper<CoreDrillPlan>()
                 //.eq(CoreDrillPlan::getStandard, 0)
                 .eq(CoreDrillPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
                 .eq(CoreDrillPlan::getPlanCycle, EduTrainingPlanCycleEnum.HALF_YEARLY.getCode())
                 .eq(CoreDrillPlan::getDeleted, 0)
-                .in(CoreDrillPlan::getBelongOrgId, workOrgIdList)
+                .in(CoreDrillPlan::getBelongOrgId, orgIdList)
                 .select(CoreDrillPlan::getId, CoreDrillPlan::getPlanCycle));
         //此list中Plan对象仅id与planCycle字段有值,
         buildTaskByPlan(planList, today);
@@ -1475,14 +1475,14 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 .map(CoreDrillTask::getId).collect(Collectors.toList());
         //删除任务
         delTaskByIdList(delTaskIdList);
-
+        final List<Long> orgIdList = getNeedBuildPlanOrgIdList(workOrgIdList);
         //查询需要生成任务的机构的计划
         List<CoreDrillPlan> planList = coreDrillPlanMapper.selectList(new LambdaQueryWrapper<CoreDrillPlan>()
                 //.eq(CoreDrillPlan::getStandard, 0)
                 .eq(CoreDrillPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
                 .eq(CoreDrillPlan::getPlanCycle, EduTrainingPlanCycleEnum.YEARLY.getCode())
                 .eq(CoreDrillPlan::getDeleted, 0)
-                .in(CoreDrillPlan::getBelongOrgId, workOrgIdList)
+                .in(CoreDrillPlan::getBelongOrgId, orgIdList)
                 .select(CoreDrillPlan::getId, CoreDrillPlan::getPlanCycle));
         //此list中Plan对象仅id与planCycle字段有值,
         buildTaskByPlan(planList, today);
@@ -1501,6 +1501,20 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         }
     }
 
+
+    private List<Long> getNeedBuildPlanOrgIdList(List<Long> workOrgIdList) {
+        final List<SysOrg> sysOrgList = orgService.selectOrgByIdList(workOrgIdList, SecurityConstants.INNER);
+        //行社及以上机构
+        final List<SysOrg> hsList = sysOrgList.stream().filter(org -> OrgTypeEnum.HANG_SHE.getCode() >= org.getType()).collect(Collectors.toList());
+        //网点及以下机构
+        final List<SysOrg> wdList = sysOrgList.stream().filter(org -> OrgTypeEnum.HANG_SHE.getCode() < org.getType()).collect(Collectors.toList());
+        final List<Long> wdIdList = wdList.stream().map(SysOrg::getId).collect(Collectors.toList());
+
+        //网点及以下机构 需要找所属的行社
+        List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectParentHs(wdIdList, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        return Stream.of(hsList, orgList).flatMap(Collection::stream).map(SysOrg::getId).distinct().collect(Collectors.toList());
+    }
+
     private List<SysWorkTime> selectWorkTimeList(Date now, DrillPlanCycleEnum daily, WorkTimeChangeEvent event) {
         DateRange range = DateUtils.getStartAndEnd(now, daily.getCode());
         String startTime = DateUtil.format(range.getStartTime(), Constants.DAILY_FORMAT);

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

@@ -836,19 +836,20 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
             data.put("image", new ArrayList<>());
         } else {
             List<String> collect = taskUserList.stream().filter(item -> item.getType() == 1 && ObjectUtil.isNotEmpty(item.getSignImage())).map(CoreEduTrainingTaskToUser::getSignImage).collect(Collectors.toList());
-            data.put("image", getFileRealPath(collect,prefixPath,staticsPath));
+            data.put("image", getFileRealPath(collect, prefixPath, staticsPath));
         }
         return data;
     }
 
     /**
      * 获取文件真实地址
-     * @param fileList 文件数组
-     * @param prefixPath 真实磁盘路径,配置于yml中 D:xxx/xxx
+     *
+     * @param fileList    文件数组
+     * @param prefixPath  真实磁盘路径,配置于yml中 D:xxx/xxx
      * @param staticsPath 转发路径 /statics
      * @return
      */
-    private List<String> getFileRealPath(List<String> fileList,String prefixPath,String staticsPath) {
+    private List<String> getFileRealPath(List<String> fileList, String prefixPath, String staticsPath) {
         List<String> list = new ArrayList<>();
         if (ObjectUtil.isEmpty(fileList)) {
             return list;
@@ -1167,8 +1168,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         //删除任务
         delTaskByIdList(delTaskIdList);
 
-        List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectParentHs(workOrgIdList, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-        final List<Long> collect = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
+        final List<Long> collect = getNeedBuildPlanOrgIdList(workOrgIdList);
         //查询需要生成任务的机构的计划
         List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
                 //.eq(CoreEduTrainingPlan::getStandard, 0)
@@ -1214,14 +1214,14 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 .map(CoreEduTrainingTask::getId).collect(Collectors.toList());
         //删除任务
         delTaskByIdList(delTaskIdList);
-
+        List<Long> collect = getNeedBuildPlanOrgIdList(workOrgIdList);
         //查询需要生成任务的机构的计划
         List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
                 //.eq(CoreEduTrainingPlan::getStandard, 0)
                 .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
                 .eq(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.MONTHLY.getCode())
                 .eq(CoreEduTrainingPlan::getDeleted, 0)
-                .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
+                .in(CoreEduTrainingPlan::getBelongOrgId, collect)
                 .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
         //此list中Plan对象仅id与planCycle字段有值,
         buildTaskByPlan(planList, today);
@@ -1260,14 +1260,14 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 .map(CoreEduTrainingTask::getId).collect(Collectors.toList());
         //删除任务
         delTaskByIdList(delTaskIdList);
-
+        List<Long> collect = getNeedBuildPlanOrgIdList(workOrgIdList);
         //查询需要生成任务的机构的计划
         List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
                 //.eq(CoreEduTrainingPlan::getStandard, 0)
                 .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
                 .eq(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.QUARTERLY.getCode())
                 .eq(CoreEduTrainingPlan::getDeleted, 0)
-                .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
+                .in(CoreEduTrainingPlan::getBelongOrgId, collect)
                 .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
         //此list中Plan对象仅id与planCycle字段有值,
         buildTaskByPlan(planList, today);
@@ -1306,14 +1306,14 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 .map(CoreEduTrainingTask::getId).collect(Collectors.toList());
         //删除任务
         delTaskByIdList(delTaskIdList);
-
+        List<Long> collect = getNeedBuildPlanOrgIdList(workOrgIdList);
         //查询需要生成任务的机构的计划
         List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
                 //.eq(CoreEduTrainingPlan::getStandard, 0)
                 .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
                 .eq(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.HALF_YEARLY.getCode())
                 .eq(CoreEduTrainingPlan::getDeleted, 0)
-                .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
+                .in(CoreEduTrainingPlan::getBelongOrgId, collect)
                 .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
         //此list中Plan对象仅id与planCycle字段有值,
         buildTaskByPlan(planList, today);
@@ -1353,14 +1353,14 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 .map(CoreEduTrainingTask::getId).collect(Collectors.toList());
         //删除任务
         delTaskByIdList(delTaskIdList);
-
+        List<Long> collect = getNeedBuildPlanOrgIdList(workOrgIdList);
         //查询需要生成任务的机构的计划
         List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
                 //.eq(CoreEduTrainingPlan::getStandard, 0)
                 .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
                 .eq(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.YEARLY.getCode())
                 .eq(CoreEduTrainingPlan::getDeleted, 0)
-                .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
+                .in(CoreEduTrainingPlan::getBelongOrgId, collect)
                 .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
         //此list中Plan对象仅id与planCycle字段有值,
         buildTaskByPlan(planList, today);
@@ -1377,6 +1377,20 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         workTimeDto.setEndTime(endTime);
         return workTimeService.findWorkTimeByRange(workTimeDto, SecurityConstants.FROM_SOURCE).getData();
     }
+
+
+    private List<Long> getNeedBuildPlanOrgIdList(List<Long> workOrgIdList) {
+        final List<SysOrg> sysOrgList = orgService.selectOrgByIdList(workOrgIdList, SecurityConstants.INNER);
+        //行社及以上机构
+        final List<SysOrg> hsList = sysOrgList.stream().filter(org -> OrgTypeEnum.HANG_SHE.getCode() >= org.getType()).collect(Collectors.toList());
+        //网点及以下机构
+        final List<SysOrg> wdList = sysOrgList.stream().filter(org -> OrgTypeEnum.HANG_SHE.getCode() < org.getType()).collect(Collectors.toList());
+        final List<Long> wdIdList = wdList.stream().map(SysOrg::getId).collect(Collectors.toList());
+
+        //网点及以下机构 需要找所属的行社
+        List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectParentHs(wdIdList, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        return Stream.of(hsList, orgList).flatMap(Collection::stream).map(SysOrg::getId).distinct().collect(Collectors.toList());
+    }
 }
 
 

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -268,7 +268,7 @@
         update core_drill_task
         set status=#{status}
         where end_date <![CDATA[<]]> now()
-          and status in (0, 1)
+          and status not in (2,3,4)
     </update>
 
     <select id="selectWaitRecTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">