Browse Source

1、报警增加时间判断优化

dev_mz
3067418132@qq.com 3 weeks ago
parent
commit
64ea5a59b6
  1. 4
      mh-admin/src/main/resources/application-dev.yml
  2. 2
      mh-admin/src/test/java/com/mh/MHApplicationTest.java
  3. 17
      mh-common/src/main/java/com/mh/common/utils/DateUtils.java
  4. 17
      mh-system/src/main/java/com/mh/system/service/operation/impl/AlarmRecordsServiceImpl.java

4
mh-admin/src/main/resources/application-dev.yml

@ -98,8 +98,8 @@ spring:
# 主库数据源 # 主库数据源
master: master:
#添加allowMultiQueries=true 在批量更新时才不会出错 #添加allowMultiQueries=true 在批量更新时才不会出错
url: jdbc:postgresql://127.0.0.1:5432/eemcs # url: jdbc:postgresql://127.0.0.1:5432/eemcs
# url: jdbc:postgresql://106.55.173.225:5505/eemcs url: jdbc:postgresql://106.55.173.225:5505/eemcs
username: postgres username: postgres
password: mh@803 password: mh@803
# 从库数据源 # 从库数据源

2
mh-admin/src/test/java/com/mh/MHApplicationTest.java

@ -100,7 +100,7 @@ public class MHApplicationTest {
@Test @Test
public void createAlarmTask() { public void createAlarmTask() {
alarmRecordsService.insertOrUpdateAlarmRecord("e1a3034edw6a9b3a79a86332886b24896"); alarmRecordsService.insertOrUpdateAlarmRecord("611d1333498ec37f7fc697e404587017");
} }
@Test @Test

17
mh-common/src/main/java/com/mh/common/utils/DateUtils.java

@ -7,6 +7,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.*; import java.time.*;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalAdjusters;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
@ -89,9 +90,10 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
} }
public static boolean isCurrentTimeInRange(Date startTimeStr, Date endTimeStr, Date curTime) { public static boolean isCurrentTimeInRange(Date startTimeStr, Date endTimeStr, Date curTime) {
LocalTime startTime = convertDateToLocalTime(startTimeStr); // 截断到分钟,只比较时分,忽略秒
LocalTime endTime = convertDateToLocalTime(endTimeStr); LocalTime startTime = convertDateToLocalTime(startTimeStr).truncatedTo(ChronoUnit.MINUTES);
LocalTime currentTime = convertDateToLocalTime(curTime); LocalTime endTime = convertDateToLocalTime(endTimeStr).truncatedTo(ChronoUnit.MINUTES);
LocalTime currentTime = convertDateToLocalTime(curTime).truncatedTo(ChronoUnit.MINUTES);
if (startTime.equals(endTime)) { if (startTime.equals(endTime)) {
// 开始和结束时间相同,视为全天范围内 // 开始和结束时间相同,视为全天范围内
@ -100,11 +102,18 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
// 时间段不跨天,判断当前时间是否在[startTime, endTime]区间内 // 时间段不跨天,判断当前时间是否在[startTime, endTime]区间内
return !currentTime.isBefore(startTime) && !currentTime.isAfter(endTime); return !currentTime.isBefore(startTime) && !currentTime.isAfter(endTime);
} else { } else {
// 时间段跨天,判断当前时间是否在[startTime, 23:59:59.999999999]或[00:00:00, endTime] // 时间段跨天,判断当前时间是否在[startTime, 23:59]或[00:00, endTime]
return !currentTime.isBefore(startTime) || !currentTime.isAfter(endTime); return !currentTime.isBefore(startTime) || !currentTime.isAfter(endTime);
} }
} }
public static void main(String[] args) {
Date startTime = DateUtils.parseDate("2026-07-10 11:00:00");
Date endTime = DateUtils.parseDate("2026-07-10 14:00:00");
System.out.println(isCurrentTimeInRange(startTime, endTime, new Date()));
}
/** /**
* 获取当前Date型日期 * 获取当前Date型日期
* *

17
mh-system/src/main/java/com/mh/system/service/operation/impl/AlarmRecordsServiceImpl.java

@ -250,12 +250,21 @@ public class AlarmRecordsServiceImpl implements IAlarmRecordsService {
"true", "true",
2, TimeUnit.MINUTES // 例如:延迟5分钟,设置10分钟过期 2, TimeUnit.MINUTES // 例如:延迟5分钟,设置10分钟过期
); );
List<AlarmCode> alarmCode = alarmCodeService.selectAlarmCodeByAlarmType(alarmRule.getEventType()); List<AlarmCode> alarmCodeList = alarmCodeService.selectAlarmCodeByAlarmType(alarmRule.getEventType());
if (alarmCode == null || alarmCode.isEmpty()) { if (alarmCodeList == null || alarmCodeList.isEmpty()) {
continue; continue;
} }
for (AlarmCode code : alarmCode) { for (AlarmCode alarmCode : alarmCodeList) {
insertOrUpdateRecord(alarmRule, curValue, threshold1, threshold2, code, alarmRecords, collectionParamsManage); if (alarmRule.getTimePeriodSet() == 0 && DateUtils.isSameDay(curTime, new Date())) {
// 执行相关操作
insertOrUpdateRecord(alarmRule, curValue, threshold1, threshold2, alarmCode, alarmRecords, collectionParamsManage);
} else if (alarmRule.getTimePeriodSet() == 1
&& DateUtils.isSameDay(collectionParamsManage.getCurTime(), new Date())
&& DateUtils.isCurrentTimeInRange(alarmRule.getBeginTime(), alarmRule.getEndTime(), curTime)
) {
// 执行相关操作
insertOrUpdateRecord(alarmRule, curValue, threshold1, threshold2, alarmCode, alarmRecords, collectionParamsManage);
}
} }
} }
} }

Loading…
Cancel
Save