Jelajahi Sumber

代码优化7

qingchunxiao 3 minggu lalu
induk
melakukan
59488a6ca2

+ 3 - 0
taphole-iron/src/main/java/com/sckj/iron/constant/TaskNameConstants.java

@@ -18,6 +18,9 @@ public class TaskNameConstants {
     //出铁超时报警,开始出铁后开始计时,超过设定的时间就预警
     public static final String TASKNAME_TAPPING_TIMEOUT_WARN = "tapping_timeout_warn";
 
+    //出铁重量报警,开始出铁后开始计时,超过设定的时间就预警
+    public static final String TAPPING_WEIGHTOUT_WARN = "tapping_weightout_warn";
+
     //出铁诊断,出铁结束后xxx分钟开始,使用一次
     public static final String TASKNAME_TAPPING_TEST = "tapping_test";
     //打泥量预计,开始出铁后xxx分钟开始,使用一次

+ 1 - 9
taphole-iron/src/main/java/com/sckj/iron/dto/WarnData.java

@@ -57,15 +57,7 @@ public class WarnData {
         return warnData;
     }
 
-    //炉前出铁超时告警
-    public static WarnData warnTappingTimeout(String desc, String alarmUrl) {
-        WarnData warnData = new WarnData();
-        warnData.type = TaskNameConstants.TASKNAME_TAPPING_TIMEOUT_WARN;
-        warnData.typeName = "炉前出铁超时告警";
-        warnData.desc = desc;
-        warnData.alarmUrl = alarmUrl;
-        return warnData;
-    }
+
 
 
 }

+ 56 - 7
taphole-iron/src/main/java/com/sckj/iron/socketio/DeviceEventListener.java

@@ -649,6 +649,11 @@ public class DeviceEventListener extends AbstractEventListener { //
             if (tappingTimeoutWarn != null && "1".equals(tappingTimeoutWarn.getStatus())) {
                 scheduledTaskManager.addTask(tappingTimeoutWarn.getName(), tappingTimeoutWarn.getDelay(), tappingTimeoutWarn.getPeriod(), TimeUnit.SECONDS, runnableTappingTimeout());
             }
+            // 出铁重量报警
+            TIronSchedule tappingWeightoutWarn = scheduleMap.get(TaskNameConstants.TAPPING_WEIGHTOUT_WARN);
+            if (tappingWeightoutWarn != null && "1".equals(tappingWeightoutWarn.getStatus())) {
+                scheduledTaskManager.addTask(tappingWeightoutWarn.getName(), tappingWeightoutWarn.getDelay(), tappingWeightoutWarn.getPeriod(), TimeUnit.SECONDS, runnableTappingWeightout());
+            }
 
             // 堵口预测时间
             TIronSchedule schedulClosurePredict = scheduleMap.get(TaskNameConstants.TASKNAME_CLOSURE_PREDICT);
@@ -863,7 +868,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                         }
                     } else {
                         mWarnCountMap.put(modelKey3, 0);
-                        PushData.send2CancelWarn(WarnData.warnClose("取消堵口告警3",""));
+                        PushData.send2CancelWarn(WarnData.warnClose("取消堵口告警3", ""));
                     }
                 } else {
                     log.info("使用实时速度预警模式");
@@ -912,6 +917,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                         log.info("提交出铁超时异常处理任务到线程池");
 
                         try {
+                            PushData.send2Warn(WarnData.warnTapping("出铁超时", audioMap.get(ExceptionTypeEnum.CHU_TIE_SHI_JIAN_TAI_CHANG.getCode())));
                             // 记录异常信息
                             String exceptionMessage = String.format("出铁时间:%s分钟", currentIronTime);
                             saveException(ExceptionTypeEnum.CHU_TIE_SHI_JIAN_TAI_CHANG, exceptionMessage);
@@ -939,6 +945,45 @@ public class DeviceEventListener extends AbstractEventListener { //
             }
         };
     }
