From 3f4d3772b00deab48035b7ef83bce6e202794c3d Mon Sep 17 00:00:00 2001 From: zq Date: Mon, 12 Jan 2026 15:18:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=91=8A=E8=AD=A6=E7=82=B9?= =?UTF-8?q?=E4=BD=8D=E8=A7=A3=E6=9E=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DeviceDataProcessServiceImpl.java | 66 ++++++++++++++----- .../impl/EmsAlarmRecordsServiceImpl.java | 2 +- 2 files changed, 49 insertions(+), 19 deletions(-) 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 ));