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 |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 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 11a7979..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,7 +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;
@@ -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);
     }
 

--
Gitblit v1.9.3