+    @NotNull
+    private Runnable runnableTappingWeightout() {
+        return () -> {
+            log.info("开始执行出铁超重检查任务");
+
+            try {
+                // 获取标准最大出铁重量配置
+                double stdIronWeightMax = Double.parseDouble(mContext.lookupVariable(ExpressionConstants.stdIronWeightMax).toString());
+                log.info("获取标准最大出铁重量: {} 分钟", stdIronWeightMax);
+
+                // 获取当前出铁重量
+                double currentIronTime = mTotalWeight.get().doubleValue();
+                log.info("当前出铁重量: {} 分钟", currentIronTime);
+
+                // 检查是否重量
+                if (currentIronTime > stdIronWeightMax) {
+                    log.warn("检测到出铁超重 - 当前: {} t, 标准: {} t", currentIronTime, stdIronWeightMax);
+
+
+                    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();
+                    });
+
+                    log.info("出铁重量异常处理任务已提交");
+                } else {
+                    log.info("出铁重量正常 - 当前: {} t, 标准: {} t", currentIronTime, stdIronWeightMax);
+                }
+
+            } catch (Exception e) {
+                log.error("执行出铁超时检查时发生异常", e);
+            } finally {
+                log.info("出铁超重量检查任务完成");
+                scheduledTaskManager.cancelTask(scheduleMap.get(TaskNameConstants.TAPPING_WEIGHTOUT_WARN).getName());
+            }
+        };
+    }
 
     //堵口时间预测
     @NotNull
@@ -1529,15 +1574,15 @@ public class DeviceEventListener extends AbstractEventListener { //
                 ironLoading4.set(Double.parseDouble(opcData.getData().toString()));
                 // mContext.setVariable(ExpressionConstants.rtIronState4, ironLoading4.get());
             } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_IRON_WEIGHT11(opcData.getServerType()))
-                || opcData.getPointName().contains(SubscribeTagConstants.TAG_IRON_WEIGHT12(opcData.getServerType()))
+                    || opcData.getPointName().contains(SubscribeTagConstants.TAG_IRON_WEIGHT12(opcData.getServerType()))
             ) {
                 // 1号车铁水流量递增值
                 BigDecimal bigDecimalNew = new BigDecimal(opcData.getData().toString());
                 RealtimeData realtimeData = new RealtimeData();
                 if (ironLoading1.get() > 0) {
-                    if(opcData.getPointName().contains(SubscribeTagConstants.TAG_IRON_WEIGHT11(opcData.getServerType()))){
+                    if (opcData.getPointName().contains(SubscribeTagConstants.TAG_IRON_WEIGHT11(opcData.getServerType()))) {
                         realtimeData.setValue(1);
-                    }else{
+                    } else {
                         realtimeData.setValue(2);
                     }
                     if (bigDecimalNew.compareTo(BigDecimal.ZERO) >= 0) {
@@ -1547,7 +1592,10 @@ public class DeviceEventListener extends AbstractEventListener { //
                         }
                     }
                     ironWeight1Pre = bigDecimalNew;
-                }else{
+
+
+
+                } else {
                     realtimeData.setValue(0);
                 }
 
@@ -1555,7 +1603,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                 realtimeData.setExtra(opcData.getData());
                 mRealtimeStatus.put(BDLZ_STATUS, realtimeData);
 
-            }  else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_NSZSW(opcData.getServerType()))) {
+            } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_NSZSW(opcData.getServerType()))) {
                 //四高炉南水渣粒化泵供水总管温度
                 double temp = Double.parseDouble(opcData.getData().toString());
                 if (lastChuzTemps.size() >= warnCount) {
@@ -1579,7 +1627,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                         chuzTime = LocalDateUtils.formatDate(opcData.getSourceTime());
                     }
                 } else {
-                    if(ironLoading1.get() <= 0){
+                    if (ironLoading1.get() <= 0) {
                         chuzTime = "";
                     }
                 }
@@ -2253,6 +2301,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                 TaskNameConstants.TASKNAME_OPEN_WARN,
                 TaskNameConstants.TASKNAME_TAPPING_WARN,
                 TaskNameConstants.TASKNAME_TAPPING_TIMEOUT_WARN,
+                TaskNameConstants.TAPPING_WEIGHTOUT_WARN,
                 TaskNameConstants.TASKNAME_HIT_MUD,
                 TaskNameConstants.TASKNAME_TAPPING_CONSTTIME,
                 TaskNameConstants.TASKNAME_TAPPING_TEST,