feat(data-docking): 实现报警与消警数据处理及Redis存储机制
- 移除测试报警数据代码,改为从Redis读取真实报警数据 - 新增处理活跃报警和消警数据的逻辑 - 实现报警类型识别与阈值提取功能 - 完善报警时间格式化处理- 增加消警数据收集并存储至Redis的功能 - 优化Redis数据存储结构,限制数据条目数量防止内存溢出 - 更新日志记录内容,明确区分报警与实时数据处理流程 - 提取获取报警阈值方法,增强代码复用性dev
parent
73db177562
commit
db57297c8f
|
|
@ -1,5 +1,6 @@
|
||||||
package com.zcloud.controller;
|
package com.zcloud.controller;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xxl.job.core.context.XxlJobHelper;
|
import com.xxl.job.core.context.XxlJobHelper;
|
||||||
import com.zcloud.entity.PageData;
|
import com.zcloud.entity.PageData;
|
||||||
|
|
@ -487,6 +488,9 @@ public class AppPosiDeviceController {
|
||||||
String currentTime = DateUtil.date2Str(new Date());
|
String currentTime = DateUtil.date2Str(new Date());
|
||||||
long currentTimestamp = System.currentTimeMillis();
|
long currentTimestamp = System.currentTimeMillis();
|
||||||
|
|
||||||
|
// 用于存储消警数据的列表
|
||||||
|
ArrayList<PageData> recoverAlarms = new ArrayList<>();
|
||||||
|
|
||||||
// 处理新产生的报警
|
// 处理新产生的报警
|
||||||
for (PageData alarm : activeAlarms) {
|
for (PageData alarm : activeAlarms) {
|
||||||
String key = alarm.getString("EQUIPMENT_ID") + "_" + alarm.getString("PLC_ID") + "_" + alarm.getString("PLC_NAME");
|
String key = alarm.getString("EQUIPMENT_ID") + "_" + alarm.getString("PLC_ID") + "_" + alarm.getString("PLC_NAME");
|
||||||
|
|
@ -581,6 +585,9 @@ public class AppPosiDeviceController {
|
||||||
// 更新数据库中的记录
|
// 更新数据库中的记录
|
||||||
tbIronWarnInfoDao.updateWarnInfo(warnInfo);
|
tbIronWarnInfoDao.updateWarnInfo(warnInfo);
|
||||||
|
|
||||||
|
// 添加到消警列表中,用于存储到Redis
|
||||||
|
recoverAlarms.add(warnInfo);
|
||||||
|
|
||||||
XxlJobHelper.log("更新告警信息为已消警: 设备ID={}, PLC_ID={}, 报警内容={}",
|
XxlJobHelper.log("更新告警信息为已消警: 设备ID={}, PLC_ID={}, 报警内容={}",
|
||||||
warnInfo.get("EQUIPMENT_ID"), warnInfo.get("PLC_ID"), warnInfo.get("OVERVIEW_OF_ALERTS"));
|
warnInfo.get("EQUIPMENT_ID"), warnInfo.get("PLC_ID"), warnInfo.get("OVERVIEW_OF_ALERTS"));
|
||||||
|
|
||||||
|
|
@ -594,6 +601,23 @@ public class AppPosiDeviceController {
|
||||||
currentAlarmInfo.remove(key);
|
currentAlarmInfo.remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 将消警数据存入Redis
|
||||||
|
if (!recoverAlarms.isEmpty()) {
|
||||||
|
// 获取现有的消警数据
|
||||||
|
ArrayList<PageData> 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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 参数示例
|
// 参数示例
|
||||||
// {
|
// {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.zcloud.scheduled.dataDocking;
|
package com.zcloud.scheduled.dataDocking;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.xxl.job.core.context.XxlJobHelper;
|
import com.xxl.job.core.context.XxlJobHelper;
|
||||||
import com.xxl.job.core.handler.IJobHandler;
|
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.service.deviceMonitoringSrevice.DeviceMonitoringAlarmSrevice;
|
||||||
import com.zcloud.util.DateUtil;
|
import com.zcloud.util.DateUtil;
|
||||||
import com.zcloud.util.RedisUtil;
|
import com.zcloud.util.RedisUtil;
|
||||||
|
import com.zcloud.util.Tools;
|
||||||
import com.zcloud.util.UuidUtil;
|
import com.zcloud.util.UuidUtil;
|
||||||
import com.zcloud.mapper.datasource.tbIron.TbIronWarnInfoDao;
|
import com.zcloud.mapper.datasource.tbIron.TbIronWarnInfoDao;
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
|
@ -649,6 +651,9 @@ public class MesDataScheduled extends IJobHandler {
|
||||||
String currentTime = DateUtil.date2Str(new Date());
|
String currentTime = DateUtil.date2Str(new Date());
|
||||||
long currentTimestamp = System.currentTimeMillis();
|
long currentTimestamp = System.currentTimeMillis();
|
||||||
|
|
||||||
|
// 用于存储消警数据的列表
|
||||||
|
ArrayList<PageData> recoverAlarms = new ArrayList<>();
|
||||||
|
|
||||||
// 处理新产生的报警
|
// 处理新产生的报警
|
||||||
for (PageData alarm : activeAlarms) {
|
for (PageData alarm : activeAlarms) {
|
||||||
String key = alarm.getString("EQUIPMENT_ID") + "_" + alarm.getString("PLC_ID") + "_" + alarm.getString("PLC_NAME");
|
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);
|
tbIronWarnInfoDao.updateWarnInfo(warnInfo);
|
||||||
|
|
||||||
|
// 添加到消警列表中,用于存储到Redis
|
||||||
|
recoverAlarms.add(warnInfo);
|
||||||
|
|
||||||
XxlJobHelper.log("更新告警信息为已消警: 设备ID={}, PLC_ID={}, 报警内容={}",
|
XxlJobHelper.log("更新告警信息为已消警: 设备ID={}, PLC_ID={}, 报警内容={}",
|
||||||
warnInfo.get("EQUIPMENT_ID"), warnInfo.get("PLC_ID"), warnInfo.get("OVERVIEW_OF_ALERTS"));
|
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);
|
currentAlarmInfo.remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 将消警数据存入Redis
|
||||||
|
if (!recoverAlarms.isEmpty()) {
|
||||||
|
// 获取现有的消警数据
|
||||||
|
ArrayList<PageData> 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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue