浏览代码

演练/培训 任务生成时机构与类型判断bug处理

jingyuanchao 1 年之前
父节点
当前提交
980f8c7faa

+ 1 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/drill/DrillPlanCycleEnum.java

@@ -29,7 +29,7 @@ public enum DrillPlanCycleEnum {
         return desc;
     }
 
-    public static CycleCommonEnum toCommmonEnum(Integer code) {
+    public static CycleCommonEnum toCommonEnum(Integer code) {
         switch (code) {
             case 0:
                 return CycleCommonEnum.NONE;

+ 1 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/edu/EduTrainingPlanCycleEnum.java

@@ -36,7 +36,7 @@ public enum EduTrainingPlanCycleEnum
         return desc;
     }
 
-    public static CycleCommonEnum toCommmonEnum(Integer code){
+    public static CycleCommonEnum toCommonEnum(Integer code){
         switch (code){
             case  0:
                 return CycleCommonEnum.NONE;

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

@@ -362,7 +362,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     public void createTaskForNow(CoreDrillPlanDataVo plan, Date start, Date end) {
         if (plan.getPlanCycle() != 0) {
             //如果不是无周期的计划,那么需要查询出他的时间范围,且需要判断作息时间是否存在
-            DateRange dateRange = DateUtils.getStartAndEnd(new Date(), EduTrainingPlanCycleEnum.toCommmonEnum(plan.getPlanCycle()));
+            DateRange dateRange = DateUtils.getStartAndEnd(new Date(), EduTrainingPlanCycleEnum.toCommonEnum(plan.getPlanCycle()));
             start = dateRange.getStartTime();
             end = dateRange.getEndTime();
         } else {
@@ -400,7 +400,9 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         }
         List<Long> workOrgIdList = workTimeList.stream().filter(time -> ObjectUtil.equal(time.getIsEnable(), WORK))
                 .map(SysWorkTime::getOrgId).collect(Collectors.toList());
-        return orgList.stream().filter(org -> workOrgIdList.contains(org.getId())).collect(Collectors.toList());
+        return orgList.stream()
+                .filter(org -> workOrgIdList.contains(org.getId())||!OrgTypeEnum.YINGYE_WANGDIAN.getCode().equals(org.getType()))
+                .collect(Collectors.toList());
         // return orgList;
 
     }
@@ -421,19 +423,11 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 .eq(CoreDrillTask::getPlanId, plan.getId())
                 .select(CoreDrillTask::getId, CoreDrillTask::getOrgId, CoreDrillTask::getStartDate, CoreDrillTask::getEndDate, CoreDrillTask::getPlanId)
         );
-        //生成任务时,只有特定类型的机构类型才需要判断作息
-        final List<Integer> orgTypeList = Arrays.asList(
-                OrgTypeEnum.YINGYE_WANGDIAN.getCode()
-//                OrgTypeEnum.LIHANG_ZIZHU_YINGHANG.getCode(),
-//                OrgTypeEnum.ZHONGXIN_YEWUKU.getCode(),
-//                OrgTypeEnum.BAOGUAN_XAINGKU.getCode(),
-//                OrgTypeEnum.WANGDIAN_YEWUKU.getCode()
-        );
         for (SysOrg org : orgList) {
             int x = 0;
             for (int i = 1; i <= plan.getExecTimes(); i++) {
                 final LocalDateTime time = DateUtils.toLocalDateTime(DateUtils.getPreciseTime(dateRangeMap.get(i).getEndTime()));
-                if (time.isBefore(LocalDateTime.now()) && orgTypeList.contains(org.getType())) {
+                if (time.isBefore(LocalDateTime.now())) {
                     //如果任务的结束时间 已经小于当前时间则没必要生成任务了,
                     //用于处理周期中生成多次任务,周期初的任务一经生成就无法执行(预期)的问题,
                     log.warn("生成任务时,任务的结束时间已经小于当前时间,本次任务跳过,任务id:{},任务执行机构id:{},任务时间范围:{}-{}", plan.getId(), org.getId(), dateRangeMap.get(i).getStartTime(), dateRangeMap.get(i).getEndTime());
@@ -731,7 +725,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 //此处因为planService会导致循环依赖
                 final CoreDrillPlanDataVo detailPlanData = coreDrillPlanMapper.getDetailPlanData(plan.getId());
                 detailPlanData.setFileList(ObjectUtil.isNotEmpty(detailPlanData.getFile()) ? JSON.parseArray(detailPlanData.getFile(), String.class) : null);
-                DateRange range = DateUtils.getStartAndEnd(finalDate, EduTrainingPlanCycleEnum.toCommmonEnum(plan.getPlanCycle()));
+                DateRange range = DateUtils.getStartAndEnd(finalDate, DrillPlanCycleEnum.toCommonEnum(plan.getPlanCycle()));
                 this.createTaskForNow(detailPlanData, range.getStartTime(), range.getEndTime());
             }, threadPoolTaskExecutor);
         }

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

@@ -414,7 +414,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
 
         if (plan.getPlanCycle() != 0) {
             //如果不是无周期的计划,那么需要查询出他的时间范围
-            DateRange dateRange = DateUtils.getStartAndEnd(new Date(), EduTrainingPlanCycleEnum.toCommmonEnum(plan.getPlanCycle()));
+            DateRange dateRange = DateUtils.getStartAndEnd(new Date(), EduTrainingPlanCycleEnum.toCommonEnum(plan.getPlanCycle()));
             start = dateRange.getStartTime();
             end = dateRange.getEndTime();
         } else {
@@ -457,7 +457,9 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         }
         List<Long> workOrgIdList = workTimeList.stream().filter(time -> ObjectUtil.equal(time.getIsEnable(), WORK))
                 .map(SysWorkTime::getOrgId).collect(Collectors.toList());
-        return orgList.stream().filter(org -> workOrgIdList.contains(org.getId())).collect(Collectors.toList());
+        return orgList.stream()
+                .filter(org -> workOrgIdList.contains(org.getId())||!OrgTypeEnum.YINGYE_WANGDIAN.getCode().equals(org.getType()))
+                .collect(Collectors.toList());
         // return orgList;
 
     }
@@ -479,19 +481,12 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 .eq(CoreEduTrainingTask::getPlanId, plan.getId())
                 .select(CoreEduTrainingTask::getId, CoreEduTrainingTask::getOrgId, CoreEduTrainingTask::getStartDate, CoreEduTrainingTask::getEndDate, CoreEduTrainingTask::getPlanId)
         );
-        //生成任务时,只有特定类型的机构类型才需要判断作息
-        final List<Integer> orgTypeList = Arrays.asList(
-                OrgTypeEnum.YINGYE_WANGDIAN.getCode()
-//                OrgTypeEnum.LIHANG_ZIZHU_YINGHANG.getCode(),
-//                OrgTypeEnum.ZHONGXIN_YEWUKU.getCode(),
-//                OrgTypeEnum.BAOGUAN_XAINGKU.getCode(),
-//                OrgTypeEnum.WANGDIAN_YEWUKU.getCode()
-        );
+
         for (SysOrg org : orgList) {
             int x = 0;
             for (int i = 1; i <= plan.getExecTimes(); i++) {
                 final LocalDateTime time = DateUtils.toLocalDateTime(DateUtils.getPreciseTime(dateRangeMap.get(i).getEndTime()));
-                if (time.isBefore(LocalDateTime.now()) && orgTypeList.contains(org.getType())) {
+                if (time.isBefore(LocalDateTime.now())) {
                     //如果任务的结束时间 已经小于当前时间则没必要生成任务了,
                     //用于处理周期中生成多次任务,周期初的任务一经生成就无法执行(预期)的问题,
                     log.warn("生成任务时,任务的结束时间已经小于当前时间,本次任务跳过,任务id:{},任务执行机构id:{},任务时间范围:{}-{}", plan.getId(), org.getId(), dateRangeMap.get(i).getStartTime(), dateRangeMap.get(i).getEndTime());

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskBuilderServiceImpl.java

@@ -385,7 +385,7 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
             dateRange = new DateRange(DateUtil.beginOfDay(plan.getStartTime()).setField(DateField.MILLISECOND, 0), DateUtil.endOfDay(plan.getEndTime()).setField(DateField.MILLISECOND, 0));
         } else {
             //周期任务获取计划时间
-            dateRange = DateUtils.getStartAndEnd(dateTime, EduTrainingPlanCycleEnum.toCommmonEnum(Integer.parseInt(plan.getPlanCycle())));
+            dateRange = DateUtils.getStartAndEnd(dateTime, EduTrainingPlanCycleEnum.toCommonEnum(Integer.parseInt(plan.getPlanCycle())));
         }
         Map<Integer, DateRange> dateRanges = DateUtils.splitDateRange(dateRange.getStartTime(), dateRange.getEndTime(), plan.getPlanFrequency().intValue());
         //判断作息(无周期排开)