|
@@ -34,6 +34,7 @@ import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.Instant;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
@@ -151,7 +152,7 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
Instant instant = fpgGatherData.getCreateTime().toInstant();
|
|
|
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
|
|
|
|
|
|
- boolean topsIsExit = topsNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
+ boolean topsIsExit = topsNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
if (topsIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) < 0){
|
|
|
// 采集到的数据电流小于5A,上报告警信息
|
|
|
leanEventWarnInfo.setDeviceWarnInfo("FPG_OPEN状态下,尖时段采集到的数据电流小于" + limitCurrent + "A,触发告警!");
|
|
@@ -160,7 +161,7 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
// 更新或者新增逻辑处理
|
|
|
saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
|
|
|
}
|
|
|
- boolean peaksIsExit = peaksNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
+ boolean peaksIsExit = peaksNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
if (peaksIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) < 0){
|
|
|
// 采集到的数据电流小于5A,上报告警信息
|
|
|
leanEventWarnInfo.setDeviceWarnInfo("FPG_OPEN状态下,峰时段采集到的数据电流小于" + limitCurrent + "A,触发告警!");
|
|
@@ -169,7 +170,7 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
// 更新或者新增逻辑处理
|
|
|
saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
|
|
|
}
|
|
|
- boolean flatIsExit = flatNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
+ boolean flatIsExit = flatNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
if (flatIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) < 0){
|
|
|
// 采集到的数据电流小于5A,上报告警信息
|
|
|
leanEventWarnInfo.setDeviceWarnInfo("FPG_OPEN状态下,平时段采集到的数据电流小于" + limitCurrent + "A,触发告警!");
|
|
@@ -178,7 +179,7 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
// 更新或者新增逻辑处理
|
|
|
saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
|
|
|
}
|
|
|
- boolean valleysIsExit = valleysNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
+ boolean valleysIsExit = valleysNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
if (valleysIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) < 0){
|
|
|
// 采集到的数据电流小于5A,上报告警信息
|
|
|
leanEventWarnInfo.setDeviceWarnInfo("FPG_OPEN状态下,谷时段采集到的数据电流小于" + limitCurrent + "A,触发告警!");
|
|
@@ -241,7 +242,7 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
|
|
|
Instant instant = fpgGatherData.getCreateTime().toInstant();
|
|
|
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
|
|
|
- boolean topsIsExit = topsNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
+ boolean topsIsExit = topsNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
if (topsIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) > 0){
|
|
|
// 采集到的数据电流大于5A,上报告警信息
|
|
|
leanEventWarnInfo.setDeviceWarnInfo("FPG_CLOSE状态下,尖采集到的数据电流大于" + limitCurrent + "A,触发告警!");
|
|
@@ -250,7 +251,7 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
// 更新或者新增逻辑处理
|
|
|
saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
|
|
|
}
|
|
|
- boolean peaksIsExit = peaksNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
+ boolean peaksIsExit = peaksNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
if (peaksIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) > 0){
|
|
|
// 采集到的数据电流大于5A,上报告警信息
|
|
|
leanEventWarnInfo.setDeviceWarnInfo("FPG_CLOSE状态下,峰采集到的数据电流大于" + limitCurrent + "A,触发告警!");
|
|
@@ -259,7 +260,7 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
// 更新或者新增逻辑处理
|
|
|
saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
|
|
|
}
|
|
|
- boolean flatIsExit = flatNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
+ boolean flatIsExit = flatNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
if (flatIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) > 0){
|
|
|
// 采集到的数据电流大于5A,上报告警信息
|
|
|
leanEventWarnInfo.setDeviceWarnInfo("FPG_CLOSE状态下,平采集到的数据电流大于" + limitCurrent + "A,触发告警!");
|
|
@@ -268,7 +269,7 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
// 更新或者新增逻辑处理
|
|
|
saveOrUpdateLeanEventWarnInfo(fpgGatherData, leanEventWarnInfo);
|
|
|
}
|
|
|
- boolean valleysIsExit = valleysNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
+ boolean valleysIsExit = valleysNewPeaksAndValleysTimeConfigList.stream().anyMatch(a -> DateUtils.containsCreateTime(localDateTime, a.getStartTime(), a.getEndTime()));
|
|
|
if (valleysIsExit && fpgGatherData.getRunCurrent().compareTo(limitCurrent) > 0){
|
|
|
// 采集到的数据电流大于5A,上报告警信息
|
|
|
leanEventWarnInfo.setDeviceWarnInfo("FPG_CLOSE状态下,谷采集到的数据电流大于" + limitCurrent + "A,触发告警!");
|
|
@@ -463,7 +464,7 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
// 使用Criteria添加多个时间范围条件
|
|
|
List<Criteria> criteriaList = new ArrayList<>();
|
|
|
for (Date[] timeRange : timeRanges) {
|
|
|
- Criteria criteria = buildTimeRangeCriteria(timeRange);
|
|
|
+ Criteria criteria = DateUtils.buildTimeRangeCriteria(timeRange);
|
|
|
criteriaList.add(criteria);
|
|
|
}
|
|
|
if (criteriaList.size() > 1) {
|
|
@@ -519,43 +520,41 @@ public class LeanEventWarnInfoServiceImpl extends ServiceImpl<LeanEventWarnInfoM
|
|
|
}else if ("valleys".equals(type)){
|
|
|
List<PeaksAndValleysTimeConfig> valleysPeaksAndValleysTimeConfigList = peaksAndValleysTimeConfigParam.getValleys();
|
|
|
List<PeaksAndValleysTimeConfig> valleysNewPeaksAndValleysTimeConfigList = valleysPeaksAndValleysTimeConfigList.stream().map(t->{
|
|
|
- String newStartTime = sdf.format(createTime)+ " " + t.getStartTime();
|
|
|
- String newEndTime = sdf.format(createTime)+ " " + t.getEndTime();
|
|
|
- t.setStartTime(newStartTime);
|
|
|
- t.setEndTime(newEndTime);
|
|
|
+ boolean result = DateUtils.isHour23(createTime);
|
|
|
+ String newStartTime = "";
|
|
|
+ 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);
|
|
|
+ }
|
|
|
return t;
|
|
|
}).collect(Collectors.toList());
|
|
|
return valleysNewPeaksAndValleysTimeConfigList;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
- * 判断创建时间是否在开始时间和结束时间范围内
|
|
|
- * @param createTime
|
|
|
- * @param startTime
|
|
|
- * @param endTime
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static boolean containsCreateTime(LocalDateTime createTime, String startTime, String endTime) {
|
|
|
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
- LocalDateTime start_time = LocalDateTime.parse(startTime, formatter);
|
|
|
- LocalDateTime end_time = LocalDateTime.parse(endTime, formatter);
|
|
|
- return createTime!= null && (createTime.isAfter(start_time) || createTime.equals(start_time)) &&
|
|
|
- (createTime.isBefore(end_time) || createTime.equals(end_time));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 辅助方法,用于根据给定的时间范围构建Criteria,并加上8小时
|
|
|
- * @param timeRange
|
|
|
- * @return
|
|
|
- */
|
|
|
- private Criteria buildTimeRangeCriteria(Date[] timeRange) {
|
|
|
- Date startTime = timeRange[0];
|
|
|
- Date endTime = timeRange[1];
|
|
|
- // 加8小时
|
|
|
- Date startTimePlus8Hours = DateUtils.addHours(startTime, 8);
|
|
|
- Date endTimePlus8Hours = DateUtils.addHours(endTime, 8);
|
|
|
- return Criteria.where("createTime").gte(startTimePlus8Hours).lte(endTimePlus8Hours);
|
|
|
- }
|
|
|
}
|