Kaynağa Gözat

所有计划生成任务时,实现只有营业网点与作息相关

jiawuxian 1 yıl önce
ebeveyn
işleme
6985f7c60c

+ 12 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/TaskCreatingServiceImplBase.java

@@ -179,6 +179,17 @@ public abstract class TaskCreatingServiceImplBase<M extends BaseMapper<T>, T> ex
 //    }
 
     /**
+     * 返回机构是否需要使用作息
+     * @param org
+     * @return
+     */
+    protected boolean needUsedWorkTime(SysOrg org){
+        List< Integer> orgTypes= Arrays.asList(OrgTypeEnum.YINGYE_WANGDIAN.getCode());
+
+        return  orgTypes.contains(org.getType());
+    }
+
+    /**
      * 获取机构某个周期的作息
      *
      * @param now
@@ -361,7 +372,7 @@ public abstract class TaskCreatingServiceImplBase<M extends BaseMapper<T>, T> ex
      * @param frequency
      * @param start
      * @param end
-     * @param workTimes,则认为全是营业
+     * @param workTimes,为null则认为全是营业
      * @return
      */
     protected Map<Short, StartEndTime> splitTaskTime(Short frequency, CycleCommonEnum cycle, Date start, Date end, List<SysWorkTime> workTimes) {

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

@@ -422,11 +422,11 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         );
         //生成任务时,只有特定类型的机构类型才需要判断作息
         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()
+                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;

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

@@ -481,11 +481,11 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         );
         //生成任务时,只有特定类型的机构类型才需要判断作息
         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()
+                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;

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ApiPlanController.java

@@ -186,10 +186,10 @@ public class ApiPlanController {
         return AjaxResult.success();
     }
 
-    @ApiOperation(value = "撤回后下发")
+    @ApiOperation(value = "下发子计划")
     @GetMapping(value = "/distributeCheHui/{id}")
 //    @RequiresPermissions("core:plan:findById")
