diff --git a/src/main/java/com/zcloud/controller/AppPosiDeviceController.java b/src/main/java/com/zcloud/controller/AppPosiDeviceController.java index 5752a41..e2ecb15 100644 --- a/src/main/java/com/zcloud/controller/AppPosiDeviceController.java +++ b/src/main/java/com/zcloud/controller/AppPosiDeviceController.java @@ -1,5 +1,6 @@ package com.zcloud.controller; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.xxl.job.core.context.XxlJobHelper; import com.zcloud.entity.PageData; @@ -487,6 +488,9 @@ public class AppPosiDeviceController { String currentTime = DateUtil.date2Str(new Date()); long currentTimestamp = System.currentTimeMillis(); + // 用于存储消警数据的列表 + ArrayList recoverAlarms = new ArrayList<>(); + // 处理新产生的报警 for (PageData alarm : activeAlarms) { String key = alarm.getString("EQUIPMENT_ID") + "_" + alarm.getString("PLC_ID") + "_" + alarm.getString("PLC_NAME"); @@ -581,6 +585,9 @@ public class AppPosiDeviceController { // 更新数据库中的记录 tbIronWarnInfoDao.updateWarnInfo(warnInfo); + // 添加到消警列表中,用于存储到Redis + recoverAlarms.add(warnInfo); + XxlJobHelper.log("更新告警信息为已消警: 设备ID={}, PLC_ID={}, 报警内容={}", warnInfo.get("EQUIPMENT_ID"), warnInfo.get("PLC_ID"), warnInfo.get("OVERVIEW_OF_ALERTS")); @@ -594,6 +601,23 @@ public class AppPosiDeviceController { currentAlarmInfo.remove(key); } } + + // 将消警数据存入Redis + if (!recoverAlarms.isEmpty()) { + // 获取现有的消警数据 + ArrayList existingRecoverAlarms = new ArrayList<>(); + if (!Tools.isEmpty(redisUtil.get("WMK_RECOVER_ALARM_DATA_LIST"))) { + existingRecoverAlarms.addAll(JSONArray.parseArray(redisUtil.get("WMK_RECOVER_ALARM_DATA_LIST").toString(), PageData.class)); + } + // 添加新的消警数据 + existingRecoverAlarms.addAll(recoverAlarms); + // 限制存储数量,避免数据过大 + if (existingRecoverAlarms.size() > 1000) { + existingRecoverAlarms = new ArrayList<>(existingRecoverAlarms.subList(existingRecoverAlarms.size() - 1000, existingRecoverAlarms.size())); + } + redisUtil.set("WMK_RECOVER_ALARM_DATA_LIST", JSONObject.toJSONString(existingRecoverAlarms)); + XxlJobHelper.log("成功将{}条消警数据存入Redis", recoverAlarms.size()); + } } // 参数示例 // { diff --git a/src/main/java/com/zcloud/scheduled/dataDocking/MesDataScheduled.java b/src/main/java/com/zcloud/scheduled/dataDocking/MesDataScheduled.java index ef8074b..0d22359 100644 --- a/src/main/java/com/zcloud/scheduled/dataDocking/MesDataScheduled.java +++ b/src/main/java/com/zcloud/scheduled/dataDocking/MesDataScheduled.java @@ -1,5 +1,6 @@ package com.zcloud.scheduled.dataDocking; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.IJobHandler; @@ -12,6 +13,7 @@ import com.zcloud.mapper.dsno2.target.MesDeviceMonitoringMapper; import com.zcloud.service.deviceMonitoringSrevice.DeviceMonitoringAlarmSrevice; import com.zcloud.util.DateUtil; import com.zcloud.util.RedisUtil; +import com.zcloud.util.Tools; import com.zcloud.util.UuidUtil; import com.zcloud.mapper.datasource.tbIron.TbIronWarnInfoDao; import org.springframework.scheduling.annotation.Scheduled; @@ -649,6 +651,9 @@ public class MesDataScheduled extends IJobHandler { String currentTime = DateUtil.date2Str(new Date()); long currentTimestamp = System.currentTimeMillis(); + // 用于存储消警数据的列表 + ArrayList recoverAlarms = new ArrayList<>(); + // 处理新产生的报警 for (PageData alarm : activeAlarms) { String key = alarm.getString("EQUIPMENT_ID") + "_" + alarm.getString("PLC_ID") + "_" + alarm.getString("PLC_NAME"); @@ -743,6 +748,9 @@ public class MesDataScheduled extends IJobHandler { // 更新数据库中的记录 tbIronWarnInfoDao.updateWarnInfo(warnInfo); + // 添加到消警列表中,用于存储到Redis + recoverAlarms.add(warnInfo); + XxlJobHelper.log("更新告警信息为已消警: 设备ID={}, PLC_ID={}, 报警内容={}", warnInfo.get("EQUIPMENT_ID"), warnInfo.get("PLC_ID"), warnInfo.get("OVERVIEW_OF_ALERTS")); @@ -756,5 +764,22 @@ public class MesDataScheduled extends IJobHandler { currentAlarmInfo.remove(key); } } + + // 将消警数据存入Redis + if (!recoverAlarms.isEmpty()) { + // 获取现有的消警数据 + ArrayList existingRecoverAlarms = new ArrayList<>(); + if (!Tools.isEmpty(redisUtil.get("MES_RECOVER_ALARM_DATA_LIST"))) { + existingRecoverAlarms.addAll(JSONArray.parseArray(redisUtil.get("MES_RECOVER_ALARM_DATA_LIST").toString(), PageData.class)); + } + // 添加新的消警数据 + existingRecoverAlarms.addAll(recoverAlarms); + // 限制存储数量,避免数据过大 + if (existingRecoverAlarms.size() > 1000) { + existingRecoverAlarms = new ArrayList<>(existingRecoverAlarms.subList(existingRecoverAlarms.size() - 1000, existingRecoverAlarms.size())); + } + redisUtil.set("MES_RECOVER_ALARM_DATA_LIST", JSONObject.toJSONString(existingRecoverAlarms)); + XxlJobHelper.log("成功将{}条消警数据存入Redis", recoverAlarms.size()); + } } } \ No newline at end of file