소스 검색

实时大屏代码优化

wangxiaofei 1 개월 전
부모
커밋
51024c354b

+ 35 - 0
taphole-iron/src/main/java/com/sckj/iron/dto/WarnData.java

@@ -0,0 +1,35 @@
+package com.sckj.iron.dto;
+
+import lombok.Builder;
+import lombok.Data;
+
+/***
+ * 实时数据
+ * 铁水温度、铁水流速、铁水成分、铁水流量
+ *
+ */
+@Data
+@Builder
+public class WarnData {
+
+//    private String key;
+
+    private String type;
+
+    private String desc;
+
+    public static WarnData of(String type, String desc) {
+        return WarnData.builder().type(type).desc(desc).build();
+    }
+
+    //出铁预警
+    public static WarnData warnOpen(String desc) {
+        return WarnData.builder().type("open").desc(desc).build();
+    }
+
+    //堵口预警
+    public static WarnData warnClose(String desc) {
+        return WarnData.builder().type("close").desc(desc).build();
+    }
+
+}

+ 29 - 23
taphole-iron/src/main/java/com/sckj/iron/socketio/DeviceEventListener.java

@@ -4,13 +4,13 @@ import com.corundumstudio.socketio.SocketIOClient;
 import com.corundumstudio.socketio.annotation.OnEvent;
 import com.google.common.eventbus.Subscribe;
 import com.sckj.camera.util.LocalDateUtils;
-import com.sckj.common.core.AjaxResult;
 import com.sckj.common.eventbus.EventListener;
 import com.sckj.common.manager.ScheduledTaskManager;
 import com.sckj.common.socketio.SocketUtil;
 import com.sckj.common.util.RedisUtils;
 import com.sckj.iron.dto.IronStepDTO;
 import com.sckj.iron.dto.RealtimeData;
+import com.sckj.iron.dto.WarnData;
 import com.sckj.iron.entity.TIronData;
 import com.sckj.iron.entity.TIronParam;
 import com.sckj.iron.entity.TL2Data;
@@ -27,7 +27,6 @@ import com.sckj.opc.utils.CustomUtil;
 import com.sckj.warn.service.ITExceptionLogService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.expression.spel.standard.SpelExpressionParser;
 import org.springframework.expression.spel.support.StandardEvaluationContext;