-    public AjaxResult distributeCheHui(@PathVariable Long id) {
+    public AjaxResult distributeChild(@PathVariable Long id) {
         AppPlan planOld =appPlanService.getById(id);
         AppPlan planNew = appPlanService.distributeCheHui(id);
         //撤回后下发,不重新生成任务

+ 2 - 13
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/ResumptionTaskBusiness.java

@@ -120,21 +120,10 @@ public class ResumptionTaskBusiness extends TaskCreatingServiceImplBase<Resumpti
             CycleCommonEnum cycleCommonEnum = CycleCommonEnum.getEnum(appPlan.getPlanCycle());
             DateRange range = DateUtils.getStartAndEnd(date, cycleCommonEnum);
             Map<Long, List<SysWorkTime>> workTimes = orgDutyOrWorkTimes(new Date(), cycleCommonEnum, orgs.stream().map(SysOrg::getId).collect(Collectors.toList()));
-//            if (ObjectUtil.equal(appPlan.getPlanExec(), 5)) {
-//                workTimes = orgDutyTimes(new Date(), cycleCommonEnum, orgs.stream().map(SysOrg::getId).collect(Collectors.toList()));
-//            } else {
-//                workTimes = orgWorkingTimes(new Date(), cycleCommonEnum, orgs.stream().map(SysOrg::getId).collect(Collectors.toList()));
-//            }
 
             for (SysOrg org : orgs) {
-//                Long orgId = org.getId();
-//                if (!workTimes.containsKey(orgId) || ObjectUtil.isNull(workTimes.get(orgId)) || CollectionUtils.isEmpty(workTimes.get(orgId))) {
-//                    continue;
-//                }
-
                 List<Resumption> tasks;
                 if (ObjectUtil.equal(CycleCommonEnum.DAILY.getCode(), appPlan.getPlanCycle())) {
-//                    SysWorkTime workTime = workTimes.get(orgId).get(0);
                     tasks = buildResumptions(appPlan, org, null, new Date(), workTimes);
                 } else {
                     tasks = buildResumptions(appPlan, org, range.getStartTime(), range.getEndTime(), null, workTimes);
@@ -393,7 +382,7 @@ public class ResumptionTaskBusiness extends TaskCreatingServiceImplBase<Resumpti
     private List<Resumption> buildResumptions(AppPlan appPlan, SysOrg execOrg, List<Short> executedOrders, Date date, Map<Long, List<SysWorkTime>> workTimes) {
         DateTime planstartTime = null;
         DateTime planendTime = null;
-        if (!ObjectUtil.equal(execOrg.getType(), OrgTypeEnum.YINGYE_WANGDIAN.getCode())) {
+        if (!needUsedWorkTime(execOrg)) {
             //非营业网点的机构,与作息无关
             planstartTime = DateUtil.beginOfDay(date);
             planendTime = DateUtil.endOfDay(date);
@@ -497,7 +486,7 @@ public class ResumptionTaskBusiness extends TaskCreatingServiceImplBase<Resumpti
             count = Short.parseShort(appPlan.getCount());
         }
 
-        if (ObjectUtil.equal(execOrg.getType(), OrgTypeEnum.YINGYE_WANGDIAN.getCode())) {
+        if (needUsedWorkTime(execOrg)) {
             if (!allWorkTimes.containsKey(execOrg.getId()) || CollectionUtils.isEmpty(allWorkTimes.get(execOrg.getId()))) {
                 return new ArrayList<>();
             }

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

@@ -13,6 +13,7 @@ import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
 import com.xunmei.common.core.domain.retrieval.vo.*;
+import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.RetrievalTaskCycle;
 import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
@@ -392,7 +393,11 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         Map<Integer, DateRange> workingDateRanges = new HashMap<>();
         for (Integer key : dateRanges.keySet()) {
             DateRange dateRange1 = dateRanges.get(key);
-            boolean flag = checkWorkTime(dateRange1.getStartTime(), dateRange1.getEndTime(), sysOrg.getId());
+            boolean flag = true;
+            if (ObjectUtil.equal(sysOrg.getType(), OrgTypeEnum.YINGYE_WANGDIAN.getCode())) {
+                flag = checkWorkTime(dateRange1.getStartTime(), dateRange1.getEndTime(), sysOrg.getId());
+            }
+
             if (flag == true && dateRange1.getEndTime().after(new Date())) {
                 workingDateRanges.put(idx, dateRange1);
                 idx++;
@@ -564,7 +569,7 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
                     }
                 }
                 Optional<SysOrg> hsOrg = hsOrgs.stream().filter(hs -> s.getPath().startsWith(hs.getPath())).findFirst();
-                if(!hsOrg.isPresent()){
+                if (!hsOrg.isPresent()) {
                     continue;
                 }
                 //计划的机构id不是当前机构的直属父机构,不生成任务,计划的机构类型不是当前机构的机构类型不生成任务

+ 25 - 11
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/job/SafetyCheckJobBusiness.java

@@ -12,6 +12,7 @@ import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.common.core.enums.CycleCommonEnum;
+import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.IDHelper;
@@ -34,6 +35,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.lang.reflect.Array;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -130,6 +132,7 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
         return workTimeService.getWorkTime(map, SecurityConstants.INNER);
     }
 
+
     /**
      * 有周期计划生成任务
      *
@@ -247,9 +250,9 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                     checkOrgs.add(org);
                 }
 
-                List<Integer> orgTypes = checkOrgTypes.stream().filter(t -> ObjectUtil.notEqual(t,execOrgType)).collect(Collectors.toList());
-                if(CollectionUtil.isNotEmpty(orgTypes)){
-                    List<SysOrg>  checkOrgsTmp = orgService.findByOrgTypesAndParent(new FindOrgTypes(orgTypes, org.getPath()), SecurityConstants.INNER);
+                List<Integer> orgTypes = checkOrgTypes.stream().filter(t -> ObjectUtil.notEqual(t, execOrgType)).collect(Collectors.toList());
+                if (CollectionUtil.isNotEmpty(orgTypes)) {
+                    List<SysOrg> checkOrgsTmp = orgService.findByOrgTypesAndParent(new FindOrgTypes(orgTypes, org.getPath()), SecurityConstants.INNER);
                     checkOrgs.addAll(checkOrgsTmp);
                 }
             } else {
@@ -348,9 +351,9 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                     checkOrgs.add(org);
                 }
 
-                List<Integer> orgTypes = checkOrgTypes.stream().filter(t -> ObjectUtil.notEqual(t,execOrgType)).collect(Collectors.toList());
-                if(CollectionUtil.isNotEmpty(orgTypes)){
-                    List<SysOrg>  checkOrgsTmp = orgService.findByOrgTypesAndParent(new FindOrgTypes(orgTypes, org.getPath()), SecurityConstants.INNER);
+                List<Integer> orgTypes = checkOrgTypes.stream().filter(t -> ObjectUtil.notEqual(t, execOrgType)).collect(Collectors.toList());
+                if (CollectionUtil.isNotEmpty(orgTypes)) {
+                    List<SysOrg> checkOrgsTmp = orgService.findByOrgTypesAndParent(new FindOrgTypes(orgTypes, org.getPath()), SecurityConstants.INNER);
                     checkOrgs.addAll(checkOrgsTmp);
                 }
             } else {
@@ -409,14 +412,25 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                 code = CycleCommonEnum.getEnum(Math.toIntExact(plan.getPlanCycle()) + 2);
                 dateRange = DateUtils.getStartAndEnd(new Date(), code);
             }
-            //获取当前受检机构当前周期营业中的作息
-            List<SysWorkTime> workTimes = getWorkTime(dateRange.getStartTime(), dateRange.getEndTime(), org.getId());
             //配合履职次数为short类型
             short coun = Short.parseShort(plan.getCount().toString());
+            //获取当前受检机构当前周期营业中的作息
+            Map<Short, StartEndTime> rangeMap = null;
+            if (needUsedWorkTime(org)) {
+                List<SysWorkTime> workTimes = getWorkTime(dateRange.getStartTime(), dateRange.getEndTime(), org.getId());
+                if (CollectionUtil.isEmpty(workTimes)) {
+                    continue;
+                }
+                rangeMap = splitTaskTime(coun, CycleCommonEnum.getEnum(cycleCode),
+                        dateRange.getStartTime(), dateRange.getEndTime(), workTimes);
+            } else {
+                rangeMap = splitTaskTime(coun, CycleCommonEnum.getEnum(cycleCode),
+                        dateRange.getStartTime(), dateRange.getEndTime(), null);
+            }
+
             //划分时间
-            Map<Short, StartEndTime> rangeMap = splitTaskTime(coun, CycleCommonEnum.getEnum(cycleCode),
-                    dateRange.getStartTime(), dateRange.getEndTime(), workTimes);
-            short cou=1;
+
+            short cou = 1;
             for (short i = 1; i <= coun; i++) {
                 //如果不存在当前次数的时间划分结果
                 if (!rangeMap.containsKey(i)) {