diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java index 34dffb5..2636fae 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/DeviceDataProcessServiceImpl.java @@ -1726,32 +1726,62 @@ public class DeviceDataProcessServiceImpl extends AbstractBatteryDataProcessor i // 遍历数据map for (Map.Entry entry : obj.entrySet()) { + if (entry.getValue() == null) { + continue; + } String key = entry.getKey(); - Integer value = (Integer) entry.getValue(); + Long value = (Long) entry.getValue(); Boolean isCurrentAlarm = currentAlarmKeys.contains(key); - - // 值为 1且不在当前告警里面 - 新增告警 - if (value == 1 && !isCurrentAlarm) { - String matchRedisKey = category + "_" + key; - Object cacheObj = alarmInfoData.get(matchRedisKey); - if (cacheObj == null) { - // 处理空数据逻辑 - return; - } + String matchRedisKey = siteId + "_" + category + "_" + key; + // 默认告警值0是正常,1是异常 + Long alarmData = 1L; + Object cacheObj = alarmInfoData.get(matchRedisKey); + if (cacheObj != null) { + EmsAlarmMatchData matchInfo = JSON.toJavaObject(cacheObj, EmsAlarmMatchData.class); + alarmData = matchInfo.getAlarmData(); + } + // 处理告警 + if (value.equals(alarmData) && !isCurrentAlarm) { + // 上送值和匹配值相同,新增告警 EmsAlarmMatchData matchInfo = JSON.toJavaObject(cacheObj, EmsAlarmMatchData.class); EmsAlarmRecords emsAlarmRecord = convertAlarmRecord(siteId, deviceId, matchInfo); saveOrUpdateList.add(emsAlarmRecord); newAddRecordList.add(emsAlarmRecord); - } else if (value == 0 && isCurrentAlarm) {// 值为 0且在当前告警里面 - 更新告警已处理 - EmsAlarmRecords existingAlarm = needUpdateMap.get(key); - if (existingAlarm != null) { - existingAlarm.setStatus(AlarmStatus.DONE.getCode()); - existingAlarm.setUpdateTime(new Date()); - existingAlarm.setAlarmEndTime(new Date()); - saveOrUpdateList.add(existingAlarm); - toRemoveFromRedis.add(key); + } else { + if (isCurrentAlarm) { + // 在当前告警里面 - 更新告警已处理 + EmsAlarmRecords existingAlarm = needUpdateMap.get(key); + if (existingAlarm != null) { + existingAlarm.setStatus(AlarmStatus.DONE.getCode()); + existingAlarm.setUpdateTime(new Date()); + existingAlarm.setAlarmEndTime(new Date()); + saveOrUpdateList.add(existingAlarm); + toRemoveFromRedis.add(key); + } } } +// // 值为 1且不在当前告警里面 - 新增告警 +// if (value == 1 && !isCurrentAlarm) { +// String matchRedisKey = category + "_" + key; +// Object cacheObj = alarmInfoData.get(matchRedisKey); +// if (cacheObj == null) { +// // 处理空数据逻辑 +// return; +// } +// EmsAlarmMatchData matchInfo = JSON.toJavaObject(cacheObj, EmsAlarmMatchData.class); +// EmsAlarmRecords emsAlarmRecord = convertAlarmRecord(siteId, deviceId, matchInfo); +// saveOrUpdateList.add(emsAlarmRecord); +// newAddRecordList.add(emsAlarmRecord); +// } else if (value == 0 && isCurrentAlarm) {// 值为 0且在当前告警里面 - 更新告警已处理 +// EmsAlarmRecords existingAlarm = needUpdateMap.get(key); +// if (existingAlarm != null) { +// existingAlarm.setStatus(AlarmStatus.DONE.getCode()); +// existingAlarm.setUpdateTime(new Date()); +// existingAlarm.setAlarmEndTime(new Date()); +// saveOrUpdateList.add(existingAlarm); +// toRemoveFromRedis.add(key); +// } +// } } // 批量处理插入和更新操作 diff --git a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsAlarmRecordsServiceImpl.java b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsAlarmRecordsServiceImpl.java index 4fcedad..92687b1 100644 --- a/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsAlarmRecordsServiceImpl.java +++ b/ems-system/src/main/java/com/xzzn/ems/service/impl/EmsAlarmRecordsServiceImpl.java @@ -265,7 +265,7 @@ public class EmsAlarmRecordsServiceImpl implements IEmsAlarmRecordsService List alarmPointList = emsAlarmMatchDataMapper.selectEmsAlarmMatchDataList(null); Map resultMap = alarmPointList.stream() .collect(Collectors.toMap( - data->data.getDeviceCategory()+"_"+data.getPoint(), + data->data.getSiteId()+"_"+data.getDeviceCategory()+"_"+data.getPoint(), data->data, (existing, replacement) -> replacement ));