Эх сурвалжийг харах

处理监控调阅定时更改过期任务的问题

ouyang 1 жил өмнө
parent
commit
1818bae06b

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

@@ -399,7 +399,7 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
                 flag = checkWorkTime(dateRange1.getStartTime(), dateRange1.getEndTime(), sysOrg.getId());
             }
 
-            if (flag == true && dateRange1.getEndTime().after(new Date())) {
+            if (flag == true ) {
                 workingDateRanges.put(idx, dateRange1);
                 idx++;
             }
@@ -482,6 +482,7 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         Date today = new Date();
         //要删除的任务
         List<CoreMonitoringRetrievalTask> deleteTaskList = new ArrayList<>();
+        List<CoreMonitoringRetrievalTask> baoliuTaskList = new ArrayList<>();
         //要重新生成任务的机构和计划
         List<KeyValueVo> keyValues = new ArrayList<>();
 
@@ -504,6 +505,7 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
 
         Map<String, Object> allMap = this.buildDeleteTaskList(dayObjectMap, weekObjectMap, monthObjectMap, quarterObjectMap, halfYearObjectMap, yearObjectMap);
         deleteTaskList = (List<CoreMonitoringRetrievalTask>) allMap.get("deleteTaskList");
+        baoliuTaskList = (List<CoreMonitoringRetrievalTask>) allMap.get("baoliuTaskList");
         keyValues = (List<KeyValueVo>) allMap.get("keyValues");
         //删除任务
         if (CollectionUtil.isNotEmpty(deleteTaskList)) {
@@ -511,7 +513,7 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         }
         //生成新的任务
         // if(CollectionUtil.isNotEmpty(keyValues)){
-        this.rebuildtask(keyValues, ymdDate, orgIds);
+        this.rebuildtask(keyValues, ymdDate, orgIds,baoliuTaskList);
         // }
 
     }
@@ -519,26 +521,32 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
     private Map<String, Object> buildDeleteTaskList(Map<String, Object>... ObjMaps) {
         Map<String, Object> deleteTaskListMap = new HashMap<>();
         List<CoreMonitoringRetrievalTask> deleteTaskList = new ArrayList<>();
+        List<CoreMonitoringRetrievalTask> baoliuTaskList = new ArrayList<>();
         List<KeyValueVo> keyValues = new ArrayList<>();
         for (Map<String, Object> objMap : ObjMaps) {
-            if (objMap != null && objMap.containsKey("deleteTaskList") && objMap.containsKey("keyValues")) {
+           /* if (objMap != null && objMap.containsKey("deleteTaskList") && objMap.containsKey("keyValues")) {*/
                 List<CoreMonitoringRetrievalTask> listTask = (List<CoreMonitoringRetrievalTask>) objMap.get("deleteTaskList");
+                List<CoreMonitoringRetrievalTask> listTaska = (List<CoreMonitoringRetrievalTask>) objMap.get("baoliuTaskList");
                 List<KeyValueVo> keyValueList = (List<KeyValueVo>) objMap.get("keyValues");
                 if (CollectionUtil.isNotEmpty(listTask)) {
                     deleteTaskList.addAll(listTask);
                 }
+            if (CollectionUtil.isNotEmpty(listTaska)) {
+                baoliuTaskList.addAll(listTaska);
+            }
                 if (CollectionUtil.isNotEmpty(keyValueList)) {
                     keyValues.addAll(keyValueList);
                 }
-            }
+            //}
 
         }
         deleteTaskListMap.put("deleteTaskList", deleteTaskList);
+        deleteTaskListMap.put("baoliuTaskList", baoliuTaskList);
         deleteTaskListMap.put("keyValues", keyValues);
         return deleteTaskListMap;
     }
 
