Kaynağa Gözat

监控调阅下发 可以选择具体机构, 代码重构

zhulu 1 yıl önce
ebeveyn
işleme
ba6123f3e8

Dosya farkı çok büyük olduğundan ihmal edildi
+ 650 - 323
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java


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

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@@ -26,7 +27,9 @@ import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.TaskCreatingServiceImplBase;
 import com.xunmei.core.access.domain.TMonitoringRetrievalPlan;
+import com.xunmei.core.access.domain.TMonitoringRetrievalPlanToExecOrg;
 import com.xunmei.core.access.mapper.CoreMonitoringTaskRegistrationMapper;
+import com.xunmei.core.access.mapper.TMonitoringRetrievalPlanToExecOrgMapper;
 import com.xunmei.core.access.service.ITMonitoringRetrievalPlanService;
 import com.xunmei.core.retrieval.mapper.CoreMonitoringRetrievalTaskMapper;
 import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskBuilderService;
@@ -72,13 +75,16 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
     @Autowired
     CoreSafetyExceptionDataMapper exceptionDataMapper;
 
+    @Autowired
+    TMonitoringRetrievalPlanToExecOrgMapper tMonitoringRetrievalPlanToExecOrgMapper;
+
     @Async
     /**
      * 无周期任务生成
      */
     @Override
     public void noCycleTask(List<TMonitoringRetrievalPlan> planList) {
-        createTask(planList);
+        createAndSaveTask(planList);
     }
 
     @Async
@@ -94,33 +100,64 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         if (!hasKey) {
             RedisUtils.setCacheObject(redisKey, parentPlanId, Duration.ofMillis(1000 * 60*5));
         }
-        createTask(planList);
+        createAndSaveTask(planList);
         RedisUtils.deleteObject(redisKey);
     }
 
