|
|
|
@ -188,17 +188,18 @@ public class AlarmRecordsServiceImpl implements IAlarmRecordsService {
|
|
|
|
|
Date curTime = collectionParamsManage.getCurTime(); |
|
|
|
|
// 阈值
|
|
|
|
|
String threshold1 = alarmRule.getThreshold1(); |
|
|
|
|
String threshold2 = alarmRule.getThreshold2(); |
|
|
|
|
// 设置Redis取消标记(有效期略大于延迟时间)
|
|
|
|
|
redisTemplate.deleteObject("alarm:cancel:" + collectionParamsManage.getId()); |
|
|
|
|
if (alarmRule.getTimePeriodSet() == 0 && DateUtils.isSameDay(curTime, new Date())) { |
|
|
|
|
// 执行相关操作
|
|
|
|
|
insertOrUpdateRecord(alarmRule, curValue, threshold1, alarmCode, alarmRecords, collectionParamsManage); |
|
|
|
|
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, alarmCode, alarmRecords, collectionParamsManage); |
|
|
|
|
insertOrUpdateRecord(alarmRule, curValue, threshold1, threshold2, alarmCode, alarmRecords, collectionParamsManage); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -225,6 +226,7 @@ public class AlarmRecordsServiceImpl implements IAlarmRecordsService {
|
|
|
|
|
Date curTime = collectionParamsManage.getCurTime(); |
|
|
|
|
// 阈值
|
|
|
|
|
String threshold1 = alarmRule.getThreshold1(); |
|
|
|
|
String threshold2 = alarmRule.getThreshold2(); |
|
|
|
|
if (curValue.compareTo(BigDecimal.ZERO) == 0) { |
|
|
|
|
// 发送到延迟队列
|
|
|
|
|
result.append(",").append(collectionParamsManage.getId()); |
|
|
|
@ -239,20 +241,42 @@ public class AlarmRecordsServiceImpl implements IAlarmRecordsService {
|
|
|
|
|
"true", |
|
|
|
|
2, TimeUnit.MINUTES // 例如:延迟5分钟,设置10分钟过期
|
|
|
|
|
); |
|
|
|
|
insertOrUpdateRecord(alarmRule, curValue, threshold1, alarmCodeService.selectAlarmCodeByAlarmType(alarmRule.getEventType()), alarmRecords, collectionParamsManage); |
|
|
|
|
insertOrUpdateRecord(alarmRule, curValue, threshold1, threshold2, alarmCodeService.selectAlarmCodeByAlarmType(alarmRule.getEventType()), alarmRecords, collectionParamsManage); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return result.toString(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void insertOrUpdateRecord(AlarmRules alarmRule, BigDecimal curValue, String threshold1, AlarmCode alarmCode, AlarmRecords alarmRecords, CollectionParamsManage collectionParamsManage) { |
|
|
|
|
private void insertOrUpdateRecord(AlarmRules alarmRule, BigDecimal curValue, String threshold1, String threshold2, AlarmCode alarmCode, AlarmRecords alarmRecords, CollectionParamsManage collectionParamsManage) { |
|
|
|
|
boolean compare = BigDecimalUtils.compare(alarmRule.getCondition1(), curValue, new BigDecimal(threshold1)); |
|
|
|
|
if (compare) { |
|
|
|
|
// 创建报警记录
|
|
|
|
|
handleAlarmRecord(alarmRule, alarmCode, curValue, threshold1, alarmRecords, collectionParamsManage, "#{setValue}", alarmRule.getCondition1() + threshold1); |
|
|
|
|
} |
|
|
|
|
boolean compare1 = BigDecimalUtils.compare(alarmRule.getCondition2(), curValue, new BigDecimal(threshold2)); |
|
|
|
|
if (compare1) { |
|
|
|
|
handleAlarmRecord(alarmRule, alarmCode, curValue, threshold2, alarmRecords, collectionParamsManage, "#{setValue}", alarmRule.getCondition2() + threshold2); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 处理报警记录的公共方法 |
|
|
|
|
* |
|
|
|
|
* @param alarmRule 报警规则 |
|
|
|
|
* @param alarmCode 报警代码 |
|
|
|
|
* @param curValue 当前值 |
|
|
|
|
* @param threshold 阈值 |
|
|
|
|
* @param alarmRecords 报警记录 |
|
|
|
|
* @param collectionParamsManage 采集参数管理 |
|
|
|
|
* @param placeholder 占位符 |
|
|
|
|
* @param setValue 设置值 |
|
|
|
|
*/ |
|
|
|
|
private void handleAlarmRecord(AlarmRules alarmRule, AlarmCode alarmCode, BigDecimal curValue, String threshold, |
|
|
|
|
AlarmRecords alarmRecords, CollectionParamsManage collectionParamsManage, |
|
|
|
|
String placeholder, String setValue) { |
|
|
|
|
String content = alarmCode.getMsgContent(); |
|
|
|
|
content = content.replace("#{curValue}", curValue.setScale(1, RoundingMode.HALF_UP).toString()); |
|
|
|
|
content = content.replace("#{setValue}", alarmRule.getCondition1() + threshold1); |
|
|
|
|
content = content.replace("#{setValue}", setValue); |
|
|
|
|
alarmRecords.setContent(content); |
|
|
|
|
alarmRecords.setAlarmType(alarmRule.getAlarmType()); |
|
|
|
|
alarmRecords.setEventType(alarmRule.getEventType()); |
|
|
|
@ -275,5 +299,4 @@ public class AlarmRecordsServiceImpl implements IAlarmRecordsService {
|
|
|
|
|
updateAlarmRecord(isExits); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|