-    private void rebuildtask(List<KeyValueVo> keyValues, Date taskTime, List<Long> orgIds) {
+    private void rebuildtask(List<KeyValueVo> keyValues, Date taskTime, List<Long> orgIds, List<CoreMonitoringRetrievalTask> baoliuTaskList) {
         //获取所有机构
         List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.findAllOrg(SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         List<SysOrg> orgs = orgList.stream().filter(r -> orgIds.contains(r.getId())).collect(Collectors.toList());
@@ -614,17 +622,29 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
             if (CollectionUtil.isNotEmpty(listByType)) {
                 List<CoreMonitoringRetrievalTask> list = this.buildCoreMonitoringRetrievalTask(plan, localDate, listByType.get(0));
                 if (CollectionUtil.isNotEmpty(list)) {
-                    if (!plan.getPlanCycle().equals(RetrievalTaskCycle.DAYCYCLE.getCode().toString())) {
-                        List<CoreMonitoringRetrievalTask> lista = list.stream().filter(r -> r.getPlanEndTime().after(taskTime)).collect(Collectors.toList());
+                    /**if (plan.getPlanCycle().equals(RetrievalTaskCycle.DAYCYCLE.getCode().toString())) {**/
+                        List<CoreMonitoringRetrievalTask> lista = list.stream().filter(r -> r.getPlanEndTime().after(new Date())).collect(Collectors.toList());
                         if (CollectionUtil.isNotEmpty(lista)) {
-                            taskList.addAll(lista);
+                            //获取保留的数据
+                            List<CoreMonitoringRetrievalTask> listbl =baoliuTaskList.stream().filter(r->r.getPlanId().equals(plan.getId())&&r.getOrgId().equals(r.getOrgId())).collect(Collectors.toList());
+                            //去掉保留的数据
+                            if(CollectionUtil.isNotEmpty(listbl)){
+                                List<Integer> integers = listbl.stream().map(m->m.getOrderNum()).collect(Collectors.toList());
+                                List<CoreMonitoringRetrievalTask> listb = lista.stream().filter(r->!integers.contains(r.getOrderNum())).collect(Collectors.toList());
+                                if(CollectionUtil.isNotEmpty(listb)){
+                                    listb.forEach(r->r.setBatchNum(listbl.get(0).getBatchNum()));
+                                }
+                                taskList.addAll(listb);
+                            }else{
+                                taskList.addAll(lista);
+                            }
                         }
-                    } else {
+                    /**} else {
                         List<CoreMonitoringRetrievalTask> lista = list.stream().filter(r -> r.getPlanEndTime().after(new Date())).collect(Collectors.toList());
                         if (CollectionUtil.isNotEmpty(lista)) {
                             taskList.addAll(lista);
                         }
-                    }
+                    }**/
                 }
             }
         }
@@ -650,6 +670,7 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
         List<CoreMonitoringRetrievalTask> taskList = this.list(queryWrapper);*/
         List<CoreMonitoringRetrievalTask> taskList = baseMapper.selectTaskList(taskTime, orgIds, cycle);
         List<CoreMonitoringRetrievalTask> deleteTaskList = new ArrayList<>();
+        List<CoreMonitoringRetrievalTask> baoliuTaskList = new ArrayList<>();
         List<KeyValueVo> keyValues = new ArrayList<>();
         if (CollectionUtil.isNotEmpty(taskList)) {
             //将数据按机构分组
@@ -660,7 +681,22 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
                 Map<Long, List<CoreMonitoringRetrievalTask>> taskMap1 = taskList1.stream().collect(Collectors.groupingBy(CoreMonitoringRetrievalTask::getBatchNum));
                 for (Long key1 : taskMap1.keySet()) {
                     List<CoreMonitoringRetrievalTask> taskList2 = taskMap1.get(key1);
-                    int num = (int) taskList2.stream().filter(t -> t.getStatus().equals(2)).count();
+                      //获取要删除的数据
+                    List<CoreMonitoringRetrievalTask> taskList3 =taskList2.stream().filter(t->!t.getStatus().equals("2")).collect(Collectors.toList());
+                    //获取要留下的任务
+                    List<CoreMonitoringRetrievalTask> taskList4 =taskList2.stream().filter(t->t.getStatus().equals("2")).collect(Collectors.toList());
+                     if(CollectionUtil.isNotEmpty(taskList3)){
+                         deleteTaskList.addAll(taskList3);
+                     }
+                    if(CollectionUtil.isNotEmpty(taskList4)){
+                        baoliuTaskList.addAll(taskList4);
+                    }
+                    Long planId = taskList2.get(0).getPlanId();
+                    KeyValueVo keyValue = new KeyValueVo();
+                    keyValue.setKey(key);
+                    keyValue.setValue(planId);
+                    keyValues.add(keyValue);
+          /*          int num = (int) taskList2.stream().filter(t -> t.getStatus().equals(2)).count();
                     //没有完成的任务,改批次的任务删除
                     if (num == 0) {
                         deleteTaskList.addAll(taskList2);
@@ -670,11 +706,12 @@ public class CoreMonitoringRetrievalTaskBuilderServiceImpl extends ServiceImpl<C
                         keyValue.setKey(key);
                         keyValue.setValue(planId);
                         keyValues.add(keyValue);
-                    }
+                    }*/
                 }
             }
         }
         objectMap.put("deleteTaskList", deleteTaskList);
+        objectMap.put("baoliuTaskList", baoliuTaskList);
         objectMap.put("keyValues", keyValues);
         return objectMap;
     }