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