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);
// 检查阈值是否超出范围
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);
}
// OPEN_ALARM为1时不检查
else if ("1".equals(openAlarm)) {
// 不检查报警
}
// 其他情况正常检查OPEN_ALARM为0或其他值
else {
checkThreshold(data);
}
dataList.add(data);
}
}
@ -243,6 +257,7 @@ public class AppPosiDeviceController {
data.put("TARGET_STATUS", pageData.getString("TARGET_STATUS"));
data.put("CORPINFO_ID", pageData.getString("CORPINFO_ID"));
data.put("REPORT_ID", pageData.getString("REPORT_ID"));
data.put("OPEN_ALARM", pageData.getString("OPEN_ALARM"));
} else {
data.put("IPCDEVICE_ID", "");
data.put("DEVICE_ID", "");
@ -264,6 +279,7 @@ public class AppPosiDeviceController {
data.put("TARGET_STATUS", "");
data.put("CORPINFO_ID", "");
data.put("REPORT_ID", "");
data.put("OPEN_ALARM", "");
}
return data;
}
@ -363,6 +379,7 @@ public class AppPosiDeviceController {
itemPageData.put("CORPINFO_ID", item.get("CORPINFO_ID"));
itemPageData.put("OPERATTIME", DateUtil.date2Str(new Date()));
itemPageData.put("CREATTIME", DateUtil.date2Str(new Date()));
itemPageData.put("REPORT_ID", item.get("REPORT_ID"));
alarmLogArrayList.add(itemPageData);
// 添加到活跃报警列表用于处理warninfo表
@ -419,6 +436,11 @@ public class AppPosiDeviceController {
warnInfo.put("OPERATTIME", currentTime);
warnInfo.put("ISDELETE", "0");
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);

View File

@ -312,12 +312,30 @@ public class MesDataScheduled extends IJobHandler {
mesData.put("TARGET_STATUS", pageData.getString("TARGET_STATUS"));
mesData.put("CORPINFO_ID", pageData.getString("CORPINFO_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("除尘器")) {
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);
}
// OPEN_ALARM为1时不检查
else if ("1".equals(openAlarm)) {
// 不检查报警
}
// 其他情况正常检查OPEN_ALARM为0或其他值
else {
checkThreshold(mesData);
}
}
} else {
mesData.put("IPCDEVICE_ID", "");
mesData.put("DEVICE_ID","");
@ -339,6 +357,7 @@ public class MesDataScheduled extends IJobHandler {
mesData.put("TARGET_STATUS", "");
mesData.put("CORPINFO_ID", "");
mesData.put("REPORT_ID", "");
mesData.put("OPEN_ALARM", "");
}
mesSaveList.add(mesData);
}
@ -513,6 +532,7 @@ public class MesDataScheduled extends IJobHandler {
itemPageData.put("CORPINFO_ID", item.get("CORPINFO_ID"));
itemPageData.put("OPERATTIME", DateUtil.date2Str(new Date()));
itemPageData.put("CREATTIME", DateUtil.date2Str(new Date()));
itemPageData.put("REPORT_ID", item.get("REPORT_ID"));
alarmLogArrayList.add(itemPageData);
// 添加到活跃报警列表用于处理warninfo表
@ -570,6 +590,11 @@ public class MesDataScheduled extends IJobHandler {
warnInfo.put("OPERATTIME", currentTime);
warnInfo.put("ISDELETE", "0");
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);

View File

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

View File

@ -25,10 +25,10 @@
<insert id="saveWarnInfo" parameterType="com.zcloud.entity.PageData">
INSERT INTO tb_iron_warninfo
(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
(#{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>
<update id="updateWarnInfo" parameterType="com.zcloud.entity.PageData">