@@ -137,7 +136,7 @@ public class DeviceEventListener extends EventListener {
     //摆动溜咀
     private static final String MOUTH_STATUS = "bdlz";
     //冲渣状态
-    private static final String FLUSH_STATUS = "flushStatus";
+    private static final String FLUSH_STATUS = "AOD25607.PV";
     //预计出铁结束时间
     private static final String PLAN_END_TIME = "planEndTime";
 
@@ -174,7 +173,8 @@ public class DeviceEventListener extends EventListener {
     //出铁诊断
     private static final String TASKNAME_IRON_TEST = "TASKNAME_IRON_TEST";
 
-    private static final String TASKNAME_DRY = "dry";
+    //打泥量预计
+    private static final String TASKNAME_MUD = "TASKNAME_DRY";
 
     //是否出铁中
     //1 出铁中    0 出铁结束
@@ -195,6 +195,8 @@ public class DeviceEventListener extends EventListener {
     private float STANDARD_SPEED;
     //开口耗时
     private int OPEND_HOUR;
+    private int PRESSURE_DIFF_VALUE;
+
 
     //redis保存最多数量数据
     private static final int MAX_REDIS_COUNT = 50;
@@ -215,6 +217,7 @@ public class DeviceEventListener extends EventListener {
                     .collect(Collectors.toMap(TIronParam::getParamName, ironParam -> ironParam, (existing, replacement) -> existing));
             STANDARD_SPEED = Float.parseFloat(mIronParamMap.get("iron_speed").getParamValue());
             OPEND_HOUR = Integer.parseInt(mIronParamMap.get("open_hours").getParamValue());
+            PRESSURE_DIFF_VALUE = Integer.parseInt(mIronParamMap.get("pressure_diff_value").getParamValue());
         }
 
     }
@@ -376,7 +379,7 @@ public class DeviceEventListener extends EventListener {
         //根据理论铁量、实时铁水流速,推测距离出铁结束的剩余时间
         //剩余时间=总时间-已经流去的时间
 //                mContext.lookupVariable("");
-        //计算理论铁量= 矿批 × 综合品位 × 1.06,其中矿批是指L2中的干量
+
 
 //      Date ironTime = mOPCData.getServerTime();
 //      lastIronEndTimeRecently
@@ -400,23 +403,25 @@ public class DeviceEventListener extends EventListener {
             log.info("堵口预警:{},speed1:{},speed2:{},STANDARD_SPEED:{}", speed1, speed2, TASKNAME_OPEN_WARN);
             if (speed1 > STANDARD_SPEED || speed2 > STANDARD_SPEED) {
                 //流速过大可能是由于铁口深度不足或发生跑大流问题,则提示将当前铁口堵口
-                PushData.send2Warn("流速过快,请堵口");
+                PushData.send2Warn(WarnData.warnClose("流速过快,请堵口"));
             } else if ((speed1 < STANDARD_SPEED || speed2 < STANDARD_SPEED) && (ironLoading2 || ironLoading3 || ironLoading4)) {
                 //若流速过小,但其它铁口正在出铁,则提示将当前铁口堵口
-                PushData.send2Warn("请堵口");
+                PushData.send2Warn(WarnData.warnClose("请堵口"));
             } else if ((speed1 < STANDARD_SPEED || speed2 < STANDARD_SPEED) && (!ironLoading2 && !ironLoading3 && !ironLoading4)) {
                 //若流速过小且其他铁口均未出铁,则提示先将其它铁口打开,再进行堵口
-                PushData.send2Warn("请先将其它铁口打开,再堵口");
+                PushData.send2Warn(WarnData.warnClose("请先将其它铁口打开,再堵口"));
             }
         });
 
-        //计算总干量
-        //
-        scheduledTaskManager.addTask(TASKNAME_DRY, 0, 30, TimeUnit.SECONDS, () -> {
+        //调用打泥量模型,计算预计使用多少打泥量进行堵口
+        scheduledTaskManager.addTask(TASKNAME_MUD, 0, 30, TimeUnit.SECONDS, () -> {
             log.info("堵口预警:{},speed1:{},speed2:{},STANDARD_SPEED:{}", speed1, speed2, TASKNAME_OPEN_WARN);
-
+            String dryString = totalDry.toPlainString();
+            //
             //堵口预警
-            scheduledTaskManager.cancelTask(TASKNAME_DRY);
+            //计算理论铁量= 矿批 × 综合品位 × 1.06,其中矿批是指L2中的干量
+
+            scheduledTaskManager.cancelTask(TASKNAME_MUD);
         });
 
 
@@ -430,7 +435,7 @@ public class DeviceEventListener extends EventListener {
         scheduledTaskManager.cancelTask(TASKNAME_OPEN_WARN);
         scheduledTaskManager.cancelTask(TASKNAME_CLOSE_WARN);
         scheduledTaskManager.cancelTask(TASKNAME_IRON_WARN);
-        scheduledTaskManager.cancelTask(TASKNAME_DRY);
+        scheduledTaskManager.cancelTask(TASKNAME_MUD);
         recordAfter();
         recordBlock();
 
@@ -475,6 +480,7 @@ public class DeviceEventListener extends EventListener {
 
     //实时出铁总重量/总流量
     private BigDecimal totalWeight = BigDecimal.ZERO;
+
     //总干量
     private BigDecimal totalDry = BigDecimal.ZERO;
 
@@ -586,18 +592,18 @@ public class DeviceEventListener extends EventListener {
                 realtimeData.setValue(opcData.getData());
                 realtimeData.setDesc("冲渣状态");
                 mRealtimeStatus.put(FLUSH_STATUS, realtimeData);
-            } else if (opcData.getPointName().contains(PLAN_END_TIME)) {
-                RealtimeData realtimeData = new RealtimeData();
-                realtimeData.setValue(opcData.getData());
-                realtimeData.setDesc("预计出铁结束时间");
-                mRealtimeData.put(PLAN_END_TIME, realtimeData);
             }
+//            else if (opcData.getPointName().contains(PLAN_END_TIME)) {
+//                RealtimeData realtimeData = new RealtimeData();
+//                realtimeData.setValue(opcData.getData());
+//                realtimeData.setDesc("预计出铁结束时间");
+//                mRealtimeData.put(PLAN_END_TIME, realtimeData);
+//            }
 
 
             float yc = Float.valueOf(ObjectUtils.defaultIfNull(mContext.lookupVariable("yc"), "0").toString());
-            if (yc > 190) {
-                log.info("预警出铁");
-                PushData.send2Warn(AjaxResult.success("预警出铁"));
+            if (yc > PRESSURE_DIFF_VALUE) {
+                PushData.send2Warn(WarnData.warnOpen("预警出铁"));
             }
 
 
@@ -653,7 +659,7 @@ public class DeviceEventListener extends EventListener {
                         if (ObjectUtils.isEmpty(newPointName)) {
                             continue;
                         }
-                        newPointName =   CustomUtil.createNewPointName(newPointName);
+                        newPointName = CustomUtil.createNewPointName(newPointName);
                         if (Objects.equals(newPointName, pointName)) {
                             //3.创建变量上下文,设置变量
                             childchild.setData(data);