|
@@ -91,16 +91,19 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
for (AlarmDefine alarmDefine : alarmDefines) {
|
|
|
Condition condition = alarmDefine.getCondition();
|
|
|
List<JSONObject> codeDetail = condition.getInfoCodes();
|
|
|
- boolean match = codeDetail.stream().allMatch(p -> currentDataCache.hasKey(p.getString("meterId"), p.getString("funcId")));
|
|
|
+ boolean match = codeDetail.stream().allMatch(
|
|
|
+ p -> currentDataCache.hasKey(p.getString("meterId"), p.getString("funcId"))
|
|
|
+ );
|
|
|
//报警定义的所有信息点都有采集数值,具备判断条件
|
|
|
if (match) {
|
|
|
String defineId = AlarmInfoCache.getAlarmDefineId(alarmDefine);
|
|
|
String trigger = condition.getTrigger();
|
|
|
String end = condition.getEnd();
|
|
|
- HashMap paramMap = new HashMap<>();
|
|
|
- for (int j = 0; j < codeDetail.size(); j++) {
|
|
|
- JSONObject code = codeDetail.get(j);
|
|
|
- paramMap.put(code.getString("infoCode"), currentDataCache.getCurrentData(code.getString("meterId"), code.getString("funcId")));
|
|
|
+ HashMap<String, Object> paramMap = new HashMap<>();
|
|
|
+ for (JSONObject code : codeDetail) {
|
|
|
+ paramMap.put(
|
|
|
+ code.getString("infoCode"),
|
|
|
+ currentDataCache.getCurrentData(code.getString("meterId"), code.getString("funcId")));
|
|
|
}
|
|
|
Expression triggerExp = AviatorEvaluator.compile(trigger, true);
|
|
|
Expression endExp = AviatorEvaluator.compile(end, true);
|
|
@@ -112,20 +115,20 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
}
|
|
|
// 使用intern()方法,确保上锁的是同一个String对象
|
|
|
synchronized (defineId.intern()) {
|
|
|
- AlarmState alarmState = getAlarmStateFromCacheOrDb(defineId);
|
|
|
+
|
|
|
//报警产生值满足(这里的满足不考虑报警持续时间)
|
|
|
if (triggerResult) {
|
|
|
log.info("有一条满足报警条件");
|
|
|
log.info("--" + alarmDefine.toString());
|
|
|
log.info("--" + JSONObject.toJSONString(paramMap));
|
|
|
//报警的时候不考虑报警恢复,因为同时报警和报警恢复是不应该出现的
|
|
|
- handlerNowDataAlarm(alarmDefine, alarmState, dateTime, condition, defineId, paramMap);
|
|
|
+ handlerNowDataAlarm(alarmDefine, dateTime, paramMap);
|
|
|
} else {
|
|
|
log.info("不满足报警条件");
|
|
|
log.info("--" + alarmDefine.toString());
|
|
|
log.info("--" + JSONObject.toJSONString(paramMap));
|
|
|
//当前数据正常
|
|
|
- handlerNowDataNormal(alarmDefine, dateTime, condition, defineId, endResult, alarmState, paramMap);
|
|
|
+ handlerNowDataNormal(alarmDefine, dateTime, endResult, paramMap);
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
@@ -147,17 +150,17 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
* @since: 2021/1/8 上午11:05
|
|
|
* @version: V1.0
|
|
|
*/
|
|
|
- private AlarmState getAlarmStateFromCacheOrDb(String defineId) {
|
|
|
- AlarmState alarmState = alarmInfoCache.getAlarmState(defineId);
|
|
|
+ private AlarmDefineState getAlarmStateFromCacheOrDb(String defineId) {
|
|
|
+ AlarmDefineState alarmState = alarmInfoCache.getAlarmState(defineId);
|
|
|
if (Objects.isNull(alarmState)) {
|
|
|
//默认正常报警状态
|
|
|
- alarmState = new AlarmState(defineId);
|
|
|
+ alarmState = new AlarmDefineState(defineId);
|
|
|
Optional<ZktAlarmRecordDO> recordOptional = alarmRecordRepository.findById(defineId);
|
|
|
if (recordOptional.isPresent()) {
|
|
|
ZktAlarmRecordDO alarmRecordDO = recordOptional.get();
|
|
|
//数据库报警状态:1-未处理
|
|
|
if ("1".equals(alarmRecordDO.getState())) {
|
|
|
- alarmState.setState(AlarmState.State.NOT_DEAL.getType());
|
|
|
+ alarmState.setState(AlarmDefineState.State.NOT_DEAL.getType());
|
|
|
alarmState.setAlarmStartTime(alarmRecordDO.getAlarmTime());
|
|
|
}
|
|
|
}
|
|
@@ -168,10 +171,7 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
/**
|
|
|
* @param alarmDefine : 报警定义
|
|
|
* @param dateTime :IOT采集时间
|
|
|
- * @param condition :报警条件
|
|
|
- * @param defineId :报警定义ID
|
|
|
* @param endResult :报警恢复监测结果
|
|
|
- * @param alarmState : 报警状态时间实体
|
|
|
* @param paramMap 报警恢复触发值
|
|
|
* @description:当前数据正常判断逻辑
|
|
|
* @exception:
|
|
@@ -181,14 +181,19 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
* @since: 2020/10/21 16:46
|
|
|
* @version: V1.0
|
|
|
*/
|
|
|
- private void handlerNowDataNormal(AlarmDefine alarmDefine, String dateTime, Condition condition, String defineId, Boolean endResult, AlarmState alarmState, HashMap paramMap) throws InterruptedException {
|
|
|
+ private void handlerNowDataNormal(
|
|
|
+ AlarmDefine alarmDefine, String dateTime,
|
|
|
+ Boolean endResult, HashMap<String, Object> paramMap) throws InterruptedException {
|
|
|
+ String defineId = AlarmInfoCache.getAlarmDefineId(alarmDefine);
|
|
|
+ AlarmDefineState alarmState = getAlarmStateFromCacheOrDb(defineId);
|
|
|
+ Condition condition = alarmDefine.getCondition();
|
|
|
//当前数据正常,报警状态为正常:清空之前的报警计时,重置回默认状态
|
|
|
- if (AlarmState.State.NORMAL.getType().equals(alarmState.getState())) {
|
|
|
- alarmState = new AlarmState(defineId);
|
|
|
+ if (AlarmDefineState.State.NORMAL.getType().equals(alarmState.getState())) {
|
|
|
+ alarmState = new AlarmDefineState(defineId);
|
|
|
alarmInfoCache.setAlarmState(defineId, alarmState);
|
|
|
- } else if (AlarmState.State.NOT_DEAL.getType().equals(alarmState.getState())) {
|
|
|
- //报警状态异常时候
|
|
|
- alarmState.setLatestDataNormalstate(true);
|
|
|
+ } else if (AlarmDefineState.State.NOT_DEAL.getType().equals(alarmState.getState())) {
|
|
|
+ // //报警状态异常时候
|
|
|
+ // alarmState.setLatestDataNormalstate(true);
|
|
|
//报警恢复条件满足,判断是否满足报警恢复持续时间
|
|
|
if (endResult) {
|
|
|
String endTime = alarmState.getAlarmEndTime();
|
|
@@ -277,7 +282,8 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
* @since: 2020/12/17 4:40 下午
|
|
|
* @version: V1.0
|
|
|
*/
|
|
|
- private void sendAlarmContinueMessage(String alarmId, long lastTime, HashMap paramMap, String projectId) throws InterruptedException {
|
|
|
+ private void sendAlarmContinueMessage(String alarmId, long lastTime, HashMap<String, Object> paramMap, String projectId)
|
|
|
+ throws InterruptedException {
|
|
|
NettyMessage<JSONObject> nettyMessage = new NettyMessage<>(11, projectId);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.put("id", alarmId);
|
|
@@ -291,8 +297,6 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
/**
|
|
|
* @param alarmDefine 报警定义
|
|
|
* @param dateTime :IOT数据采集时间
|
|
|
- * @param condition :报警定义条件
|
|
|
- * @param defineId :报警定义ID
|
|
|
* @param paramMap 报警触发值
|
|
|
* @description:处理当前值报警的情况
|
|
|
* @exception:
|
|
@@ -302,20 +306,22 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
* @since: 2020/10/20 22:31
|
|
|
* @version: V1.0
|
|
|
*/
|
|
|
- private void handlerNowDataAlarm(AlarmDefine alarmDefine, AlarmState alarmState, String dateTime, Condition condition, String defineId, HashMap paramMap) throws SchedulerException, InterruptedException {
|
|
|
- alarmState.setLatestDataNormalstate(false);
|
|
|
+ private void handlerNowDataAlarm(
|
|
|
+ AlarmDefine alarmDefine, String dateTime,
|
|
|
+ HashMap<String, Object> paramMap) throws InterruptedException {
|
|
|
+ // 根据defineId获取报警定义状态
|
|
|
+ String defineId = AlarmInfoCache.getAlarmDefineId(alarmDefine);
|
|
|
+ AlarmDefineState alarmDefineState = getAlarmStateFromCacheOrDb(defineId);
|
|
|
|
|
|
- JSONObject effectTime = condition.getEffectTime();
|
|
|
+ Condition condition = alarmDefine.getCondition();
|
|
|
// 判断报警是否在有效期内
|
|
|
boolean inEffectTime = ConditionUtil.inEffectiveTime(condition, dateTime);
|
|
|
- // 判断过期设置是否生效
|
|
|
- boolean expireSetEffective = ConditionUtil.expireSetEffective(condition);
|
|
|
|
|
|
if (inEffectTime) {
|
|
|
// 之前是报警状态,现在还是报警(可能并未产生报警记录,只是连续触发了报警条件)
|
|
|
- if (AlarmState.State.NOT_DEAL.getType().equals(alarmState.getState())) {
|
|
|
+ if (AlarmDefineState.State.NOT_DEAL.getType().equals(alarmDefineState.getState())) {
|
|
|
// 获取报警持续时间
|
|
|
- String alarmStartTime = alarmState.getAlarmStartTime();
|
|
|
+ String alarmStartTime = alarmDefineState.getAlarmStartTime();
|
|
|
long lastTime = DateUtils.betweenTwoTimeSecond(alarmStartTime, dateTime);
|
|
|
String alarmId = alarmRecordRepository.findById(defineId).orElse(new ZktAlarmRecordDO()).getAlarmId();
|
|
|
// 如果已经产生了报警记录
|
|
@@ -324,99 +330,165 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
sendAlarmContinueMessage(alarmId, lastTime, paramMap, alarmDefine.getProjectId());
|
|
|
}
|
|
|
}
|
|
|
- //之前是是正常时候
|
|
|
- if (AlarmState.State.NORMAL.getType().equals(alarmState.getState())) {
|
|
|
- long timeSecond = 0;
|
|
|
- if (StringUtil.isNotEmpty(alarmState.getAlarmStartTime())) {
|
|
|
- timeSecond = DateUtils.betweenTwoTimeSecond(alarmState.getAlarmStartTime(), dateTime);
|
|
|
+ //之前是是正常状态
|
|
|
+ if (AlarmDefineState.State.NORMAL.getType().equals(alarmDefineState.getState())) {
|
|
|
+ // 报警持续时间
|
|
|
+ long alarmLastTime = 0;
|
|
|
+ if (StringUtil.isNotEmpty(alarmDefineState.getAlarmStartTime())) {
|
|
|
+ alarmLastTime = DateUtils.betweenTwoTimeSecond(alarmDefineState.getAlarmStartTime(), dateTime);
|
|
|
} else {
|
|
|
//设置开始报警时间
|
|
|
- alarmState.setAlarmStartTime(dateTime);
|
|
|
- }
|
|
|
- LocalDateTime expireDateTime = null;
|
|
|
- Date expireDate = null;
|
|
|
- if (expireSetEffective && "period".equals(effectTime.getString("type"))) {
|
|
|
- //过期时间
|
|
|
- String expireTime = effectTime.getJSONObject("period").getString("endTime");
|
|
|
- LocalTime localTime = LocalTime.parse(expireTime, DateTimeFormatter.ofPattern(DateUtils.sdfTimeNotDate));
|
|
|
- expireDateTime = LocalDateTime.of(LocalDate.now(), localTime);
|
|
|
- expireDate = DateUtils.localDateTime2Date(expireDateTime);
|
|
|
+ alarmDefineState.setAlarmStartTime(dateTime);
|
|
|
}
|
|
|
|
|
|
- if (timeSecond >= condition.getTriggerUphold()) {
|
|
|
- log.warn("大于持续时间了,产生一条报警[{}]>[{}]", timeSecond, condition.getTriggerUphold());
|
|
|
- AlarmRecord alarmRecord = AlarmRecord.builder()
|
|
|
- .category(alarmDefine.getCategory())
|
|
|
- .concern(alarmDefine.getConcern())
|
|
|
- .level(alarmDefine.getLevel())
|
|
|
- .projectId(alarmDefine.getProjectId())
|
|
|
- .state(1)
|
|
|
- .triggerTime(DateUtils.parseDate(dateTime))
|
|
|
- .remark(alarmDefine.getRemark())
|
|
|
- .triggerInfo(JSONObject.toJSONString(paramMap))
|
|
|
- .condition(condition.toString())
|
|
|
- .effectEndTime(expireDate)
|
|
|
- .groupCode(groupCode)
|
|
|
- .itemCode(alarmDefine.getItemCode())
|
|
|
- .objId(alarmDefine.getObjId())
|
|
|
- .classCode(alarmDefine.getClassCode())
|
|
|
- .createUser(systemId)
|
|
|
- .build();
|
|
|
- NettyMessage<AlarmRecord> nettyMessage = new NettyMessage<>(5, alarmDefine.getProjectId());
|
|
|
- nettyMessage.setContent(Arrays.asList(alarmRecord));
|
|
|
- //推送一条报警记录给远端
|
|
|
- groupNettyClient.sendMessage(nettyMessage.toString());
|
|
|
- ZktAlarmRecordDO zktAlarmRecordDO = alarmRecordRepository.findById(defineId).orElse(new ZktAlarmRecordDO());
|
|
|
- zktAlarmRecordDO.setDefinitionId(defineId);
|
|
|
- zktAlarmRecordDO.setObjId(alarmDefine.getObjId());
|
|
|
- zktAlarmRecordDO.setItemCode(alarmDefine.getItemCode());
|
|
|
- zktAlarmRecordDO.setState("1");
|
|
|
- zktAlarmRecordDO.setProjectId(alarmDefine.getProjectId());
|
|
|
- alarmRecordRepository.save(zktAlarmRecordDO);
|
|
|
- alarmState.setState(AlarmState.State.NOT_DEAL.getType());
|
|
|
+ // 获取报警过期时间
|
|
|
+ LocalDateTime expireDateTime = getExpireLocalDateTime(dateTime, condition);
|
|
|
+
|
|
|
+ if (alarmLastTime >= condition.getTriggerUphold()) {
|
|
|
+ log.info("defineId: [{}]", defineId);
|
|
|
+ log.info("大于持续时间了,产生一条报警[{}]>[{}]", alarmLastTime, condition.getTriggerUphold());
|
|
|
+ // 发送创建报警记录的消息
|
|
|
+ sendCreateAlarmRecordMessage(alarmDefine, dateTime, paramMap,
|
|
|
+ DateUtils.localDateTime2Date(expireDateTime));
|
|
|
+ // 边缘端保存报警信息
|
|
|
+ saveZktAlarmRecord(alarmDefine);
|
|
|
+ // 报警定义状态更新为未处理
|
|
|
+ alarmDefineState.setState(AlarmDefineState.State.NOT_DEAL.getType());
|
|
|
//有过期时间,生成报警过期消息
|
|
|
- if (expireSetEffective && "period".equals(effectTime.getString("type"))) {
|
|
|
+ if (expireDateTime != null) {
|
|
|
//过期时间
|
|
|
- log.error("产生一条定时过期报警消息");
|
|
|
- String alarmId = alarmRecordRepository.findById(defineId).orElse(new ZktAlarmRecordDO()).getAlarmId();
|
|
|
- ZktAlarmRecordDO alarmRecordDO = ZktAlarmRecordDO.builder()
|
|
|
- .alarmTime(alarmState.getAlarmStartTime())
|
|
|
- .effectEndTime(DateUtils.format(expireDateTime))
|
|
|
- .definitionId(defineId)
|
|
|
- .itemCode(alarmDefine.getItemCode())
|
|
|
- .name(alarmDefine.getName())
|
|
|
- .objId(alarmDefine.getObjId())
|
|
|
- .state("3") //要变成已过期
|
|
|
- .alarmId(alarmId)
|
|
|
- .build();
|
|
|
- JobDataMap jobDataMap = new JobDataMap();
|
|
|
- jobDataMap.put("alarmRecord", alarmRecordDO.toString());
|
|
|
- jobDataMap.put("refire", "0");
|
|
|
- jobDataMap.put("expireTime", DateUtils.format(expireDateTime));
|
|
|
- jobDataMap.put("defineId", defineId);
|
|
|
- //过期
|
|
|
- jobDataMap.put("state", "3");
|
|
|
- String jobName = defineId;
|
|
|
- ExpireAlarmMessage em = new ExpireAlarmMessage();
|
|
|
- //过期消息
|
|
|
- em.setType("1");
|
|
|
- em.setStartTime(DateUtils.localDateTime2Date(expireDateTime));
|
|
|
- em.setJobDataMap(jobDataMap);
|
|
|
- em.setJobName(jobName);
|
|
|
- em.setJobGroupName("expire");
|
|
|
- ExpireAlarmQueue.getExpireAlarmMessageQueue().produce(em);
|
|
|
- //alarmQuartzService.addExpireJob(DateUtils.localDateTime2Date(expireDateTime), jobName, "expire", jobDataMap);
|
|
|
+ log.info("产生一条定时过期报警消息");
|
|
|
+ // 创建一条过期任务
|
|
|
+ createExpireJob(alarmDefine, alarmDefineState, expireDateTime);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- //不在生效时间的段的产生报警,要保存最近一次的数值是否是是报警
|
|
|
- //其他条件全部改成默认值(不报警,不过期,报警开始时间和结束时间为空)
|
|
|
+ // 其他条件全部改成默认值(不报警,不过期,报警开始时间和结束时间为空)
|
|
|
log.info("defineId: [{}]", defineId);
|
|
|
log.info("[{}]不在生效时间,重置报警状态", dateTime);
|
|
|
- log.info("生效时间为:[{}]", effectTime.toJSONString());
|
|
|
- alarmState.reset();
|
|
|
+ log.info("生效时间为:[{}]", condition.getEffectTime());
|
|
|
+ alarmDefineState.reset();
|
|
|
+ }
|
|
|
+ alarmInfoCache.setAlarmState(defineId, alarmDefineState);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description: 获取报警过期时间
|
|
|
+ * @param: triggerTime 报警触发时间
|
|
|
+ * @param: condition 报警条件
|
|
|
+ * @return: java.time.LocalDateTime
|
|
|
+ * @exception:
|
|
|
+ * @author: lixing
|
|
|
+ * @company: Persagy Technology Co.,Ltd
|
|
|
+ * @since: 2021/1/8 下午6:16
|
|
|
+ * @version: V1.0
|
|
|
+ */
|
|
|
+ private LocalDateTime getExpireLocalDateTime(String triggerTime, Condition condition) {
|
|
|
+ // 判断过期设置是否生效
|
|
|
+ boolean expireSetEffective = ConditionUtil.expireSetEffective(condition);
|
|
|
+
|
|
|
+ if (!expireSetEffective) {
|
|
|
+ return null;
|
|
|
}
|
|
|
- alarmInfoCache.setAlarmState(defineId, alarmState);
|
|
|
+
|
|
|
+ //过期时间
|
|
|
+ String expireTime = ConditionUtil.getEffectEndTime(condition);
|
|
|
+ LocalTime localTime = LocalTime.parse(expireTime, DateTimeFormatter.ofPattern(DateUtils.sdfTimeNotDate));
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateUtils.sdfDay);
|
|
|
+ LocalDate triggerDate = LocalDate.parse(DateUtils.getDate(triggerTime), formatter);
|
|
|
+ return LocalDateTime.of(triggerDate, localTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void createExpireJob(AlarmDefine alarmDefine, AlarmDefineState alarmDefineState, LocalDateTime expireDateTime) throws InterruptedException {
|
|
|
+ String defineId = AlarmInfoCache.getAlarmDefineId(alarmDefine);
|
|
|
+ String alarmId = alarmRecordRepository.findById(defineId).orElse(new ZktAlarmRecordDO()).getAlarmId();
|
|
|
+ ZktAlarmRecordDO alarmRecordDO = ZktAlarmRecordDO.builder()
|
|
|
+ .alarmTime(alarmDefineState.getAlarmStartTime())
|
|
|
+ .effectEndTime(DateUtils.format(expireDateTime))
|
|
|
+ .definitionId(defineId)
|
|
|
+ .itemCode(alarmDefine.getItemCode())
|
|
|
+ .name(alarmDefine.getName())
|
|
|
+ .objId(alarmDefine.getObjId())
|
|
|
+ //要变成已过期
|
|
|
+ .state("3")
|
|
|
+ .alarmId(alarmId)
|
|
|
+ .build();
|
|
|
+ JobDataMap jobDataMap = new JobDataMap();
|
|
|
+ jobDataMap.put("alarmRecord", alarmRecordDO.toString());
|
|
|
+ jobDataMap.put("refire", "0");
|
|
|
+ jobDataMap.put("expireTime", DateUtils.format(expireDateTime));
|
|
|
+ jobDataMap.put("defineId", defineId);
|
|
|
+ //过期
|
|
|
+ jobDataMap.put("state", "3");
|
|
|
+ ExpireAlarmMessage em = new ExpireAlarmMessage();
|
|
|
+ //过期消息
|
|
|
+ em.setType("1");
|
|
|
+ em.setStartTime(DateUtils.localDateTime2Date(expireDateTime));
|
|
|
+ em.setJobDataMap(jobDataMap);
|
|
|
+ em.setJobName(defineId);
|
|
|
+ em.setJobGroupName("expire");
|
|
|
+ ExpireAlarmQueue.getExpireAlarmMessageQueue().produce(em);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description: 边缘端保存报警信息
|
|
|
+ * @param: alarmDefine 报警定义
|
|
|
+ * @return: void
|
|
|
+ * @exception:
|
|
|
+ * @author: lixing
|
|
|
+ * @company: Persagy Technology Co.,Ltd
|
|
|
+ * @since: 2021/1/8 下午5:55
|
|
|
+ * @version: V1.0
|
|
|
+ */
|
|
|
+ private void saveZktAlarmRecord(AlarmDefine alarmDefine) {
|
|
|
+ String defineId = AlarmInfoCache.getAlarmDefineId(alarmDefine);
|
|
|
+ ZktAlarmRecordDO zktAlarmRecordDO = alarmRecordRepository.findById(defineId).orElse(new ZktAlarmRecordDO());
|
|
|
+ zktAlarmRecordDO.setDefinitionId(defineId);
|
|
|
+ zktAlarmRecordDO.setObjId(alarmDefine.getObjId());
|
|
|
+ zktAlarmRecordDO.setItemCode(alarmDefine.getItemCode());
|
|
|
+ zktAlarmRecordDO.setState("1");
|
|
|
+ zktAlarmRecordDO.setProjectId(alarmDefine.getProjectId());
|
|
|
+ alarmRecordRepository.save(zktAlarmRecordDO);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @description: 发送创建报警记录消息
|
|
|
+ * @param: alarmDefine 报警定义
|
|
|
+ * @param: triggerTime 触发时间
|
|
|
+ * @param: triggerInfo 触发值
|
|
|
+ * @param: expireDate 过期时间
|
|
|
+ * @return: void
|
|
|
+ * @exception:
|
|
|
+ * @author: lixing
|
|
|
+ * @company: Persagy Technology Co.,Ltd
|
|
|
+ * @since: 2021/1/8 下午5:38
|
|
|
+ * @version: V1.0
|
|
|
+ */
|
|
|
+ private void sendCreateAlarmRecordMessage(
|
|
|
+ AlarmDefine alarmDefine, String triggerTime,
|
|
|
+ HashMap<String, Object> triggerInfo, Date expireDate) throws InterruptedException {
|
|
|
+ Condition condition = alarmDefine.getCondition();
|
|
|
+ AlarmRecord alarmRecord = AlarmRecord.builder()
|
|
|
+ .category(alarmDefine.getCategory())
|
|
|
+ .concern(alarmDefine.getConcern())
|
|
|
+ .level(alarmDefine.getLevel())
|
|
|
+ .projectId(alarmDefine.getProjectId())
|
|
|
+ .state(1)
|
|
|
+ .triggerTime(DateUtils.parseDate(triggerTime))
|
|
|
+ .remark(alarmDefine.getRemark())
|
|
|
+ .triggerInfo(JSONObject.toJSONString(triggerInfo))
|
|
|
+ .condition(condition.toString())
|
|
|
+ .effectEndTime(expireDate)
|
|
|
+ .groupCode(groupCode)
|
|
|
+ .itemCode(alarmDefine.getItemCode())
|
|
|
+ .objId(alarmDefine.getObjId())
|
|
|
+ .classCode(alarmDefine.getClassCode())
|
|
|
+ .createUser(systemId)
|
|
|
+ .build();
|
|
|
+ NettyMessage<AlarmRecord> nettyMessage = new NettyMessage<>(5, alarmDefine.getProjectId());
|
|
|
+ nettyMessage.setContent(Collections.singletonList(alarmRecord));
|
|
|
+ //推送一条报警记录给远端
|
|
|
+ groupNettyClient.sendMessage(nettyMessage.toString());
|
|
|
}
|
|
|
}
|