Browse Source

生成隐患排查任务 相同巡检周期单位的数据存在多条时候,重新创建对象存储ID 避免重复数据生成

huangpeng 2 weeks ago
parent
commit
f7bf00d6cc

+ 29 - 37
js-security/security-common/src/main/java/com/rongwei/sfcommon/sys/service/impl/ScheduledTasksServiceImpl.java

@@ -222,6 +222,7 @@ public class ScheduledTasksServiceImpl implements ScheduledTasksService {
 
 
         for (ApsHazardInvestigationTemplateDo mainData : tempList) {
+
             String tempId = mainData.getId();
             // 获取本次需要生成任务的模板检查项
             subList = templateZibiaoDos.stream()
@@ -259,7 +260,7 @@ public class ScheduledTasksServiceImpl implements ScheduledTasksService {
         // 计划结束时间
         Calendar endInstance = Calendar.getInstance();
         startInstance.setTimeZone(TimeZone.getTimeZone("GMT+08:00")); // 设置时区为UTC
-        ApsHazardInvestigationTemplateZibiaoDo updateGenerationDateDo = new ApsHazardInvestigationTemplateZibiaoDo();
+        final ApsHazardInvestigationTemplateZibiaoDo[] updateGenerationDateDo = new ApsHazardInvestigationTemplateZibiaoDo[1];
         // 因为存在计划开始和计划结束时间 所以需要将周期不同的数据单独提取出来处理
         Map<Integer, List<ApsHazardInvestigationTemplateZibiaoDo>> groupByCycle = tempData.stream().collect(Collectors.groupingBy(ApsHazardInvestigationTemplateZibiaoDo::getInspectioncycle));
         Map<String, List<ApsHazardInvestigationTemplateZibiaoDo>> dataMap = new HashMap<>();
@@ -269,6 +270,7 @@ public class ScheduledTasksServiceImpl implements ScheduledTasksService {
                 int cycle = task.getKey();
                 List<ApsHazardInvestigationTemplateZibiaoDo> tasks = task.getValue();
                 for (ApsHazardInvestigationTemplateZibiaoDo apsHazardInvestigationTemplateZibiaoDo : tasks) {
+                    updateGenerationDateDo[0] = new ApsHazardInvestigationTemplateZibiaoDo();
                     boolean sameDatePart = isSameDatePart(apsHazardInvestigationTemplateZibiaoDo.getGenerationdate(), today);
                     // 时间相同当天不再生成
                     if (sameDatePart) {
@@ -323,9 +325,9 @@ public class ScheduledTasksServiceImpl implements ScheduledTasksService {
                         // 移动到下一个周期
                         currentStart.add(Calendar.HOUR_OF_DAY, cycle);
                     }
-                    updateGenerationDateDo.setId(apsHazardInvestigationTemplateZibiaoDo.getId());
-                    updateGenerationDateDo.setGenerationdate(currentStart.getTime());
-                    updateGenerationDateList.add(updateGenerationDateDo);
+                    updateGenerationDateDo[0].setId(apsHazardInvestigationTemplateZibiaoDo.getId());
+                    updateGenerationDateDo[0].setGenerationdate(currentStart.getTime());
+                    updateGenerationDateList.add(updateGenerationDateDo[0]);
                 }
             }
         } else {
@@ -354,22 +356,24 @@ public class ScheduledTasksServiceImpl implements ScheduledTasksService {
                                 .filter(info -> info.getGenerationdate() == null ||
                                         JSCommonUtils.dateDifferenceExample(info.getGenerationdate(), today, checkCycleUnit) == info.getInspectioncycle()
                                 ).forEach(apsHazardInvestigationTemplateZibiaoDo -> {
+                                   updateGenerationDateDo[0] = new ApsHazardInvestigationTemplateZibiaoDo();
                                     dataMap.computeIfAbsent(startInstance.getTime().getTime() + ";" + endInstance.getTime().getTime(), k -> new ArrayList<>()).add(apsHazardInvestigationTemplateZibiaoDo);
 
-                                    updateGenerationDateDo.setId(apsHazardInvestigationTemplateZibiaoDo.getId());
-                                    updateGenerationDateDo.setGenerationdate(startInstance.getTime());
-                                    updateGenerationDateList.add(updateGenerationDateDo);
+                                    updateGenerationDateDo[0].setId(apsHazardInvestigationTemplateZibiaoDo.getId());
+                                    updateGenerationDateDo[0].setGenerationdate(startInstance.getTime());
+                                    updateGenerationDateList.add(updateGenerationDateDo[0]);
                                 });
                     } else {
                         task.getValue()
                                 .parallelStream()
                                 .filter(info -> info.getGenerationdate() == null)
                                 .forEach(apsHazardInvestigationTemplateZibiaoDo -> {
+                                    updateGenerationDateDo[0] = new ApsHazardInvestigationTemplateZibiaoDo();
                                     dataMap.computeIfAbsent(startInstance.getTime().getTime() + ";" + endInstance.getTime().getTime(), k -> new ArrayList<>()).add(apsHazardInvestigationTemplateZibiaoDo);
 
-                                    updateGenerationDateDo.setId(apsHazardInvestigationTemplateZibiaoDo.getId());
-                                    updateGenerationDateDo.setGenerationdate(startInstance.getTime());
-                                    updateGenerationDateList.add(updateGenerationDateDo);
+                                    updateGenerationDateDo[0].setId(apsHazardInvestigationTemplateZibiaoDo.getId());
+                                    updateGenerationDateDo[0].setGenerationdate(startInstance.getTime());
+                                    updateGenerationDateList.add(updateGenerationDateDo[0]);
                                 });
                     }
                 }
@@ -396,31 +400,18 @@ public class ScheduledTasksServiceImpl implements ScheduledTasksService {
                 for (Map.Entry<Integer, List<ApsHazardInvestigationTemplateZibiaoDo>> task : groupByCycle.entrySet()) {
                     endInstance.add(Calendar.MONTH, task.getKey() - 1);
                     // 如果当前时间是1月1号直接生成隐患任务
-                    if ((today.getMonth() == Month.JANUARY) && (today.getDayOfMonth() == 1)) {
-                        task.getValue()
-                                .parallelStream()
-                                .filter(info -> info.getGenerationdate() == null ||
-                                        JSCommonUtils.dateDifferenceExample(info.getGenerationdate(), today, checkCycleUnit) == info.getInspectioncycle())
-                                .forEach(apsHazardInvestigationTemplateZibiaoDo -> {
-                                    dataMap.computeIfAbsent(startInstance.getTime().getTime() + ";" + endInstance.getTime().getTime(), k -> new ArrayList<>()).add(apsHazardInvestigationTemplateZibiaoDo);
-
-                                    updateGenerationDateDo.setId(apsHazardInvestigationTemplateZibiaoDo.getId());
-                                    updateGenerationDateDo.setGenerationdate(startInstance.getTime());
-                                    updateGenerationDateList.add(updateGenerationDateDo);
-                                });
-                    } else {
-                        task.getValue().parallelStream()
-                                .filter(info -> info.getGenerationdate() == null)
-                                .forEach(apsHazardInvestigationTemplateZibiaoDo -> {
-                                    dataMap.computeIfAbsent(startInstance.getTime().getTime() + ";" + endInstance.getTime().getTime(), k -> new ArrayList<>()).add(apsHazardInvestigationTemplateZibiaoDo);
-
-                                    updateGenerationDateDo.setId(apsHazardInvestigationTemplateZibiaoDo.getId());
-                                    updateGenerationDateDo.setGenerationdate(startInstance.getTime());
-                                    updateGenerationDateList.add(updateGenerationDateDo);
-                                });
-                    }
+                    task.getValue()
+                            .parallelStream()
+                            .filter(info -> info.getGenerationdate() == null ||
+                                    JSCommonUtils.dateDifferenceExample(info.getGenerationdate(), today, checkCycleUnit) == info.getInspectioncycle())
+                            .forEach(apsHazardInvestigationTemplateZibiaoDo -> {
+                                updateGenerationDateDo[0] = new ApsHazardInvestigationTemplateZibiaoDo();
+                                dataMap.computeIfAbsent(startInstance.getTime().getTime() + ";" + endInstance.getTime().getTime(), k -> new ArrayList<>()).add(apsHazardInvestigationTemplateZibiaoDo);
+                                updateGenerationDateDo[0].setId(apsHazardInvestigationTemplateZibiaoDo.getId());
+                                updateGenerationDateDo[0].setGenerationdate(startInstance.getTime());
+                                updateGenerationDateList.add(updateGenerationDateDo[0]);
+                            });
                 }
-
             } else if (SaveConstans.INSPECTION_CYCLE_UNIT.DAY.equals(checkCycleUnit)) {
                 // 对于天的任务 直接判断上次生成时间和当前时间相隔的天数是否满足要求
                 // 设置时间为23:59:59
@@ -440,10 +431,11 @@ public class ScheduledTasksServiceImpl implements ScheduledTasksService {
                             .filter(info -> info.getGenerationdate() == null ||
                                     JSCommonUtils.dateDifferenceExample(info.getGenerationdate(), today, checkCycleUnit) == info.getInspectioncycle())
                             .forEach(apsHazardInvestigationTemplateZibiaoDo -> {
+                                updateGenerationDateDo[0] = new ApsHazardInvestigationTemplateZibiaoDo();
                                 dataMap.computeIfAbsent(startInstance.getTime().getTime() + ";" + endInstance.getTime().getTime(), k -> new ArrayList<>()).add(apsHazardInvestigationTemplateZibiaoDo);
-                                updateGenerationDateDo.setId(apsHazardInvestigationTemplateZibiaoDo.getId());
-                                updateGenerationDateDo.setGenerationdate(startInstance.getTime());
-                                updateGenerationDateList.add(updateGenerationDateDo);
+                                updateGenerationDateDo[0].setId(apsHazardInvestigationTemplateZibiaoDo.getId());
+                                updateGenerationDateDo[0].setGenerationdate(startInstance.getTime());
+                                updateGenerationDateList.add(updateGenerationDateDo[0]);
                             });
                 }
                 ;