feat(scheduled): 调整报警持续时间和数据处理逻辑
- 将最小报警持续时间从10秒调整为30秒 - 移除对B枪工作位状态的判断逻辑-优化A枪工作位状态的数据处理流程 - 根据A枪工作位状态决定是否处理A1/B1和A2/B2数据 - 更新数据匹配规则,统一使用A枪状态进行判断-未匹配到配置数据时跳过处理并记录日志dev
parent
db57297c8f
commit
9c8df20545
|
|
@ -72,8 +72,8 @@ public class MesDataScheduled extends IJobHandler {
|
|||
// 报警确认次数阈值
|
||||
private static final int ALARM_CONFIRM_THRESHOLD = 3;
|
||||
|
||||
// 最小报警持续时间(毫秒),默认10秒
|
||||
private static final long MIN_ALARM_DURATION = 10 * 1000;
|
||||
// 最小报警持续时间(毫秒),默认30秒
|
||||
private static final long MIN_ALARM_DURATION = 30 * 1000;
|
||||
|
||||
@Override
|
||||
@XxlJob(value = "mesDataJob")
|
||||
|
|
@ -216,10 +216,8 @@ public class MesDataScheduled extends IJobHandler {
|
|||
Set<String> keySet = map.keySet();
|
||||
// 获取A枪和B枪的工作位状态
|
||||
Object aGunWorkPos1 = map.get("A枪工作位_1");
|
||||
Object bGunWorkPos1 = map.get("B枪工作位_1");
|
||||
Object aGunWorkPos2 = map.get("A枪工作位_2");
|
||||
Object bGunWorkPos2 = map.get("B枪工作位_2");
|
||||
|
||||
|
||||
for (String key : keySet) {
|
||||
HashMap<String, Object> mesData = new HashMap<>();
|
||||
mesData.put("MONITORING_ID", UuidUtil.get32UUID());
|
||||
|
|
@ -246,47 +244,52 @@ public class MesDataScheduled extends IJobHandler {
|
|||
collect = jll2TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
|
||||
} else if (suffix.equals("A1") || suffix.equals("B1")) {
|
||||
mesData.put("EQUIPMENT_ID", "21a32f0f65a41f2949ac832ac39714f0");
|
||||
// 根据枪的工作位状态决定匹配规则
|
||||
if ("A1".equals(suffix)) {
|
||||
// 当处理A1数据时
|
||||
if (aGunWorkPos1 != null && "0".equals(aGunWorkPos1.toString())) {
|
||||
// A枪工作位为0时,正常匹配A1数据
|
||||
collect = zl1TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
|
||||
} else if (bGunWorkPos1 != null && "0".equals(bGunWorkPos1.toString())) {
|
||||
// B枪工作位为0时,用A1的阈值匹配B1数据
|
||||
collect = zl1TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key.replace("_B1", "_A1"))).collect(Collectors.toList());
|
||||
}
|
||||
} else if ("B1".equals(suffix)) {
|
||||
// 当处理B1数据时
|
||||
if (bGunWorkPos1 != null && "0".equals(bGunWorkPos1.toString())) {
|
||||
// B枪工作位为0时,用A1的阈值匹配B1数据
|
||||
collect = zl1TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key.replace("_B1", "_A1"))).collect(Collectors.toList());
|
||||
} else if (aGunWorkPos1 != null && "0".equals(aGunWorkPos1.toString())) {
|
||||
// A枪工作位为0时,正常匹配B1数据
|
||||
collect = zl1TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
|
||||
// 根据A枪工作位_1的值决定处理哪些数据
|
||||
boolean shouldProcess = false;
|
||||
if ("A1".equals(suffix) && aGunWorkPos1 != null && "0".equals(aGunWorkPos1.toString())) {
|
||||
// 当suffix为A1且A枪工作位_1为0时,处理A1数据
|
||||
shouldProcess = true;
|
||||
} else if ("B1".equals(suffix) && aGunWorkPos1 != null && !"0".equals(aGunWorkPos1.toString())) {
|
||||
// 当suffix为B1且A枪工作位_1不为0时,处理B1数据
|
||||
shouldProcess = true;
|
||||
}
|
||||
|
||||
if (shouldProcess) {
|
||||
// 使用zl1TargetList中A1的配置项进行匹配
|
||||
final String targetKey;
|
||||
if ("B1".equals(suffix)) {
|
||||
// 如果是B1数据,将其替换为A1来匹配配置项
|
||||
targetKey = key.replace("_B1", "_A1");
|
||||
mesData.put("TARGET_NAME", targetKey);
|
||||
|
||||
} else {
|
||||
targetKey = key;
|
||||
}
|
||||
collect = zl1TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(targetKey)).collect(Collectors.toList());
|
||||
}
|
||||
} else if (suffix.equals("A2") || suffix.equals("B2")) {
|
||||
mesData.put("EQUIPMENT_ID", "2c83b99df54e80a674be5657b11db55c");
|
||||
// 根据枪的工作位状态决定匹配规则
|
||||
if ("A2".equals(suffix)) {
|
||||
// 当处理A2数据时
|
||||
if (aGunWorkPos2 != null && "0".equals(aGunWorkPos2.toString())) {
|
||||
// A枪工作位为0时,正常匹配A2数据
|
||||
collect = zl2TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
|
||||
} else if (bGunWorkPos2 != null && "0".equals(bGunWorkPos2.toString())) {
|
||||
// B枪工作位为0时,用A2的阈值匹配B2数据
|
||||
collect = zl2TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key.replace("_B2", "_A2"))).collect(Collectors.toList());
|
||||
}
|
||||
} else if ("B2".equals(suffix)) {
|
||||
// 当处理B2数据时
|
||||
if (bGunWorkPos2 != null && "0".equals(bGunWorkPos2.toString())) {
|
||||
// B枪工作位为0时,用A2的阈值匹配B2数据
|
||||
collect = zl2TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key.replace("_B2", "_A2"))).collect(Collectors.toList());
|
||||
} else if (aGunWorkPos2 != null && "0".equals(aGunWorkPos2.toString())) {
|
||||
// A枪工作位为0时,正常匹配B2数据
|
||||
collect = zl2TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(key)).collect(Collectors.toList());
|
||||
// 根据A枪工作位_2的值决定处理哪些数据
|
||||
boolean shouldProcess = false;
|
||||
if ("A2".equals(suffix) && aGunWorkPos2 != null && "0".equals(aGunWorkPos2.toString())) {
|
||||
// 当suffix为A2且A枪工作位_2为0时,处理A2数据
|
||||
shouldProcess = true;
|
||||
} else if ("B2".equals(suffix) && aGunWorkPos2 != null && !"0".equals(aGunWorkPos2.toString())) {
|
||||
// 当suffix为B2且A枪工作位_2不为0时,处理B2数据
|
||||
shouldProcess = true;
|
||||
}
|
||||
|
||||
if (shouldProcess) {
|
||||
// 使用zl2TargetList中A2的配置项进行匹配
|
||||
final String targetKey;
|
||||
if ("B2".equals(suffix)) {
|
||||
// 如果是B2数据,将其替换为A2来匹配配置项
|
||||
targetKey = key.replace("_B2", "_A2");
|
||||
mesData.put("TARGET_NAME", targetKey);
|
||||
} else {
|
||||
targetKey = key;
|
||||
}
|
||||
collect = zl2TargetList.stream().filter(item -> item.getString("TARGET_NAME").equals(targetKey)).collect(Collectors.toList());
|
||||
}
|
||||
} else if (key.contains("1#高炉")) {
|
||||
mesData.put("EQUIPMENT_ID", "c6825a6e1c959c3e5c800433516b2e8d");
|
||||
|
|
@ -356,30 +359,11 @@ public class MesDataScheduled extends IJobHandler {
|
|||
checkThresholdWithDelayConfirmation(mesData);
|
||||
}
|
||||
}
|
||||
mesSaveList.add(mesData);
|
||||
} else {
|
||||
mesData.put("IPCDEVICE_ID", "");
|
||||
mesData.put("DEVICE_ID","");
|
||||
mesData.put("PLC_ID", "");
|
||||
mesData.put("PLC_NAME", "");
|
||||
mesData.put("TARGET_TYPE", "");
|
||||
mesData.put("TARGET_PLACE", "");
|
||||
mesData.put("TARGET_UNIT", "");
|
||||
mesData.put("THRESHOLD_UP_LIMIT", "");
|
||||
mesData.put("THRESHOLD_UP_UP_LIMIT", "");
|
||||
mesData.put("THRESHOLD_DOWN_LIMIT", "");
|
||||
mesData.put("THRESHOLD_DOWN_DOWN_LIMIT", "");
|
||||
mesData.put("RANGE_UP", "");
|
||||
mesData.put("RANGE_DOWN", "");
|
||||
mesData.put("TARGET_DESCRIPTION", "");
|
||||
mesData.put("BIT_NO", "");
|
||||
mesData.put("SIGNAL_TYPE", "");
|
||||
mesData.put("ALARM_VALUE", "");
|
||||
mesData.put("TARGET_STATUS", "");
|
||||
mesData.put("CORPINFO_ID", "");
|
||||
mesData.put("REPORT_ID", "");
|
||||
mesData.put("OPEN_ALARM", "");
|
||||
// 如果没有匹配到配置数据,则不添加到mesSaveList中
|
||||
XxlJobHelper.log("未找到 {} 的配置数据,跳过处理", key);
|
||||
}
|
||||
mesSaveList.add(mesData);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue