Pārlūkot izejas kodu

处理尖时段起始时间跟结束时间为null的情况

lingpeng.li 2 mēneši atpakaļ
vecāks
revīzija
b2b07a110c

+ 16 - 4
jeecg-module-gather/src/main/java/org/jeecg/modules/fpgJob/LeanModelStatistics.java

@@ -242,8 +242,14 @@ public class LeanModelStatistics {
                     AtomicReference<String> jfpgStr = new AtomicReference<>("");
                     // 判断尖峰平谷时段
                     peaksAndValleysTimeConfiglist.forEach(peaksAndValleysTimeConfig -> {
-                        if (containsCreateTime(localDateTime, dayDate + " " + peaksAndValleysTimeConfig.getStartTime(), dayDate + " " + peaksAndValleysTimeConfig.getEndTime())) {
-                            jfpgStr.set(peaksAndValleysTimeConfig.getType());
+
+                        String startTime = peaksAndValleysTimeConfig.getStartTime();
+                        String endTime = peaksAndValleysTimeConfig.getEndTime();
+                        // 确保 startTime 和 endTime 不为 null 或空字符串
+                        if (oConvertUtils.isNotEmpty(startTime) && oConvertUtils.isNotEmpty(endTime)) {
+                            if (containsCreateTime(localDateTime, dayDate + " " + startTime, dayDate + " " + endTime)) {
+                                jfpgStr.set(peaksAndValleysTimeConfig.getType());
+                            }
                         }
                     });
                     // 功率
@@ -540,8 +546,14 @@ public class LeanModelStatistics {
                     AtomicReference<String> jfpgStr = new AtomicReference<>("");
                     // 判断尖峰平谷时段
                     peaksAndValleysTimeConfiglist.forEach(peaksAndValleysTimeConfig -> {
-                        if (containsCreateTime(localDateTime, dayDate + " " + peaksAndValleysTimeConfig.getStartTime(), dayDate + " " + peaksAndValleysTimeConfig.getEndTime())) {
-                            jfpgStr.set(peaksAndValleysTimeConfig.getType());
+
+                        String startTime = peaksAndValleysTimeConfig.getStartTime();
+                        String endTime = peaksAndValleysTimeConfig.getEndTime();
+                        // 确保 startTime 和 endTime 不为 null 或空字符串
+                        if (oConvertUtils.isNotEmpty(startTime) && oConvertUtils.isNotEmpty(endTime)) {
+                            if (containsCreateTime(localDateTime, dayDate + " " + startTime, dayDate + " " + endTime)) {
+                                jfpgStr.set(peaksAndValleysTimeConfig.getType());
+                            }
                         }
                     });
                     // 组合mongodb条件

+ 85 - 47
jeecg-module-gather/src/main/java/org/jeecg/modules/leanEventWarn/service/impl/LeanEventWarnInfoServiceImpl.java

@@ -163,7 +163,9 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
         Instant instant = fpgGatherData.getCreateTime().toInstant();
         LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
 
-        boolean topsIsExit = topsNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
+        boolean topsIsExit = topsNewPeaksAndValleysTimeConfigList.stream()
+                .filter(a -> a.getStartTime() != null && a.getEndTime() != null)
+                .anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (topsIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) < 0){
             // 采集到的数据电流小于5A,上报告警信息
             LeanEvents leanEvents = leanEventsService.getById(leanEventsHost.getEventsId());
@@ -173,7 +175,9 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             // 更新或者新增逻辑处理
             saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
-        boolean peaksIsExit = peaksNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
+        boolean peaksIsExit = peaksNewPeaksAndValleysTimeConfigList.stream()
+                .filter(a -> a.getStartTime() != null && a.getEndTime() != null)
+                .anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (peaksIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) < 0){
             // 采集到的数据电流小于5A,上报告警信息
             LeanEvents leanEvents = leanEventsService.getById(leanEventsHost.getEventsId());
@@ -183,7 +187,9 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             // 更新或者新增逻辑处理
             saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
-        boolean flatIsExit = flatNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
+        boolean flatIsExit = flatNewPeaksAndValleysTimeConfigList.stream()
+                .filter(a -> a.getStartTime() != null && a.getEndTime() != null)
+                .anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (flatIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) < 0){
             // 采集到的数据电流小于5A,上报告警信息
             LeanEvents leanEvents = leanEventsService.getById(leanEventsHost.getEventsId());
@@ -193,7 +199,9 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             // 更新或者新增逻辑处理
             saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
-        boolean valleysIsExit = valleysNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
+        boolean valleysIsExit = valleysNewPeaksAndValleysTimeConfigList.stream()
+                .filter(a -> a.getStartTime() != null && a.getEndTime() != null)
+                .anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (valleysIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) < 0){
             // 采集到的数据电流小于5A,上报告警信息
             LeanEvents leanEvents = leanEventsService.getById(leanEventsHost.getEventsId());
@@ -257,7 +265,10 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
 
         Instant instant = fpgGatherData.getCreateTime().toInstant();
         LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
-        boolean topsIsExit = topsNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
+        boolean topsIsExit = topsNewPeaksAndValleysTimeConfigList.stream()
+                .filter(a -> a.getStartTime() != null && a.getEndTime() != null) // 过滤掉 startTime 或 endTime 为空的情况
+                .anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
+
         if (topsIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) > 0){
             // 采集到的数据电流大于5A,上报告警信息
             LeanEvents leanEvents = leanEventsService.getById(leanEventsHost.getEventsId());
@@ -267,7 +278,9 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             // 更新或者新增逻辑处理
             saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
-        boolean peaksIsExit = peaksNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
+        boolean peaksIsExit = peaksNewPeaksAndValleysTimeConfigList.stream()
+                .filter(a -> a.getStartTime() != null && a.getEndTime() != null)
+                .anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (peaksIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) > 0){
             // 采集到的数据电流大于5A,上报告警信息
             LeanEvents leanEvents = leanEventsService.getById(leanEventsHost.getEventsId());
@@ -277,7 +290,9 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             // 更新或者新增逻辑处理
             saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
-        boolean flatIsExit = flatNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
+        boolean flatIsExit = flatNewPeaksAndValleysTimeConfigList.stream()
+                .filter(a -> a.getStartTime() != null && a.getEndTime() != null)
+                .anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (flatIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) > 0){
             // 采集到的数据电流大于5A,上报告警信息
             LeanEvents leanEvents = leanEventsService.getById(leanEventsHost.getEventsId());
@@ -287,7 +302,9 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
             // 更新或者新增逻辑处理
             saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
         }
-        boolean valleysIsExit = valleysNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
+        boolean valleysIsExit = valleysNewPeaksAndValleysTimeConfigList.stream()
+                .filter(a -> a.getStartTime() != null && a.getEndTime() != null)
+                .anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
         if (valleysIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) > 0){
             // 采集到的数据电流大于5A,上报告警信息
             LeanEvents leanEvents = leanEventsService.getById(leanEventsHost.getEventsId());
@@ -325,7 +342,9 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
         List<PeaksAndValleysTimeConfig> newPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, leanEventsHost.getDeviceInformationId(), new Date());
         newPeaksAndValleysTimeConfigList.forEach(x ->{
             try {
-                timeRanges.add(new Date[]{dateFormat.parse(x.getStartTime()), dateFormat.parse(x.getEndTime())});
+                if(oConvertUtils.isNotEmpty(x.getStartTime()) && oConvertUtils.isNotEmpty(x.getEndTime())) {
+                    timeRanges.add(new Date[]{dateFormat.parse(x.getStartTime()), dateFormat.parse(x.getEndTime())});
+                }
             } catch (ParseException e) {
                 throw new RuntimeException(e);
             }
@@ -416,7 +435,9 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
         List<PeaksAndValleysTimeConfig> newPeaksAndValleysTimeConfigList = getPeaksAndValleysTimeConfigByType(peaksAndValleysTimeConfigParam, leanEventsHost.getDeviceInformationId(), new Date());
         newPeaksAndValleysTimeConfigList.forEach(x ->{
             try {
-                timeRanges.add(new Date[]{dateFormat.parse(x.getStartTime()), dateFormat.parse(x.getEndTime())});
+                if(oConvertUtils.isNotEmpty(x.getStartTime()) && oConvertUtils.isNotEmpty(x.getEndTime()) ) {
+                    timeRanges.add(new Date[]{dateFormat.parse(x.getStartTime()), dateFormat.parse(x.getEndTime())});
+                }
             } catch (ParseException e) {
                 throw new RuntimeException(e);
             }
@@ -518,30 +539,43 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
         if ("tops".equals(type)){
             List<PeaksAndValleysTimeConfig> topsPeaksAndValleysTimeConfigList = peaksAndValleysTimeConfigParam.getTops();
             List<PeaksAndValleysTimeConfig> topsNewPeaksAndValleysTimeConfigList = topsPeaksAndValleysTimeConfigList.stream().map(t->{
-                String newStartTime = sdf.format(createTime)+ " " + t.getStartTime();
-                String newEndTime = sdf.format(createTime)+ " " + t.getEndTime();
-                t.setStartTime(newStartTime);
-                t.setEndTime(newEndTime);
+                String startTime = t.getStartTime();
+                String endTime = t.getEndTime();
+
+                if (oConvertUtils.isNotEmpty(startTime) && oConvertUtils.isNotEmpty(endTime)) {
+                    String newStartTime = sdf.format(createTime) + " " + startTime;
+                    String newEndTime = sdf.format(createTime) + " " + endTime;
+                    t.setStartTime(newStartTime);
+                    t.setEndTime(newEndTime);
+                }
                 return t;
             }).collect(Collectors.toList());
             return topsNewPeaksAndValleysTimeConfigList;
         }else if ("peaks".equals(type)){
             List<PeaksAndValleysTimeConfig> peaksPeaksAndValleysTimeConfigList = peaksAndValleysTimeConfigParam.getPeaks();
             List<PeaksAndValleysTimeConfig> peaksNewPeaksAndValleysTimeConfigList = peaksPeaksAndValleysTimeConfigList.stream().map(t->{
-                String newStartTime = sdf.format(createTime)+ " " + t.getStartTime();
-                String newEndTime = sdf.format(createTime)+ " " + t.getEndTime();
-                t.setStartTime(newStartTime);
-                t.setEndTime(newEndTime);
+                String startTime = t.getStartTime();
+                String endTime = t.getEndTime();
+                if (oConvertUtils.isNotEmpty(startTime) && oConvertUtils.isNotEmpty(endTime)) {
+                    String newStartTime = sdf.format(createTime) + " " + t.getStartTime();
+                    String newEndTime = sdf.format(createTime) + " " + t.getEndTime();
+                    t.setStartTime(newStartTime);
+                    t.setEndTime(newEndTime);
+                }
                 return t;
             }).collect(Collectors.toList());
             return peaksNewPeaksAndValleysTimeConfigList;
         }else if ("flat".equals(type)){
             List<PeaksAndValleysTimeConfig> flatPeaksAndValleysTimeConfigList = peaksAndValleysTimeConfigParam.getFlat();
             List<PeaksAndValleysTimeConfig> flatNewPeaksAndValleysTimeConfigList = flatPeaksAndValleysTimeConfigList.stream().map(t->{
-                String newStartTime = sdf.format(createTime)+ " " + t.getStartTime();
-                String newEndTime = sdf.format(createTime)+ " " + t.getEndTime();
-                t.setStartTime(newStartTime);
-                t.setEndTime(newEndTime);
+                String startTime = t.getStartTime();
+                String endTime = t.getEndTime();
+                if (oConvertUtils.isNotEmpty(startTime) && oConvertUtils.isNotEmpty(endTime)) {
+                    String newStartTime = sdf.format(createTime) + " " + t.getStartTime();
+                    String newEndTime = sdf.format(createTime) + " " + t.getEndTime();
+                    t.setStartTime(newStartTime);
+                    t.setEndTime(newEndTime);
+                }
                 return t;
             }).collect(Collectors.toList());
             return flatNewPeaksAndValleysTimeConfigList;
@@ -553,31 +587,35 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
                 String newEndTime = "";
                 // 定义日期时间格式化器,格式要与输入的字符串格式匹配
                 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-                if (result){
-                    // 结束时间加1天
-                    newStartTime = sdf.format(createTime)+ " " + t.getStartTime();
-                    newEndTime = sdf.format(createTime)+ " " + t.getEndTime();
-                    // 将字符串解析为LocalDateTime对象
-                    LocalDateTime dateTime = LocalDateTime.parse(newEndTime, formatter);
-                    // 给解析后的时间对象加上一天
-                    LocalDateTime newDateTime = dateTime.plusDays(1);
-                    // 将加一天后的时间对象再格式化为字符串输出
-                    String finalEndTimeStr = newDateTime.format(formatter);
-                    t.setStartTime(newStartTime);
-                    t.setEndTime(finalEndTimeStr);
-                }else {
-                    // 开始时间减1天
-                    newStartTime = sdf.format(createTime)+ " " + t.getStartTime();
-                    newEndTime = sdf.format(createTime)+ " " + t.getEndTime();
-                    // 定义日期时间格式化器,格式要与输入的字符串格式匹配
-                    // 将字符串解析为LocalDateTime对象
-                    LocalDateTime dateTime = LocalDateTime.parse(newStartTime, formatter);
-                    // 给解析后的时间对象加上一天
-                    LocalDateTime newDateTime = dateTime.plusDays(-1);
-                    // 将加一天后的时间对象再格式化为字符串输出
-                    String finalStartTimeStr = newDateTime.format(formatter);
-                    t.setStartTime(finalStartTimeStr);
-                    t.setEndTime(newEndTime);
+                String startTime = t.getStartTime();
+                String endTime = t.getEndTime();
+                if (oConvertUtils.isNotEmpty(startTime) && oConvertUtils.isNotEmpty(endTime)) {
+                    if (result) {
+                        // 结束时间加1天
+                        newStartTime = sdf.format(createTime) + " " + startTime;
+                        newEndTime = sdf.format(createTime) + " " + endTime;
+                        // 将字符串解析为LocalDateTime对象
+                        LocalDateTime dateTime = LocalDateTime.parse(newEndTime, formatter);
+                        // 给解析后的时间对象加上一天
+                        LocalDateTime newDateTime = dateTime.plusDays(1);
+                        // 将加一天后的时间对象再格式化为字符串输出
+                        String finalEndTimeStr = newDateTime.format(formatter);
+                        t.setStartTime(newStartTime);
+                        t.setEndTime(finalEndTimeStr);
+                    } else {
+                        // 开始时间减1天
+                        newStartTime = sdf.format(createTime) + " " + t.getStartTime();
+                        newEndTime = sdf.format(createTime) + " " + t.getEndTime();
+                        // 定义日期时间格式化器,格式要与输入的字符串格式匹配
+                        // 将字符串解析为LocalDateTime对象
+                        LocalDateTime dateTime = LocalDateTime.parse(newStartTime, formatter);
+                        // 给解析后的时间对象加上一天
+                        LocalDateTime newDateTime = dateTime.plusDays(-1);
+                        // 将加一天后的时间对象再格式化为字符串输出
+                        String finalStartTimeStr = newDateTime.format(formatter);
+                        t.setStartTime(finalStartTimeStr);
+                        t.setEndTime(newEndTime);
+                    }
                 }
                 return t;
             }).collect(Collectors.toList());