|
@@ -244,7 +244,7 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
//实时出铁数据
|
|
|
private TIronData mTIronData;
|
|
|
|
|
|
- //连续计数
|
|
|
+ //连续计数(第一个元素为触发阈值后的记数,其他的为触发阈值记录的数据)
|
|
|
private Map<String, List<Object>> mWarnCountMap = Collections.synchronizedMap(new LinkedHashMap<>());
|
|
|
|
|
|
|
|
@@ -1542,7 +1542,7 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
log.warn("触发急需出铁告警,压差超过阈值: {}", mContext.lookupVariable(ExpressionConstants.stdPressureDiff));
|
|
|
|
|
|
// 构建异常消息,包含所有记录的数据
|
|
|
- String msg = String.format("压差:%skPa,连续超过阈值%skPa", formatWarnData(warnData,"kPa"), StandardConstans.STANDARD_PRESSURE_DIFF);
|
|
|
+ String msg = String.format("压差:%sk,连续超过阈值%skPa", formatWarnData(warnData,"kPa"), StandardConstans.STANDARD_PRESSURE_DIFF);
|
|
|
log.info("[急需出铁预警] 告警消息内容: {}", msg);
|
|
|
//触发次数超过配置的次数后发出预警
|
|
|
TAudioDTO audioDTO = mAudioMap.get(ExceptionTypeEnum.NEED_TAPHOLE.getCode());
|
|
@@ -2131,9 +2131,12 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
int stdTempMax = Integer.parseInt(mContext.lookupVariable(ExpressionConstants.stdTempMax).toString());
|
|
|
log.info("获取温度标准范围 - 最低: {}℃, 最高: {}℃", stdTempMin, stdTempMax);
|
|
|
|
|
|
+ final String tempMinWarn = "tempMinWarn";
|
|
|
+ final String tempMaxWarn = "tempMaxWarn";
|
|
|
+
|
|
|
// 温度异常检测
|
|
|
if (tempNow < stdTempMin) {
|
|
|
- List<Object> warnData = mWarnCountMap.getOrDefault("tempMinWarn", new ArrayList<>());
|
|
|
+ List<Object> warnData = mWarnCountMap.getOrDefault(tempMinWarn, new ArrayList<>());
|
|
|
int count = warnData.isEmpty() ? 0 : ((Number) warnData.get(0)).intValue();
|
|
|
count++;
|
|
|
|
|
@@ -2147,7 +2150,7 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
|
|
|
warnData.add(tempNow); // 添加当前温度数据
|
|
|
|
|
|
- mWarnCountMap.put("tempMinWarn", warnData);
|
|
|
+ mWarnCountMap.put(tempMinWarn, warnData);
|
|
|
log.warn("检测到温度偏低 - 当前: {}℃, 标准最低: {}℃, 连续异常次数: {}", tempNow, stdTempMin, count);
|
|
|
|
|
|
if (count >= StandardConstans.WARN_COUNT) {
|
|
@@ -2167,12 +2170,12 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
} catch (Exception e) {
|
|
|
log.error("处理温度偏低异常时发生错误", e);
|
|
|
}
|
|
|
- mWarnCountMap.put("tempMinWarn", new ArrayList<>());
|
|
|
+ mWarnCountMap.put(tempMinWarn, new ArrayList<>());
|
|
|
mIronTempLowCount.incrementAndGet();
|
|
|
log.info("重置温度偏低计数器,低温异常次数+1");
|
|
|
}
|
|
|
} else if (tempNow > stdTempMax) {
|
|
|
- List<Object> warnData = mWarnCountMap.getOrDefault("tempMaxWarn", new ArrayList<>());
|
|
|
+ List<Object> warnData = mWarnCountMap.getOrDefault(tempMaxWarn, new ArrayList<>());
|
|
|
int count = warnData.isEmpty() ? 0 : ((Number) warnData.get(0)).intValue();
|
|
|
count++;
|
|
|
|
|
@@ -2183,11 +2186,9 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
warnData.set(0, count); // 替换第一个元素(索引 0)的值为 count
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- warnData.set(0, count);
|
|
|
warnData.add(tempNow); // 添加当前温度数据
|
|
|
|
|
|
- mWarnCountMap.put("tempMaxWarn", warnData);
|
|
|
+ mWarnCountMap.put(tempMaxWarn, warnData);
|
|
|
log.warn("检测到温度偏高 - 当前: {}℃, 标准最高: {}℃, 连续异常次数: {}", tempNow, stdTempMax, count);
|
|
|
|
|
|
if (count >= StandardConstans.WARN_COUNT) {
|
|
@@ -2207,7 +2208,7 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
} catch (Exception e) {
|
|
|
log.error("处理温度偏高异常时发生错误", e);
|
|
|
}
|
|
|
- mWarnCountMap.put("tempMaxWarn", new ArrayList<>());
|
|
|
+ mWarnCountMap.put(tempMaxWarn,new ArrayList<>());
|
|
|
mIronTempHighCount.incrementAndGet();
|
|
|
log.info("重置温度偏高计数器,高温异常次数+1");
|
|
|
return;
|
|
@@ -2218,12 +2219,12 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
int oldMinCount = 0;
|
|
|
int oldMaxCount = 0;
|
|
|
|
|
|
- List<Object> minWarnData = mWarnCountMap.getOrDefault("tempMinWarn", new ArrayList<>());
|
|
|
+ List<Object> minWarnData = mWarnCountMap.getOrDefault(tempMinWarn, new ArrayList<>());
|
|
|
if (!minWarnData.isEmpty()) {
|
|
|
oldMinCount = ((Number) minWarnData.get(0)).intValue();
|
|
|
}
|
|
|
|
|
|
- List<Object> maxWarnData = mWarnCountMap.getOrDefault("tempMaxWarn", new ArrayList<>());
|
|
|
+ List<Object> maxWarnData = mWarnCountMap.getOrDefault(tempMaxWarn, new ArrayList<>());
|
|
|
if (!maxWarnData.isEmpty()) {
|
|
|
oldMaxCount = ((Number) maxWarnData.get(0)).intValue();
|
|
|
}
|
|
@@ -2232,8 +2233,8 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
log.info("温度恢复正常 - 当前: {}℃,重置异常计数器", tempNow);
|
|
|
}
|
|
|
|
|
|
- mWarnCountMap.put("tempMinWarn", new ArrayList<>());
|
|
|
- mWarnCountMap.put("tempMaxWarn", new ArrayList<>());
|
|
|
+ mWarnCountMap.put(tempMinWarn, new ArrayList<>());
|
|
|
+ mWarnCountMap.put(tempMaxWarn, new ArrayList<>());
|
|
|
}
|
|
|
|
|
|
// 温度数据收集
|
|
@@ -2316,12 +2317,17 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
log.info(" ├─ 标准流速范围: {}-{}t/min", stdSpeedMin, stdSpeedMax);
|
|
|
log.info(" └─ 当前实际流速: {}t/min", rtIronSpeed);
|
|
|
|
|
|
+ final String speedMinWarn = "speedMinWarn";
|
|
|
+ final String speedMaxWarn = "speedMaxWarn";
|
|
|
+
|
|
|
//采用实时速度方法
|
|
|
if (rtIronSpeed < stdSpeedMin) {
|
|
|
log.warn("⚠️ 【流速异常检测】");
|
|
|
log.warn(" └─ 流速偏低: {} < {}", rtIronSpeed, stdSpeedMin);
|
|
|
+ mWarnCountMap.put(speedMaxWarn, new ArrayList<>());
|
|
|
+ log.info(" └─ 清除高流速待预警内容");
|
|
|
//铁水流速低
|
|
|
- List<Object> warnData = mWarnCountMap.getOrDefault("speedMinWarn", new ArrayList<>());
|
|
|
+ List<Object> warnData = mWarnCountMap.getOrDefault(speedMinWarn, new ArrayList<>());
|
|
|
int count = warnData.isEmpty() ? 0 : ((Number) warnData.get(0)).intValue();
|
|
|
count++;
|
|
|
|
|
@@ -2332,10 +2338,9 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
warnData.set(0, count); // 替换第一个元素(索引 0)的值为 count
|
|
|
}
|
|
|
|
|
|
-
|
|
|
warnData.add(rtIronSpeed); // 添加当前流速数据
|
|
|
|
|
|
- mWarnCountMap.put("speedMinWarn", warnData);
|
|
|
+ mWarnCountMap.put(speedMinWarn, warnData);
|
|
|
log.info("📉 【流速偏低计数更新】");
|
|
|
log.info(" └─ 计数: {}/{}", count, StandardConstans.WARN_COUNT);
|
|
|
|
|
@@ -2347,7 +2352,7 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
//推送预警列表
|
|
|
getExceptionList();
|
|
|
log.info(" ├─ 已推送预警列表更新");
|
|
|
- mWarnCountMap.put("speedMinWarn", new ArrayList<>());
|
|
|
+ mWarnCountMap.put(speedMinWarn, new ArrayList<>());
|
|
|
log.info(" ├─ 已重置流速偏低计数器");
|
|
|
|
|
|
if (ironLoading2.get() > 0 || ironLoading3.get() > 0 || ironLoading4.get() > 0) {
|
|
@@ -2367,10 +2372,12 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
}
|
|
|
}
|
|
|
} else if (rtIronSpeed > stdSpeedMax) {
|
|
|
- log.warn("⚠️ 【流速异常检测】");
|
|
|
- log.warn(" └─ 流速偏高: {} > {}", rtIronSpeed, stdSpeedMax);
|
|
|
+ log.info("⚠️ 【流速异常检测】");
|
|
|
+ log.info(" └─ 流速偏高: {} > {}", rtIronSpeed, stdSpeedMax);
|
|
|
+ mWarnCountMap.put(speedMinWarn, new ArrayList<>());
|
|
|
+ log.info(" └─ 清除低流速待预警内容");
|
|
|
//铁水流速高
|
|
|
- List<Object> warnData = mWarnCountMap.getOrDefault("speedMaxWarn", new ArrayList<>());
|
|
|
+ List<Object> warnData = mWarnCountMap.getOrDefault(speedMaxWarn, new ArrayList<>());
|
|
|
int count = warnData.isEmpty() ? 0 : ((Number) warnData.get(0)).intValue();
|
|
|
count++;
|
|
|
|
|
@@ -2381,16 +2388,9 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
warnData.set(0, count); // 替换第一个元素(索引 0)的值为 count
|
|
|
}
|
|
|
|
|
|
- if (warnData.isEmpty()) {
|
|
|
- // 如果集合为空,先添加第一个元素
|
|
|
- warnData.add(count);
|
|
|
- } else {
|
|
|
- warnData.set(0, count); // 替换第一个元素(索引 0)的值为 count
|
|
|
- }
|
|
|
-
|
|
|
warnData.add(rtIronSpeed); // 添加当前流速数据
|
|
|
|
|
|
- mWarnCountMap.put("speedMaxWarn", warnData);
|
|
|
+ mWarnCountMap.put(speedMaxWarn, warnData);
|
|
|
log.info("📈 【流速偏高计数更新】");
|
|
|
log.info(" └─ 计数: {}/{}", count, StandardConstans.WARN_COUNT);
|
|
|
|
|
@@ -2406,7 +2406,7 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
//推送预警列表
|
|
|
getExceptionList();
|
|
|
log.info(" ├─ 已推送预警列表更新");
|
|
|
- mWarnCountMap.put("speedMaxWarn", new ArrayList<>());
|
|
|
+ mWarnCountMap.put(speedMaxWarn, new ArrayList<>());
|
|
|
log.info(" └─ 已重置流速偏高计数器");
|
|
|
}
|
|
|
} else {
|
|
@@ -2414,12 +2414,12 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
int oldMinCount = 0;
|
|
|
int oldMaxCount = 0;
|
|
|
|
|
|
- List<Object> minWarnData = mWarnCountMap.getOrDefault("speedMinWarn", new ArrayList<>());
|
|
|
+ List<Object> minWarnData = mWarnCountMap.getOrDefault(speedMinWarn, new ArrayList<>());
|
|
|
if (!minWarnData.isEmpty()) {
|
|
|
oldMinCount = ((Number) minWarnData.get(0)).intValue();
|
|
|
}
|
|
|
|
|
|
- List<Object> maxWarnData = mWarnCountMap.getOrDefault("speedMaxWarn", new ArrayList<>());
|
|
|
+ List<Object> maxWarnData = mWarnCountMap.getOrDefault(speedMaxWarn, new ArrayList<>());
|
|
|
if (!maxWarnData.isEmpty()) {
|
|
|
oldMaxCount = ((Number) maxWarnData.get(0)).intValue();
|
|
|
}
|
|
@@ -2433,8 +2433,8 @@ public class DeviceEventListener extends AbstractEventListener { //
|
|
|
log.info(" └─ 当前流速: {}t/min 在 {}-{}t/min 范围内", rtIronSpeed, stdSpeedMin, stdSpeedMax);
|
|
|
}
|
|
|
|
|
|
- mWarnCountMap.put("speedMinWarn", new ArrayList<>());
|
|
|
- mWarnCountMap.put("speedMaxWarn", new ArrayList<>());
|
|
|
+ mWarnCountMap.put(speedMinWarn, new ArrayList<>());
|
|
|
+ mWarnCountMap.put(speedMaxWarn, new ArrayList<>());
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
log.error("❌ 【流速处理异常】", e);
|