From 38ab8fbd4355070def9e3b39f362731dd4dea6d1 Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期三, 30 八月 2023 20:54:12 +0800
Subject: [PATCH] 优化设备状态解析

---
 igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ServerUtil.java |   54 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 49 insertions(+), 5 deletions(-)

diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ServerUtil.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ServerUtil.java
index b31119c..1a2813b 100644
--- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ServerUtil.java
+++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/ServerUtil.java
@@ -1,6 +1,9 @@
 package com.ld.igds.protocol.modbus;
 
+import com.ld.igds.constant.Constant;
+import com.ld.igds.constant.DeviceStatus;
 import com.ld.igds.util.ContextUtil;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -11,10 +14,9 @@
 public class ServerUtil {
 
 
-    /**
-     * 鐢ㄦ潵缂撳瓨锛孴CP璁惧鎵ц鏃堕棿璁板綍key = TCP鍞竴鏍囧織锛寁alue = 褰撳墠鎵ц鏃堕棿
-     */
-    public static Map<String, Long> contextExeModbusTcp = new HashMap<>();
+
+    public static  final String RUN_TAG = "RUN_TAG";
+
 
 
     /**
@@ -30,7 +32,36 @@
      * @param deviceCode 璁惧閫氶亾ID
      * @param status     涓嶈�冭檻璁惧绫诲瀷锛屽彧鍦ㄩ�氶亾涓婃爣璁版槸OPEN鎴栬�匔LOSE鍗冲彲
      */
-    public static void add2StatusMap(String companyId, String serId, String deviceCode, String status) {
+    public static void add2StatusMap(String companyId, String serId, String deviceCode, String status, String mainLink) {
+
+        //鑻ヤ笉涓虹┖锛屽垯鏌ヨ涓昏澶囩姸鎬�
+        if(StringUtils.isNotEmpty(mainLink)){
+            String oldStatus = contextStatusMap.get(ContextUtil.buildDeviceStatusKey(companyId, serId, mainLink));
+            //鑻ラ绐楁垨椋庡彛寮�
+            if(DeviceStatus.OPEN.getCode().equals(oldStatus)){
+                //鑻ラ鏈哄紑
+                if(DeviceStatus.OPEN.getCode().equals(status)){
+                    status = DeviceStatus.F_OPEN.getCode();
+                }
+                //鑻ラ鏈哄叧
+                if(DeviceStatus.CLOSE.getCode().equals(status)){
+                    status = DeviceStatus.W_OPEN.getCode();
+                }
+            }
+            //鑻ラ绐楁垨椋庡彛寮�
+            if(DeviceStatus.CLOSE.getCode().equals(oldStatus)){
+                //鑻ラ鏈哄紑
+                if(DeviceStatus.OPEN.getCode().equals(status)){
+                    status = DeviceStatus.ERROR.getCode();
+                }
+                //鑻ラ鏈哄叧
+                if(DeviceStatus.CLOSE.getCode().equals(status)){
+                    status = DeviceStatus.W_CLOSE.getCode();
+                }
+            }
+            contextStatusMap.put(ContextUtil.buildDeviceStatusKey(companyId, serId, mainLink), status);
+            return;
+        }
         contextStatusMap.put(ContextUtil.buildDeviceStatusKey(companyId, serId, deviceCode), status);
     }
 
@@ -38,4 +69,17 @@
         return contextStatusMap;
     }
 
+
+
+
+
+
+    public static int getAddrExe(String temp) {
+        if (Constant.YN_N.equals(temp)) return 65535;
+        if (temp.length() > 4) {
+            temp = temp.substring(temp.length() - 4);
+        }
+        return Integer.valueOf(temp) - 1;
+    }
+
 }

--
Gitblit v1.9.3