qingchunxiao 3 nedēļas atpakaļ
vecāks
revīzija
a7baa6ceb4

+ 2 - 2
taphole-admin/src/main/java/com/sckj/admin/service/impl/SettingDictDataServiceImpl.java

@@ -54,7 +54,7 @@ public class SettingDictDataServiceImpl implements ISettingDictDataService {
         queryWrapper.select("id,type_id,name,value,remark,sort,status,create_time,update_time");
         queryWrapper.eq("is_delete", 0);
         queryWrapper.eq("type_id", dictType.getId());
-        queryWrapper.orderByDesc("id");
+        queryWrapper.orderByDesc("sort");
 
         dictDataMapper.setSearch(queryWrapper, params, new String[]{
                 "like:name:str",
@@ -101,7 +101,7 @@ public class SettingDictDataServiceImpl implements ISettingDictDataService {
         queryWrapper.select("id,type_id,name,value,remark,sort,status,create_time,update_time");
         queryWrapper.eq("type_id", dictType.getId());
         queryWrapper.eq("is_delete", 0);
-        queryWrapper.orderByDesc("id");
+        queryWrapper.orderByDesc("sort");
 
         dictDataMapper.setSearch(queryWrapper, params, new String[]{
                 "like:name:str",

+ 4 - 0
taphole-iron/src/main/java/com/sckj/iron/constant/ExceptionTypeEnum.java

@@ -14,6 +14,10 @@ public enum ExceptionTypeEnum {
     CHU_TIE_SHI_JIAN_TAI_DUAN("出铁时间过短", "002002"),
     CHU_TIE_SHI_JIAN_TAI_CHANG("出铁时间过长", "002001"),
 
+    JI_XU_DU_KOU1("急需堵口1", "007001"),
+    JI_XU_DU_KOU2("急需堵口2", "007002"),
+    JI_XU_DU_KOU3("急需堵口3", "007003"),
+
     JI_XU_KAI_KOU("急需开口", "006"),
     JI_XU_DU_KOU("急需堵口", "007"),
     JI_XU_CHU_TIE("急需出铁", "008"),

+ 88 - 160
taphole-iron/src/main/java/com/sckj/iron/socketio/DeviceEventListener.java

@@ -198,18 +198,6 @@ public class DeviceEventListener extends AbstractEventListener { //
     //出铁步骤
     private List<IronStepVO> mSteps;
 
-    //开口超时预警预警音频URL
-    private String openAlarmUrl;
-
-    //堵口预警音频
-    private String closureAlarmUrl;
-
-    //急需出铁告警音频
-    private String tappingAlramUrl;
-
-    //出铁超时音频
-    private String tappingTimeoutAlramUrl;
-
     //节点标记
     private static final String NODE = "node";
 
@@ -264,6 +252,9 @@ public class DeviceEventListener extends AbstractEventListener { //
     // 模型统一管理
     private Map<String, TIronModel> modelMap = new ConcurrentHashMap<>();
 
+    // 音频统一管理
+    private Map<String, String> audioMap = new ConcurrentHashMap<>();
+
     //建议打泥量
     private String mCalcHitMud;
 
@@ -341,24 +332,11 @@ public class DeviceEventListener extends AbstractEventListener { //
     }
 
     private void getAudios() {
-        List<TAudio> list = audioService.lambdaQuery().eq(TAudio::getStatus, "1").eq(TAudio::getDelFlag, "1").list();
-        if (ObjectUtils.isNotEmpty(list)) {
-            for (TAudio tAudio : list) {
-                if (ExceptionTypeEnum.JI_XU_DU_KOU.equals(ExceptionTypeEnum.fromCode(tAudio.getExceptionType()))) {
-                    closureAlarmUrl = SERVER_URL + "/" + GlobalConfig.publicPrefix + File.separator + tAudio.getPath();
-                } else if (ExceptionTypeEnum.JI_XU_CHU_TIE.equals(ExceptionTypeEnum.fromCode(tAudio.getExceptionType()))) {
-                    tappingAlramUrl = SERVER_URL + "/" + GlobalConfig.publicPrefix + File.separator + tAudio.getPath();
-                } else if (ExceptionTypeEnum.CHU_TIE_SHI_JIAN_TAI_CHANG.equals(ExceptionTypeEnum.fromCode(tAudio.getExceptionType()))) {
-                    tappingTimeoutAlramUrl = SERVER_URL + "/" + GlobalConfig.publicPrefix + File.separator + tAudio.getPath();
-                } else if (ExceptionTypeEnum.KAI_KOU_CHAO_SHI.equals(ExceptionTypeEnum.fromCode(tAudio.getExceptionType()))) {
-                    openAlarmUrl = SERVER_URL + "/" + GlobalConfig.publicPrefix + File.separator + tAudio.getPath();
-                }
-            }
-            log.info("openAlarmUrl: " + openAlarmUrl);
-            log.info("closureAlarmUrl: " + closureAlarmUrl);
-            log.info("tappingAlramUrl: " + tappingAlramUrl);
-            log.info("tappingTimeoutAlramUrl: " + tappingTimeoutAlramUrl);
-        }
+        audioMap = audioService.lambdaQuery().eq(TAudio::getStatus, "1").eq(TAudio::getDelFlag, "1").list().stream().collect(Collectors.toMap(
+                TAudio::getExceptionType, // 键映射函数
+                audio -> SERVER_URL + "/" + GlobalConfig.publicPrefix + File.separator + audio.getPath(), // 值映射函数
+                (existing, replacement) -> existing // 合并函数
+        ));
     }
 
 
@@ -421,7 +399,7 @@ public class DeviceEventListener extends AbstractEventListener { //
      */
     @Subscribe
     public void onMessageEvent(OPCData opcData) {
-        log.debug("subscribe info:{}", opcData);
+        log.info("subscribe info:{}", opcData);
 
         if (ObjectUtils.isNotEmpty(opcData) && ObjectUtils.isNotEmpty(opcData.getIdentifier())) {
             //将每一个opc配置的唯一编号添加到环境变量中,方便在表达式中使用
@@ -736,11 +714,11 @@ public class DeviceEventListener extends AbstractEventListener { //
                     getExceptionList();
                 });
             } else if (getIronElapsedMinute() > stdIronTimeMax) {
-                taskExecutor.submit(() -> {
-                    saveException(ExceptionTypeEnum.CHU_TIE_SHI_JIAN_TAI_CHANG, String.format("出铁时间:%s分钟", getIronElapsedMinute()));
-                    //推送预警列表
-                    getExceptionList();
-                });
+//                taskExecutor.submit(() -> {
+//                    saveException(ExceptionTypeEnum.CHU_TIE_SHI_JIAN_TAI_CHANG, String.format("出铁时间:%s分钟", getIronElapsedMinute()));
+//                    //推送预警列表
+//                    getExceptionList();
+//                });
             }
 
             //出铁量多少告警
@@ -749,16 +727,18 @@ public class DeviceEventListener extends AbstractEventListener { //
 
             if (mTotalWeight.get().doubleValue() < stdIronWeightMin) {
                 taskExecutor.submit(() -> {
+                    PushData.send2Warn(WarnData.warnTapping("出铁量过少", audioMap.get(ExceptionTypeEnum.CHU_TIE_LIANG_TAI_SHAO.getCode())));
                     saveException(ExceptionTypeEnum.CHU_TIE_LIANG_TAI_SHAO, String.format("出铁量%s吨", mTotalWeight));
                     //推送预警列表
                     getExceptionList();
                 });
             } else if (mTotalWeight.get().doubleValue() > stdIronWeightMax) {
-                taskExecutor.submit(() -> {
-                    saveException(ExceptionTypeEnum.CHU_TIE_LIANG_TAI_DUO, String.format("出铁量%s吨", mTotalWeight));
-                    //推送预警列表
-                    getExceptionList();
-                });
+//                taskExecutor.submit(() -> {
+//                    PushData.send2Warn(WarnData.warnTapping("出铁量过多", audioMap.get(ExceptionTypeEnum.CHU_TIE_LIANG_TAI_DUO.getCode())));
+//                    saveException(ExceptionTypeEnum.CHU_TIE_LIANG_TAI_DUO, String.format("出铁量%s吨", mTotalWeight));
+//                    //推送预警列表
+//                    getExceptionList();
+//                });
             }
 
 
@@ -816,20 +796,17 @@ public class DeviceEventListener extends AbstractEventListener { //
                             log.warn("模型1触发堵口告警1");
 
                             taskExecutor.submit(() -> {
-                                saveException(ExceptionTypeEnum.TIE_SHUI_LIU_SU_GUO_KUAI, String.format("流速%s吨/分钟", mContext.lookupVariable(ExpressionConstants.rtIronSpeed)));
+                                PushData.send2Warn(WarnData.warnClose("堵口告警1", audioMap.get(ExceptionTypeEnum.JI_XU_DU_KOU1.getCode())));
                                 saveException(ExceptionTypeEnum.JI_XU_DU_KOU, String.format("建议将当前铁口堵口"));
                                 //推送预警列表
                                 getExceptionList();
                             });
-                            taskExecutor.submit(() -> {
-                                PushData.send2Warn(WarnData.warnClose("堵口告警1", closureAlarmUrl));
-                            });
                             mWarnCountMap.put(modelKey1, 0);
                             return;
                         }
                     } else {
                         mWarnCountMap.put(modelKey1, 0);
-                        PushData.send2CancelWarn(WarnData.warnClose("堵口告警1", closureAlarmUrl));
+                        PushData.send2CancelWarn(WarnData.warnClose("取消堵口告警1", ""));
                     }
 
                     String modelExpression2 = modelClosureWarn2.getModelExpression();
@@ -848,20 +825,17 @@ public class DeviceEventListener extends AbstractEventListener { //
                             log.warn("模型1触发堵口告警2");
 
                             taskExecutor.submit(() -> {
-                                saveException(ExceptionTypeEnum.TIE_SHUI_LIU_SU_GUO_MAN, String.format("流速%s吨/分钟", mContext.lookupVariable(ExpressionConstants.rtIronSpeed)));
+                                PushData.send2Warn(WarnData.warnClose("堵口告警2", audioMap.get(ExceptionTypeEnum.JI_XU_DU_KOU2.getCode())));
                                 saveException(ExceptionTypeEnum.JI_XU_DU_KOU, String.format("建议打开其他铁口,并将当前铁口堵口"));
                                 //推送预警列表
                                 getExceptionList();
                             });
                             mWarnCountMap.put(modelKey2, 0);
-                            taskExecutor.submit(() -> {
-                                PushData.send2Warn(WarnData.warnClose("堵口告警2", closureAlarmUrl));
-                            });
                             return;
                         }
                     } else {
                         mWarnCountMap.put(modelKey2, 0);
-                        PushData.send2CancelWarn(WarnData.warnClose("堵口告警2", closureAlarmUrl));
+                        PushData.send2CancelWarn(WarnData.warnClose("取消堵口告警2", ""));
                     }
 
                     String modelExpression3 = modelClosureWarn3.getModelExpression();
@@ -880,19 +854,16 @@ public class DeviceEventListener extends AbstractEventListener { //
                         if (count >= triggerCount3) {
                             log.warn("模型3触发堵口告警3");
                             taskExecutor.submit(() -> {
-                                saveException(ExceptionTypeEnum.TIE_SHUI_LIU_SU_GUO_MAN, String.format("流速%s吨/分钟", mContext.lookupVariable(ExpressionConstants.rtIronSpeed)));
+                                PushData.send2Warn(WarnData.warnClose("堵口告警3", audioMap.get(ExceptionTypeEnum.JI_XU_DU_KOU3.getCode())));
                                 saveException(ExceptionTypeEnum.JI_XU_DU_KOU, String.format("建议将当前铁口堵口"));
                                 //推送预警列表
                                 getExceptionList();
                             });
-                            taskExecutor.submit(() -> {
-                                PushData.send2Warn(WarnData.warnClose("堵口告警3", closureAlarmUrl));
-                            });
                             mWarnCountMap.put(modelKey3, 0);
                         }
                     } else {
                         mWarnCountMap.put(modelKey3, 0);
-                        PushData.send2CancelWarn(WarnData.warnClose("堵口告警3", closureAlarmUrl));
+                        PushData.send2CancelWarn(WarnData.warnClose("取消堵口告警3",""));
                     }
                 } else {
                     log.info("使用实时速度预警模式");
@@ -907,23 +878,6 @@ public class DeviceEventListener extends AbstractEventListener { //
         };
     }
 
-    //开口超时
-    @NotNull
-    private Runnable runnableOpen() {
-        return () -> {
-            //出铁时间长短告警
-            int stdIronTimeMax = Integer.parseInt(mContext.lookupVariable(ExpressionConstants.stdIronTimeMax).toString());
-
-            if (getIronElapsedMinute() > stdIronTimeMax) {
-                taskExecutor.submit(() -> {
-                    saveException(ExceptionTypeEnum.CHU_TIE_SHI_JIAN_TAI_CHANG, String.format("出铁时间:%s分钟", getIronElapsedMinute()));
-                    //推送预警列表
-                    getExceptionList();
-                });
-            }
-
-        };
-    }
 
     //出铁超时
 
@@ -943,11 +897,11 @@ public class DeviceEventListener extends AbstractEventListener { //
             try {
                 // 获取标准最大出铁时间配置
                 int stdIronTimeMax = Integer.parseInt(mContext.lookupVariable(ExpressionConstants.stdIronTimeMax).toString());
-                log.debug("获取标准最大出铁时间: {} 分钟", stdIronTimeMax);
+                log.info("获取标准最大出铁时间: {} 分钟", stdIronTimeMax);
 
                 // 获取当前出铁时间
                 int currentIronTime = getIronElapsedMinute();
-                log.debug("当前出铁时间: {} 分钟", currentIronTime);
+                log.info("当前出铁时间: {} 分钟", currentIronTime);
 
                 // 检查是否超时
                 if (currentIronTime > stdIronTimeMax) {
@@ -972,15 +926,15 @@ public class DeviceEventListener extends AbstractEventListener { //
                         }
                     });
 
-                    log.debug("出铁超时异常处理任务已提交");
+                    log.info("出铁超时异常处理任务已提交");
                 } else {
-                    log.debug("出铁时间正常 - 当前: {} 分钟, 标准: {} 分钟", currentIronTime, stdIronTimeMax);
+                    log.info("出铁时间正常 - 当前: {} 分钟, 标准: {} 分钟", currentIronTime, stdIronTimeMax);
                 }
 
             } catch (Exception e) {
                 log.error("执行出铁超时检查时发生异常", e);
             } finally {
-                log.debug("出铁超时检查任务完成");
+                log.info("出铁超时检查任务完成");
                 scheduledTaskManager.cancelTask(scheduleMap.get(TaskNameConstants.TASKNAME_TAPPING_TIMEOUT_WARN).getName());
             }
         };
@@ -1018,7 +972,7 @@ public class DeviceEventListener extends AbstractEventListener { //
 
             // 获取最新的出铁数据
             TL2Data tappingData = tl2DataService.getTapped1LatestData();
-            log.debug("获取最新出铁数据: {}", tappingData != null ? "数据存在" : "数据为空");
+            log.info("获取最新出铁数据: {}", tappingData != null ? "数据存在" : "数据为空");
 
             // 数据有效性检查
             if (ObjectUtils.isEmpty(tappingData)) {
@@ -1054,7 +1008,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                 }
 
                 // 解析并执行表达式
-                log.debug("开始解析模型表达式: {}", modelExpression);
+                log.info("开始解析模型表达式: {}", modelExpression);
                 Expression expression = mParser.parseExpression(modelExpression);
 
                 // 设置上下文变量
@@ -1062,14 +1016,14 @@ public class DeviceEventListener extends AbstractEventListener { //
                 mContext.setVariable(ExpressionConstants.rtIronWeight, mTotalWeight.get().doubleValue());
                 mContext.setVariable(ExpressionConstants.rtIronCosttime, getIronElapsedMinute());
 
-                log.debug("表达式变量设置完成 - openDepth: {}, rtIronWeight: {}, rtIronCosttime: {}",
+                log.info("表达式变量设置完成 - openDepth: {}, rtIronWeight: {}, rtIronCosttime: {}",
                         tappingData.getOpenDepth(),
                         mTotalWeight.get().doubleValue(),
                         getIronElapsedMinute());
 
                 // 计算打泥量
                 Object result = expression.getValue(mContext);
-                log.debug("表达式计算结果: {}", result);
+                log.info("表达式计算结果: {}", result);
 
                 BigDecimal bigDecimal = new BigDecimal(result.toString());
                 mCalcHitMud = bigDecimal.toBigInteger().toString();
@@ -1097,7 +1051,7 @@ public class DeviceEventListener extends AbstractEventListener { //
             log.info("开始执行急需出铁预警检查 - 当前出铁状态: {}", ironLoading1.get());
 
             if (ironLoading1.get() > 0) {
-                log.debug("当前正在出铁中,跳过急需出铁预警检查");
+                log.info("当前正在出铁中,跳过急需出铁预警检查");
                 return;
             }
 
@@ -1107,22 +1061,22 @@ public class DeviceEventListener extends AbstractEventListener { //
                 return;
             }
 
-            log.debug("获取到急需出铁预警模型: {}", modelTappingWarn.getModelName());
+            log.info("获取到急需出铁预警模型: {}", modelTappingWarn.getModelName());
 
             String modelExpression = modelTappingWarn.getModelExpression();
             if (ObjectUtils.isNotEmpty(modelExpression) && "1".equals(modelTappingWarn.getStatus())) {
-                log.debug("开始执行预警表达式: {}", modelExpression);
+                log.info("开始执行预警表达式: {}", modelExpression);
 
                 try {
                     Expression expression = mParser.parseExpression(modelExpression);
                     Boolean result = expression.getValue(mContext, Boolean.class);
 
-                    log.debug("预警表达式执行结果: {}", result);
+                    log.info("预警表达式执行结果: {}", result);
 
                     String modelKey = modelTappingWarn.getModelName();
                     int triggerCount = modelTappingWarn.getTriggerCondCount() != null ? modelTappingWarn.getTriggerCondCount() : 1;
 
-                    log.debug("触发阈值: {}, 当前计数: {}", triggerCount, mWarnCountMap.getOrDefault(modelKey, 0));
+                    log.info("触发阈值: {}, 当前计数: {}", triggerCount, mWarnCountMap.getOrDefault(modelKey, 0));
 
                     if (Boolean.TRUE.equals(result)) {
                         int count = mWarnCountMap.getOrDefault(modelKey, 0) + 1;
@@ -1134,7 +1088,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                             log.warn("触发急需出铁告警,压差超过阈值: {}", mContext.lookupVariable(ExpressionConstants.stdPressureDiff));
 
                             //触发次数超过配置的次数后发出预警
-                            PushData.send2Warn(WarnData.warnTapping("急需出铁告警", tappingAlramUrl));
+                            PushData.send2Warn(WarnData.warnTapping("急需出铁告警", audioMap.get(ExceptionTypeEnum.JI_XU_CHU_TIE.getCode())));
                             saveException(ExceptionTypeEnum.JI_XU_CHU_TIE,
                                     String.format("压差超过:%s,请降低送风流量,并操作出铁",
                                             String.valueOf(mContext.lookupVariable(ExpressionConstants.stdPressureDiff))));
@@ -1158,11 +1112,11 @@ public class DeviceEventListener extends AbstractEventListener { //
                     log.error("执行急需出铁预警表达式时发生异常", e);
                 }
             } else {
-                log.debug("急需出铁预警模型未启用或表达式为空,状态: {}, 表达式: {}",
+                log.info("急需出铁预警模型未启用或表达式为空,状态: {}, 表达式: {}",
                         modelTappingWarn.getStatus(), modelExpression);
             }
 
-            log.debug("急需出铁预警检查完成");
+            log.info("急需出铁预警检查完成");
         };
     }
 
@@ -1297,15 +1251,18 @@ public class DeviceEventListener extends AbstractEventListener { //
         //WI5402.PV  1TH-2号车TPC总重
         if (ObjectUtils.isNotEmpty(opcData)) {
             if (opcData.getPointName().contains(SubscribeTagConstants.TAG_TAPHOLE1_STATUS(opcData.getServerType()))) {
+                //将上一个出铁状态保存
                 lastIronLoading1.set(ironLoading1.get());
                 double currentIronState1 = Double.parseDouble(opcData.getData().toString());
+                ironLoading1.set(currentIronState1);
+
                 if (currentIronState1 > 0) {
                     //正在出铁出铁状态
                     log.info("准备调用taphole1Start()");
                     log.info("开始出铁,设置lastIronLoading1=1,当前出铁状态: {}", currentIronState1);
                     taphole1Start();
                     if (firstGetTappingStatus.get()) {
-                        lastIronLoading1.set(currentIronState1);
+                        //lastIronLoading1.set(currentIronState1);
                         //查询数据库中最新的1号铁口状态
                         OPCData tappingInfo = opcDataService.lambdaQuery().eq(OPCData::getPointName, opcData.getPointName()).orderByDesc(OPCData::getSourceTime).last("limit 1").one();
                         if (ObjectUtils.isNotEmpty(tappingInfo) && Double.parseDouble(tappingInfo.getData().toString()) > 0 && "prod".equals(activeProfiles)) {
@@ -1335,7 +1292,6 @@ public class DeviceEventListener extends AbstractEventListener { //
                                 mTIronData = new TIronData();
                                 mTIronData.setId(tappingInfo.getIronDataId());
                                 //添加之前已出铁时间长度
-
                                 long diffInSeconds = (localDateTimeMillis - tappingInfo.getSourceTime().getTime()) / 1000;
                                 mSecondsElapsed.addAndGet((int) diffInSeconds);
                             } else {
@@ -1374,7 +1330,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                         scheduledTaskManager.addTask(tappingWarn.getName(), tappingWarn.getDelay(), tappingWarn.getPeriod(), TimeUnit.SECONDS, runnableTappingWarn());
                     }
                 }
-                ironLoading1.set(currentIronState1);
+
                 //首次启动程序后,检查当前是否为正在出铁
                 firstGetTappingStatus.set(false);
 
@@ -1393,7 +1349,7 @@ public class DeviceEventListener extends AbstractEventListener { //
 
                 // 处理温度数据
                 int tempNow = Integer.parseInt(opcData.getData().toString());
-                log.debug("接收到温度数据 - 当前温度: {}℃, 数据来源: {}", tempNow, opcData.getPointName());
+                log.info("接收到温度数据 - 当前温度: {}℃, 数据来源: {}", tempNow, opcData.getPointName());
 
                 // 更新最高温度记录
                 int oldMax = rtTempMax.get();
@@ -1417,12 +1373,12 @@ public class DeviceEventListener extends AbstractEventListener { //
                 mContext.setVariable(ExpressionConstants.rtIronTemp, opcData.getData());
                 int tempDiff = rtTempMax.get() - rtTempMin.get();
                 mContext.setVariable(ExpressionConstants.rtIronTempDiff, tempDiff);
-                log.debug("设置温度变量到上下文 - 当前温度: {}℃, 温差: {}℃", tempNow, tempDiff);
+                log.info("设置温度变量到上下文 - 当前温度: {}℃, 温差: {}℃", tempNow, tempDiff);
 
                 // 获取温度标准值
                 int stdTempMin = Integer.parseInt(mContext.lookupVariable(ExpressionConstants.stdTempMin).toString());
                 int stdTempMax = Integer.parseInt(mContext.lookupVariable(ExpressionConstants.stdTempMax).toString());
-                log.debug("获取温度标准范围 - 最低: {}℃, 最高: {}℃", stdTempMin, stdTempMax);
+                log.info("获取温度标准范围 - 最低: {}℃, 最高: {}℃", stdTempMin, stdTempMax);
 
                 // 温度异常检测
                 if (tempNow < stdTempMin) {
@@ -1435,6 +1391,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                         taskExecutor.submit(() -> {
                             try {
                                 String exceptionMsg = String.format("温度%s℃", tempNow);
+                                PushData.send2Warn(WarnData.warnTapping("铁水温度过低", audioMap.get(ExceptionTypeEnum.TIE_SHUI_WEN_DU_GUO_DI.getCode())));
                                 saveException(ExceptionTypeEnum.TIE_SHUI_WEN_DU_GUO_DI, exceptionMsg);
                                 log.warn("已记录温度过低异常: {}", exceptionMsg);
 
@@ -1461,6 +1418,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                         taskExecutor.submit(() -> {
                             try {
                                 String exceptionMsg = String.format("温度%s℃", tempNow);
+                                PushData.send2Warn(WarnData.warnTapping("铁水温度过高", audioMap.get(ExceptionTypeEnum.TIE_SHUI_WEN_DU_GUO_GAO.getCode())));
                                 saveException(ExceptionTypeEnum.TIE_SHUI_WEN_DU_GUO_GAO, exceptionMsg);
                                 log.warn("已记录温度过高异常: {}", exceptionMsg);
 
@@ -1493,7 +1451,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                 // 温度数据收集
                 if (ironLoading1.get() > 0) {
                     tempList.add(tempNow);
-                    log.debug("出铁中,添加温度到历史记录 - 当前温度: {}℃,历史记录数: {}", tempNow, tempList.size());
+                    log.info("出铁中,添加温度到历史记录 - 当前温度: {}℃,历史记录数: {}", tempNow, tempList.size());
                 } else {
                     int oldSize = tempList.size();
                     if (oldSize > 0) {
@@ -1533,11 +1491,13 @@ public class DeviceEventListener extends AbstractEventListener { //
                         log.info("流速过低计数: {}/3", count);
 
                         if (count >= warnCount) {
+                            PushData.send2Warn(WarnData.warnTapping("铁水流速过慢", audioMap.get(ExceptionTypeEnum.TIE_SHUI_LIU_SU_GUO_MAN.getCode())));
                             log.error("触发流速过低预警");
                             saveException(ExceptionTypeEnum.TIE_SHUI_LIU_SU_GUO_MAN, String.format("流速%s吨/分钟", mContext.lookupVariable(ExpressionConstants.rtIronSpeed)));
                             //推送预警列表
                             getExceptionList();
                             mWarnCountMap.put("speedMinWarn", 0);
+
                         }
                     } else if (rtIronSpeed > stdSpeedMax) {
                         log.warn("流速过高: {} > {}", rtIronSpeed, stdSpeedMax);
@@ -1547,14 +1507,14 @@ public class DeviceEventListener extends AbstractEventListener { //
                         log.info("流速过高计数: {}/3", count);
                         if (count >= warnCount) {
                             log.error("触发流速过高预警");
-                            //堵口一
+                            PushData.send2Warn(WarnData.warnTapping("铁水流速过快", audioMap.get(ExceptionTypeEnum.TIE_SHUI_LIU_SU_GUO_KUAI.getCode())));
                             saveException(ExceptionTypeEnum.TIE_SHUI_LIU_SU_GUO_KUAI, String.format("流速%s吨/分钟", mContext.lookupVariable(ExpressionConstants.rtIronSpeed)));
                             //推送预警列表
                             getExceptionList();
                             mWarnCountMap.put("speedMaxWarn", 0);
                         }
                     } else {
-                        log.debug("流速正常: {} 在 {}-{} 范围内", rtIronSpeed, stdSpeedMin, stdSpeedMax);
+                        log.info("流速正常: {} 在 {}-{} 范围内", rtIronSpeed, stdSpeedMin, stdSpeedMax);
                         mWarnCountMap.put("speedMinWarn", 0);
                         mWarnCountMap.put("speedMaxWarn", 0);
                     }
@@ -1568,68 +1528,35 @@ public class DeviceEventListener extends AbstractEventListener { //
             } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_TAPHOLE4_STATUS(opcData.getServerType()))) {
                 ironLoading4.set(Double.parseDouble(opcData.getData().toString()));
                 // mContext.setVariable(ExpressionConstants.rtIronState4, ironLoading4.get());
-            } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_IRON_WEIGHT11(opcData.getServerType()))) {
+            } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_IRON_WEIGHT11(opcData.getServerType()))
+                || opcData.getPointName().contains(SubscribeTagConstants.TAG_IRON_WEIGHT12(opcData.getServerType()))
+            ) {
                 // 1号车铁水流量递增值
                 BigDecimal bigDecimalNew = new BigDecimal(opcData.getData().toString());
-                if (bigDecimalNew.compareTo(BigDecimal.ZERO) >= 0) {
-                    if (ironLoading1.get() > 0) {
-                        RealtimeData realtimeData = new RealtimeData();
+                RealtimeData realtimeData = new RealtimeData();
+                if (ironLoading1.get() > 0) {
+                    if(opcData.getPointName().contains(SubscribeTagConstants.TAG_IRON_WEIGHT11(opcData.getServerType()))){
                         realtimeData.setValue(1);
-                        realtimeData.setDesc("摆动溜嘴的摆动方向");
-                        realtimeData.setExtra(opcData.getData());
-                        mRealtimeStatus.put(BDLZ_STATUS, realtimeData);
-
-                        if (ironWeight1Pre.subtract(bigDecimalNew).compareTo(new java.math.BigDecimal("130")) > 0) {
+                    }else{
+                        realtimeData.setValue(2);
+                    }
+                    if (bigDecimalNew.compareTo(BigDecimal.ZERO) >= 0) {
+                        if (ironWeight1Pre.subtract(bigDecimalNew).compareTo(new BigDecimal("130")) > 0) {
                             mTotalWeight.updateAndGet(prev -> prev.add(ironWeight1Pre));
                             log.info("铁水总流量:{},1号线铁水满载流量:{},下一个流量:{}", mTotalWeight.get(), ironWeight1Pre, bigDecimalNew);
                         }
-
-                    } else {
-                        RealtimeData realtimeData = new RealtimeData();
-                        realtimeData.setValue(0);
-                        realtimeData.setDesc("摆动溜嘴的摆动方向");
-                        realtimeData.setExtra(opcData.getData());
-                        mRealtimeStatus.put(BDLZ_STATUS, realtimeData);
                     }
-
                     ironWeight1Pre = bigDecimalNew;
-                } else {
-                    // 罐车卸载,累计最大值到总量
-//                    mTotalWeight = mTotalWeight.add(ironWeight1Max);
-//                    ironWeight1Max = BigDecimal.ZERO;
-//                    ironWeight1Current = BigDecimal.ZERO;
+                }else{
+                    realtimeData.setValue(0);
                 }
-            } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_IRON_WEIGHT12(opcData.getServerType()))) {
-                // 2号车铁水流量递增值
-                BigDecimal bigDecimalNew = new BigDecimal(opcData.getData().toString());
-                if (bigDecimalNew.compareTo(BigDecimal.ZERO) >= 0) {
-                    if (ironLoading1.get() > 0) {
-                        RealtimeData realtimeData = new RealtimeData();
-                        realtimeData.setValue(2);
-                        realtimeData.setDesc("摆动溜嘴的摆动方向");
-                        realtimeData.setExtra(opcData.getData());
-                        mRealtimeStatus.put(BDLZ_STATUS, realtimeData);
 
-                        if (ironWeight2Pre.subtract(bigDecimalNew).compareTo(new java.math.BigDecimal("130")) > 0) {
-                            mTotalWeight.updateAndGet(prev -> prev.add(ironWeight2Pre));
-                            log.info("铁水总流量:{},2号线铁水满载流量:{},下一个流量:{}", mTotalWeight.get(), ironWeight2Pre, bigDecimalNew);
-                        }
-                    } else {
-                        RealtimeData realtimeData = new RealtimeData();
-                        realtimeData.setValue(0);
-                        realtimeData.setDesc("摆动溜嘴的摆动方向");
-                        realtimeData.setExtra(opcData.getData());
-                        mRealtimeStatus.put(BDLZ_STATUS, realtimeData);
-                    }
-                    ironWeight2Pre = bigDecimalNew;
-                } else {
-//                    mTotalWeight = mTotalWeight.add(ironWeight2Max);
-//                    ironWeight2Max = BigDecimal.ZERO;
-//                    ironWeight2Current = BigDecimal.ZERO;
-                }
-            } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_NSZSW(opcData.getServerType()))) {
-                //四高炉南水渣粒化泵供水总管温度
+                realtimeData.setDesc("摆动溜嘴的摆动方向");
+                realtimeData.setExtra(opcData.getData());
+                mRealtimeStatus.put(BDLZ_STATUS, realtimeData);
 
+            }  else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_NSZSW(opcData.getServerType()))) {
+                //四高炉南水渣粒化泵供水总管温度
                 double temp = Double.parseDouble(opcData.getData().toString());
                 if (lastChuzTemps.size() >= warnCount) {
                     lastChuzTemps.removeFirst();
@@ -1652,7 +1579,9 @@ public class DeviceEventListener extends AbstractEventListener { //
                         chuzTime = LocalDateUtils.formatDate(opcData.getSourceTime());
                     }
                 } else {
-                    chuzTime = "";
+                    if(ironLoading1.get() <= 0){
+                        chuzTime = "";
+                    }
                 }
 
                 RealtimeData realtimeData = new RealtimeData();
@@ -1684,12 +1613,12 @@ public class DeviceEventListener extends AbstractEventListener { //
                 }
             } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_KKJ_STATUS(opcData.getServerType()))) {
                 //开口机状态
-                log.debug("开始处理开口机状态数据 - 点位名称: {}", opcData.getPointName());
+                log.info("开始处理开口机状态数据 - 点位名称: {}", opcData.getPointName());
 
                 RealtimeData realtimeData = new RealtimeData();
                 //开口机角度
                 double kkjjd = Double.parseDouble(opcData.getData().toString());
-                log.debug("解析开口机角度 - 原始数据: {}, 解析后角度: {}°", opcData.getData(), kkjjd);
+                log.info("解析开口机角度 - 原始数据: {}, 解析后角度: {}°", opcData.getData(), kkjjd);
 
                 boolean isWorking = kkjjd >= StandardConstans.STANDARD_OPEN_MACHINE_LOCATION;
                 realtimeData.setValue(isWorking ? 1 : 0);
@@ -1711,23 +1640,21 @@ public class DeviceEventListener extends AbstractEventListener { //
                         Date openMachineEndTime = opcData.getServerTime();
                         // 计算两个日期的时间差(毫秒)
                         long timeDiff = openMachineEndTime.getTime() - openMachineStartTime.getTime();
-                        log.debug("开口机工作结束 - 开始时间:{}, 结束时间:{}, 时间差:{}ms",
+                        log.info("开口机工作结束 - 开始时间:{}, 结束时间:{}, 时间差:{}ms",
                                 openMachineStartTime, openMachineEndTime, timeDiff);
 
                         if (timeDiff >= 0) {
                             // 将时间差转换为分钟
                             long minutesDiff = timeDiff / (60 * 1000);
-                            log.debug("开口机工作时长计算 - 总时长:{}分钟, 标准时长:{}分钟",
+                            log.info("开口机工作时长计算 - 总时长:{}分钟, 标准时长:{}分钟",
                                     minutesDiff, StandardConstans.STANDARD_OPEN_HOUR);
 
                             if (minutesDiff > StandardConstans.STANDARD_OPEN_HOUR) {
                                 log.warn("开口机超时告警触发 - 实际耗时:{}分钟 > 标准:{}分钟",
                                         minutesDiff, StandardConstans.STANDARD_OPEN_HOUR);
-
                                 String warnMsg = String.format("开口耗时:%s分钟", minutesDiff);
-                                WarnData.warnOpen(warnMsg, openAlarmUrl);
+                                WarnData.warnOpen(warnMsg, audioMap.get(ExceptionTypeEnum.KAI_KOU_CHAO_SHI.getCode()));
                                 log.warn("已发送开口机超时预警: {}", warnMsg);
-
                                 saveException(ExceptionTypeEnum.KAI_KOU_CHAO_SHI, warnMsg);
                                 log.warn("已记录开口机超时异常: {}", warnMsg);
                             } else {
@@ -1739,7 +1666,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                                     openMachineStartTime, openMachineEndTime);
                         }
                     }
-                    log.debug("重置开口机开始时间 - 原开始时间:{}", openMachineStartTime);
+                    log.info("重置开口机开始时间 - 原开始时间:{}", openMachineStartTime);
                     openMachineStartTime = null;
                 }
             } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_NPXZYY(opcData.getServerType()))) {
@@ -1751,6 +1678,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                 realtimeData.setDesc("泥炮堵口状态");
                 realtimeData.setExtra(opcData.getData());
                 mRealtimeStatus.put(NPDK_STATUS, realtimeData);
+                //mContext.setVariable(NPDK_STATUS, realtimeData);
                 log.info("泥炮堵口状态更新 - 压力值:{}, 标准阈值:{}, 堵口状态:{}, 时间:{}",
                         pressureValue, StandardConstans.STANDARD_MUD_MACHINE_PRESSURE,
                         isBlocked ? "已堵口" : "未堵口", opcData.getServerTime());
@@ -1857,7 +1785,7 @@ public class DeviceEventListener extends AbstractEventListener { //
             log.info("状态同步完成,lastIronLoading1已更新为: {}", lastIronLoading1.get());
             return;
         }
-        log.info("常规状态同步,lastIronLoading1从 {} 更新为 {}", lastIronLoading1.get(), ironLoading1.get());
+        //log.info("常规状态同步,lastIronLoading1从 {} 更新为 {}", lastIronLoading1.get(), ironLoading1.get());
         //lastIronLoading1.set(ironLoading1.get());
     }
 

+ 1 - 1
taphole-l2/src/main/java/com/sckj/l2/mapper/TL2MaterialMapper.java

@@ -14,7 +14,7 @@ public interface TL2MaterialMapper extends IBaseMapper<TL2Material> {
     @Select({
             "SELECT ROUND(COALESCE(SUM(CAST(theory_weight AS DECIMAL(18,2))), 0) / 100, 2)",
             "FROM t_l2_material",
-            "WHERE load_material_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 HOUR), '%Y%m%d%H%i%s')"
+            "WHERE load_material_time >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 HOUR), '%Y-%m-%d %H:%i:%s')"
     })
     Double geTotalTheoryWeightInLastHour();
 }