-    private void createTask(List<TMonitoringRetrievalPlan> planList)
+    private List<SysOrg> getExecOrgList(List<Long> planExecOrgIds, Integer execOrgType, String belongOrgPath) {
+        if (ObjectUtil.isEmpty(planExecOrgIds)) {
+            return RemoteCallHandlerExecutor.executeRemoteCall(() ->
+                            orgService.selectByOrgPathAndOrgType(belongOrgPath, execOrgType, SecurityConstants.INNER),
+                    ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        } else {
+            return RemoteCallHandlerExecutor.executeRemoteCall(() ->
+                            orgService.selectOrgByIdList(planExecOrgIds, SecurityConstants.INNER),
+                    ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        }
+    }
+
+
+
+    private void createAndSaveTask(List<TMonitoringRetrievalPlan> planList)
+    {
+         List<CoreMonitoringRetrievalTask> allTask = createTask(planList, null);
+        this.saveBatch(allTask);
+    }
+
+    private List<CoreMonitoringRetrievalTask> createTask(List<TMonitoringRetrievalPlan> planList, LocalDate taskTime)
     {
-        List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         List<CoreMonitoringRetrievalTask> taskList = new ArrayList<>();
-        LocalDate taskTime = planList.get(0).getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        if(ObjectUtil.isNull(taskTime)){
+            taskTime = planList.get(0).getStartTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        }
+        LocalDate taskTime1=taskTime;
+
         for (TMonitoringRetrievalPlan plan : planList) {
+
+            List<Long> execOrgIds = tMonitoringRetrievalPlanToExecOrgMapper.selectByMap(MapUtil.of("plan_id", plan.getId())).stream().map(x->x.getOrgId()).collect(Collectors.toList());
+
+            final List<SysOrg> execOrgList = getExecOrgList(execOrgIds, Integer.parseInt(plan.getOrgType()), plan.getOrgPath());
+
             //获取计划关联的机构
-            List<SysOrg> listByType = orgList.stream().filter(r -> r.getId().equals(plan.getOrgId()) && r.getDeleted() == 0 && r.getIsLock().equals(0))
-                    .collect(Collectors.toList());
-            if (CollectionUtil.isNotEmpty(listByType)) {
-                List<CoreMonitoringRetrievalTask> list = this.buildCoreMonitoringRetrievalTask(plan, taskTime, listByType.get(0));
-                if (CollectionUtil.isNotEmpty(list)) {
-                    taskList.addAll(list);
-                }
+//            List<SysOrg> listByType = orgList.stream().filter(r -> r.getId().equals(plan.getOrgId()) && r.getDeleted() == 0 && r.getIsLock().equals(0))
+//                    .collect(Collectors.toList());
+            if (CollectionUtil.isNotEmpty(execOrgList)) {
+                execOrgList.stream().forEach(org->{
+                    List<CoreMonitoringRetrievalTask> list = this.buildCoreMonitoringRetrievalTask(plan, taskTime1, org);
+                    if (CollectionUtil.isNotEmpty(list)) {
+                        taskList.addAll(list);
+                    }
+                });
             }
         }
+        List<CoreMonitoringRetrievalTask> listAll = new ArrayList<>();
         //立即生效的计划要排除截至时间在当前时间之前的数据
         List<CoreMonitoringRetrievalTask> lista = taskList.stream().filter(r -> r.getPlanEndTime().after(new Date())).collect(Collectors.toList());
 /*        if (CollectionUtil.isNotEmpty(lista)) {
             this.saveBatch(lista);
         }*/
         if (CollectionUtil.isNotEmpty(lista)) {
-            List<CoreMonitoringRetrievalTask> listAll = new ArrayList<>();
+
             //对list进行重新编号和保存
             //对lista 按机构进行分组
             Map<Long, List<CoreMonitoringRetrievalTask>> map = lista.stream().collect(Collectors.groupingBy(CoreMonitoringRetrievalTask::getOrgId));
@@ -138,11 +175,9 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
                 }
                 listAll.addAll(listb);
             }
-
-            this.saveBatch(listAll);
         }
+        return listAll;
     }
-
     /**
      * 每天生成日任务 如果当天是周一还需生成周任务
      *
@@ -160,13 +195,17 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         //是周一生成周任务
         if (taskTime.getDayOfWeek() == DayOfWeek.MONDAY) {
-            List<CoreMonitoringRetrievalTask> listWeek = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.WEEKCYCLE.getCode(), taskTime, orgList);
+            List<TMonitoringRetrievalPlan> buildTaskWeekPlanList = getBuildTaskPlanList(RetrievalTaskCycle.WEEKCYCLE.getCode());
+            List<CoreMonitoringRetrievalTask> listWeek =  createTask(buildTaskWeekPlanList,taskTime);
+//            List<CoreMonitoringRetrievalTask> listWeek = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.WEEKCYCLE.getCode(), taskTime, orgList);
             if (CollectionUtil.isNotEmpty(listWeek)) {
                 list.addAll(listWeek);
             }
         }
         //生成每日任务
-        List<CoreMonitoringRetrievalTask> listDay = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.DAYCYCLE.getCode(), taskTime, orgList);
+//        List<CoreMonitoringRetrievalTask> listDay = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.DAYCYCLE.getCode(), taskTime, orgList);
+        List<TMonitoringRetrievalPlan> buildTaskDayPlanList = getBuildTaskPlanList(RetrievalTaskCycle.DAYCYCLE.getCode());
+        List<CoreMonitoringRetrievalTask> listDay =  createTask(buildTaskDayPlanList,taskTime);
         if (CollectionUtil.isNotEmpty(listDay)) {
             list.addAll(listDay);
         }
@@ -189,7 +228,7 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         }
         List<CoreMonitoringRetrievalTask> list = new ArrayList<>();
         //获取所有机构
-        List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+//        List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         //判断taskTime不是每月1号将taskTime设置为每月1号
         if (taskTime.getDayOfMonth() != 1) {
             taskTime = taskTime.withDayOfMonth(1);
@@ -197,17 +236,23 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         //1.1生成周期为每月,每季,每半年,每年的任务
         if (taskTime.getMonthValue() == 1) {
             //季度任务
-            List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
+//            List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
+            List<TMonitoringRetrievalPlan> buildTaskQuarterPlanList = getBuildTaskPlanList(RetrievalTaskCycle.QUARTERCYCLE.getCode());
+            List<CoreMonitoringRetrievalTask> listQuarter =  createTask(buildTaskQuarterPlanList,taskTime);
             if (CollectionUtil.isNotEmpty(listQuarter)) {
                 list.addAll(listQuarter);
             }
             //半年任务
-            List<CoreMonitoringRetrievalTask> listHalfYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.HALFYEARCYCLE.getCode(), taskTime, orgList);
+//            List<CoreMonitoringRetrievalTask> listHalfYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.HALFYEARCYCLE.getCode(), taskTime, orgList);
+            List<TMonitoringRetrievalPlan> buildTaskHalfYearPlanList = getBuildTaskPlanList(RetrievalTaskCycle.HALFYEARCYCLE.getCode());
+            List<CoreMonitoringRetrievalTask> listHalfYear =  createTask(buildTaskHalfYearPlanList,taskTime);
             if (CollectionUtil.isNotEmpty(listHalfYear)) {
                 list.addAll(listHalfYear);
             }
             //年任务
-            List<CoreMonitoringRetrievalTask> listYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.YEARCYCLE.getCode(), taskTime, orgList);
+//            List<CoreMonitoringRetrievalTask> listYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.YEARCYCLE.getCode(), taskTime, orgList);
+            List<TMonitoringRetrievalPlan> buildTaskYearPlanList = getBuildTaskPlanList(RetrievalTaskCycle.YEARCYCLE.getCode());
+            List<CoreMonitoringRetrievalTask> listYear =  createTask(buildTaskYearPlanList,taskTime);
             if (CollectionUtil.isNotEmpty(listYear)) {
                 list.addAll(listYear);
             }
@@ -215,7 +260,9 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         //4.1||10.1日生成周期为每月,每季
         if (taskTime.getMonthValue() == 4 || taskTime.getMonthValue() == 10) {
             //季度任务
-            List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
+//            List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
+            List<TMonitoringRetrievalPlan> buildTaskQuarterPlanList = getBuildTaskPlanList(RetrievalTaskCycle.QUARTERCYCLE.getCode());
+            List<CoreMonitoringRetrievalTask> listQuarter =  createTask(buildTaskQuarterPlanList,taskTime);
             if (CollectionUtil.isNotEmpty(listQuarter)) {
                 list.addAll(listQuarter);
             }
@@ -223,18 +270,24 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         //7.1日获取执行周期为每月,每季,每半年的
         if (taskTime.getMonthValue() == 7) {
             //季度任务
-            List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
+//            List<CoreMonitoringRetrievalTask> listQuarter = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.QUARTERCYCLE.getCode(), taskTime, orgList);
+            List<TMonitoringRetrievalPlan> buildTaskQuarterPlanList = getBuildTaskPlanList(RetrievalTaskCycle.QUARTERCYCLE.getCode());
+            List<CoreMonitoringRetrievalTask> listQuarter =  createTask(buildTaskQuarterPlanList,taskTime);
             if (CollectionUtil.isNotEmpty(listQuarter)) {
                 list.addAll(listQuarter);
             }
             //半年任务
-            List<CoreMonitoringRetrievalTask> listHalfYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.HALFYEARCYCLE.getCode(), taskTime, orgList);
+//            List<CoreMonitoringRetrievalTask> listHalfYear = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.HALFYEARCYCLE.getCode(), taskTime, orgList);
+            List<TMonitoringRetrievalPlan> buildTaskHalfYearPlanList = getBuildTaskPlanList(RetrievalTaskCycle.HALFYEARCYCLE.getCode());
+            List<CoreMonitoringRetrievalTask> listHalfYear =  createTask(buildTaskHalfYearPlanList,taskTime);
             if (CollectionUtil.isNotEmpty(listHalfYear)) {
                 list.addAll(listHalfYear);
             }
         }
         //所有日期都要生成月任务
-        List<CoreMonitoringRetrievalTask> listMonth = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.MONTHCYCLE.getCode(), taskTime, orgList);
+//        List<CoreMonitoringRetrievalTask> listMonth = this.buildCoreMonitoringRetrievalTask(RetrievalTaskCycle.MONTHCYCLE.getCode(), taskTime, orgList);
+        List<TMonitoringRetrievalPlan> buildTaskMonthPlanList = getBuildTaskPlanList(RetrievalTaskCycle.HALFYEARCYCLE.getCode());
+        List<CoreMonitoringRetrievalTask> listMonth =  createTask(buildTaskMonthPlanList,taskTime);
         if (CollectionUtil.isNotEmpty(listMonth)) {
             list.addAll(listMonth);
         }
@@ -350,6 +403,16 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         coreMonitoringRetrievalTaskMapper.updateDeleteTaskByPlanId(planId, isDeleted);
     }
 
+    private List<TMonitoringRetrievalPlan> getBuildTaskPlanList(Integer cycle){
+        //获取计划
+        QueryWrapper<TMonitoringRetrievalPlan> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getPlanCycle, cycle);
+        queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getPlanStatus, 1);
+        queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getIsDeleted, 0);
+        queryWrapper.lambda().eq(TMonitoringRetrievalPlan::getCreateType, 1);
+        return itMonitoringRetrievalPlanService.list(queryWrapper);
+    }
+
     /**
      * @param cycle    周期
      * @param taskTime 日期

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

@@ -345,7 +345,8 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
                 List<TMonitoringRetrievalPlan> tMonitoringRetrievalPlans = new ArrayList<>();
                 if (sysOrg1.getType() == 1 && plan.getIsDistribute().equals("1")) {
                     itMonitoringRetrievalPlanService.distribute(plan.getId(), plan.getImmediately());
-                } else {
+                }
+                else {
                     SysOrg sysOrg = new SysOrg();
                     sysOrg.setPath(plan.getOrgPath());
                     sysOrg.setType(Integer.valueOf(tMonitoringRetrievalPlan.getOrgType()));

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor