feat(alarm):优化报警检查逻辑并新增报告标识字段- 调整AppPosiDeviceController和MesDataScheduled中的报警检查逻辑

- 新增OPEN_ALARM字段控制是否触发报警检查
- 当REPORT_ID非空时强制执行报警检查,忽略OPEN_ALARM设置
- 在TbIronPlcMapper.xml中增加OPEN_ALARM字段查询支持
- 在TbIronWarningInfoDao.xml中新增IS_REPORT字段用于区分报警来源
- 保存报警信息时记录是否关联报告ID
- 重构代码结构提升可读性和维护性
dev
wangyan 2025-11-13 14:26:38 +08:00
parent 8ea3c56abd
commit 5b82275226
4 changed files with 56 additions and 7 deletions

View File

@ -185,8 +185,22 @@ public class AppPosiDeviceController {
// 添加到数据列表 // 添加到数据列表
Map<String, Object> data = saveData(currentValue, equipmentId, targetAllList, processingBatchId, processingTime); Map<String, Object> data = saveData(currentValue, equipmentId, targetAllList, processingBatchId, processingTime);
// 检查阈值是否超出范围
String reportId = target.getString("REPORT_ID");
String openAlarm = target.getString("OPEN_ALARM");
// REPORT_ID不为空且不为空串时必须检查即使OPEN_ALARM为1也检查
if (reportId != null && !"".equals(reportId.trim())) {
checkThreshold(data); checkThreshold(data);
}
// OPEN_ALARM为1时不检查
else if ("1".equals(openAlarm)) {
// 不检查报警
}
// 其他情况正常检查OPEN_ALARM为0或其他值
else {
checkThreshold(data);
}
dataList.add(data); dataList.add(data);
} }
} }
@ -243,6 +257,7 @@ public class AppPosiDeviceController {
data.put("TARGET_STATUS", pageData.getString("TARGET_STATUS")); data.put("TARGET_STATUS", pageData.getString("TARGET_STATUS"));
data.put("CORPINFO_ID", pageData.getString("CORPINFO_ID")); data.put("CORPINFO_ID", pageData.getString("CORPINFO_ID"));
data.put("REPORT_ID", pageData.getString("REPORT_ID")); data.put("REPORT_ID", pageData.getString("REPORT_ID"));
data.put("OPEN_ALARM", pageData.getString("OPEN_ALARM"));
} else { } else {
data.put("IPCDEVICE_ID", ""); data.put("IPCDEVICE_ID", "");
data.put("DEVICE_ID", ""); data.put("DEVICE_ID", "");
@ -264,6 +279,7 @@ public class AppPosiDeviceController {
data.put("TARGET_STATUS", ""); data.put("TARGET_STATUS", "");
data.put("CORPINFO_ID", ""); data.put("CORPINFO_ID", "");
data.put("REPORT_ID", ""); data.put("REPORT_ID", "");
data.put("OPEN_ALARM", "");
} }
return data; return data;
} }
@ -363,6 +379,7 @@ public class AppPosiDeviceController {
itemPageData.put("CORPINFO_ID", item.get("CORPINFO_ID")); itemPageData.put("CORPINFO_ID", item.get("CORPINFO_ID"));
itemPageData.put("OPERATTIME", DateUtil.date2Str(new Date())); itemPageData.put("OPERATTIME", DateUtil.date2Str(new Date()));
itemPageData.put("CREATTIME", DateUtil.date2Str(new Date())); itemPageData.put("CREATTIME", DateUtil.date2Str(new Date()));
itemPageData.put("REPORT_ID", item.get("REPORT_ID"));
alarmLogArrayList.add(itemPageData); alarmLogArrayList.add(itemPageData);
// 添加到活跃报警列表用于处理warninfo表 // 添加到活跃报警列表用于处理warninfo表
@ -419,6 +436,11 @@ public class AppPosiDeviceController {
warnInfo.put("OPERATTIME", currentTime); warnInfo.put("OPERATTIME", currentTime);
warnInfo.put("ISDELETE", "0"); warnInfo.put("ISDELETE", "0");
warnInfo.put("FEED_BACK", "1"); warnInfo.put("FEED_BACK", "1");
if (alarm.get("REPORT_ID") != null && alarm.get("REPORT_ID") != ""){
warnInfo.put("IS_REPORT", "1");
}else {
warnInfo.put("IS_REPORT", "0");
}
// 保存到数据库 // 保存到数据库
tbIronWarnInfoDao.saveWarnInfo(warnInfo); tbIronWarnInfoDao.saveWarnInfo(warnInfo);

View File

@ -312,12 +312,30 @@ public class MesDataScheduled extends IJobHandler {
mesData.put("TARGET_STATUS", pageData.getString("TARGET_STATUS")); mesData.put("TARGET_STATUS", pageData.getString("TARGET_STATUS"));
mesData.put("CORPINFO_ID", pageData.getString("CORPINFO_ID")); mesData.put("CORPINFO_ID", pageData.getString("CORPINFO_ID"));
mesData.put("REPORT_ID", pageData.getString("REPORT_ID")); mesData.put("REPORT_ID", pageData.getString("REPORT_ID"));
mesData.put("OPEN_ALARM", pageData.getString("OPEN_ALARM"));
// 检查是否需要报警 // 检查是否需要报警
// 除尘器设备不需要检查报警 // 根据需求调整报警检查逻辑:
// 1. 除尘器设备不检查(最高优先级)
// 2. REPORT_ID不为空且不为空串时必须检查次优先级
// 3. OPEN_ALARM为0时检查为1不检查第三优先级
if (!key.contains("除尘器")) { if (!key.contains("除尘器")) {
String reportId = pageData.getString("REPORT_ID");
String openAlarm = pageData.getString("OPEN_ALARM");
// REPORT_ID不为空且不为空串时必须检查即使OPEN_ALARM为1也检查
if (reportId != null && !"".equals(reportId.trim())) {
checkThreshold(mesData); checkThreshold(mesData);
} }
// OPEN_ALARM为1时不检查
else if ("1".equals(openAlarm)) {
// 不检查报警
}
// 其他情况正常检查OPEN_ALARM为0或其他值
else {
checkThreshold(mesData);
}
}
} else { } else {
mesData.put("IPCDEVICE_ID", ""); mesData.put("IPCDEVICE_ID", "");
mesData.put("DEVICE_ID",""); mesData.put("DEVICE_ID","");
@ -339,6 +357,7 @@ public class MesDataScheduled extends IJobHandler {
mesData.put("TARGET_STATUS", ""); mesData.put("TARGET_STATUS", "");
mesData.put("CORPINFO_ID", ""); mesData.put("CORPINFO_ID", "");
mesData.put("REPORT_ID", ""); mesData.put("REPORT_ID", "");
mesData.put("OPEN_ALARM", "");
} }
mesSaveList.add(mesData); mesSaveList.add(mesData);
} }
@ -513,6 +532,7 @@ public class MesDataScheduled extends IJobHandler {
itemPageData.put("CORPINFO_ID", item.get("CORPINFO_ID")); itemPageData.put("CORPINFO_ID", item.get("CORPINFO_ID"));
itemPageData.put("OPERATTIME", DateUtil.date2Str(new Date())); itemPageData.put("OPERATTIME", DateUtil.date2Str(new Date()));
itemPageData.put("CREATTIME", DateUtil.date2Str(new Date())); itemPageData.put("CREATTIME", DateUtil.date2Str(new Date()));
itemPageData.put("REPORT_ID", item.get("REPORT_ID"));
alarmLogArrayList.add(itemPageData); alarmLogArrayList.add(itemPageData);
// 添加到活跃报警列表用于处理warninfo表 // 添加到活跃报警列表用于处理warninfo表
@ -570,6 +590,11 @@ public class MesDataScheduled extends IJobHandler {
warnInfo.put("OPERATTIME", currentTime); warnInfo.put("OPERATTIME", currentTime);
warnInfo.put("ISDELETE", "0"); warnInfo.put("ISDELETE", "0");
warnInfo.put("FEED_BACK", "1"); warnInfo.put("FEED_BACK", "1");
if (alarm.get("REPORT_ID") != null && alarm.get("REPORT_ID") != ""){
warnInfo.put("IS_REPORT", "1");
}else {
warnInfo.put("IS_REPORT", "0");
}
// 保存到数据库 // 保存到数据库
tbIronWarnInfoDao.saveWarnInfo(warnInfo); tbIronWarnInfoDao.saveWarnInfo(warnInfo);

View File

@ -41,6 +41,7 @@
e.DEVICE_ID, e.DEVICE_ID,
e.DEVICE_TYPE, e.DEVICE_TYPE,
e.DISPLAY_AREA, e.DISPLAY_AREA,
e.OPEN_ALARM,
mt.TARGET_NAME, mt.TARGET_NAME,
mt.TARGET_TYPE, mt.TARGET_TYPE,
mt.TARGET_PLACE, mt.TARGET_PLACE,
@ -107,6 +108,7 @@
p.EQUIPMENT_ID, p.EQUIPMENT_ID,
e.DEVICE_ID, e.DEVICE_ID,
e.DEVICE_TYPE, e.DEVICE_TYPE,
e.OPEN_ALARM,
mt.TARGET_NAME, mt.TARGET_NAME,
mt.TARGET_TYPE, mt.TARGET_TYPE,
mt.TARGET_PLACE, mt.TARGET_PLACE,

View File

@ -25,10 +25,10 @@
<insert id="saveWarnInfo" parameterType="com.zcloud.entity.PageData"> <insert id="saveWarnInfo" parameterType="com.zcloud.entity.PageData">
INSERT INTO tb_iron_warninfo INSERT INTO tb_iron_warninfo
(WARN_ID, WARN_STATUS, WARN_ORG, WARN_RANK, MESSAGE, START_TIME, (WARN_ID, WARN_STATUS, WARN_ORG, WARN_RANK, MESSAGE, START_TIME,
END_TIME, CORPINFO_ID, CREATOR, CREATTIME, OPERATOR, OPERATTIME,ISDELETE,FEED_BACK) END_TIME, CORPINFO_ID, CREATOR, CREATTIME, OPERATOR, OPERATTIME,ISDELETE,FEED_BACK,IS_REPORT)
VALUES VALUES
(#{WARN_ID}, #{WARN_STATUS}, #{WARN_ORG}, #{WARN_RANK}, #{MESSAGE}, #{START_TIME}, (#{WARN_ID}, #{WARN_STATUS}, #{WARN_ORG}, #{WARN_RANK}, #{MESSAGE}, #{START_TIME},
#{END_TIME}, #{CORPINFO_ID}, #{CREATOR}, #{CREATTIME}, #{OPERATOR}, #{OPERATTIME},#{ISDELETE},#{FEED_BACK}) #{END_TIME}, #{CORPINFO_ID}, #{CREATOR}, #{CREATTIME}, #{OPERATOR}, #{OPERATTIME},#{ISDELETE},#{FEED_BACK},#{IS_REPORT})
</insert> </insert>
<update id="updateWarnInfo" parameterType="com.zcloud.entity.PageData"> <update id="updateWarnInfo" parameterType="com.zcloud.entity.PageData">