From d3553d8dd6fc00634ac32228e5b8e4d0624eda11 Mon Sep 17 00:00:00 2001
From: CZT <czt18638530771@163.com>
Date: 星期三, 30 八月 2023 11:10:51 +0800
Subject: [PATCH] 调整Modbus配置-解决轴流风机与轴流窗不在同一个分机配置的问题

---
 igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java |   26 +++++++++++++++++++++++---
 1 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java
index 2fe10f4..b6c25d7 100644
--- a/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java
+++ b/igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ld.igds.protocol.modbus.command;
 
 import com.ld.igds.common.CoreDeviceService;
+import com.ld.igds.common.CoreSerService;
 import com.ld.igds.constant.Constant;
 import com.ld.igds.constant.DeviceStatus;
 import com.ld.igds.io.RemoteControlService;
@@ -14,6 +15,7 @@
 import com.ld.igds.modbus.service.HModbusService;
 import com.ld.igds.models.Device;
 import com.ld.igds.models.DeviceModbus;
+import com.ld.igds.models.DeviceSer;
 import com.ld.igds.protocol.modbus.ModbusUtil2;
 import com.ld.igds.protocol.modbus.ServerUtil;
 import com.ld.igds.protocol.modbus.data.ModbusTcp;
@@ -43,6 +45,8 @@
     private HModbusService deviceModbusService;
     @Resource
     private AnalysisService analysisService;
+    @Resource
+    private CoreSerService coreSerService;
 
 
     @Override
@@ -87,6 +91,16 @@
                     temp = modbusTcp.getDeviceModbus().getOpen();
                 }
 
+                //鐜祦椋庢満-鍏�
+                if (DeviceStatus.F_CLOSE.getCode().equals(exeDevice.getTargetStatus())) {
+                    temp = modbusTcp.getDeviceModbus().getStop();
+                }
+
+                //鐜祦椋庢満-寮�
+                if (DeviceStatus.F_OPEN.getCode().equals(exeDevice.getTargetStatus())) {
+                    temp = modbusTcp.getDeviceModbus().getOpen();
+                }
+
                 if (StringUtils.isBlank(exeDevice.getLink()) || "null".equals(exeDevice.getLink())) {
                     //鏍规嵁璁惧鐩爣鐘舵�侊紝璋冪敤MODBUS鎵ц
                     modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp));
@@ -104,7 +118,12 @@
                 modbusTcpLink.setBizCode(exeDevice.getLink());
                 modbusTcpLink.setSerId(request.getSerId());
                 modbusTcpLink.setCompanyId(request.getCompanyId());
-
+                if(StringUtils.isNotEmpty(deviceModbus.getSerId())){
+                    //鑻odbus璁惧閰嶇疆鍒嗘満锛屽垯浣跨敤鎵�閰嶇疆鍒嗘満鐨処P銆佺鍙�
+                    DeviceSer deviceSer = coreSerService.getCacheSer(request.getCompanyId(), deviceModbus.getSerId());
+                    modbusTcpLink.setIp(deviceSer.getIp());
+                    modbusTcpLink.setPort(deviceSer.getPort());
+                }
 
                 //濡傛灉鏄紑椋庢満
                 if (DeviceStatus.F_OPEN.getCode().equals(exeDevice.getTargetStatus())) {
@@ -153,7 +172,7 @@
                     Thread.sleep(300);
 
                     //鍦ㄥ叧绐楁埛
-                    temp = modbusTcp.getDeviceModbus().getOpen();
+                    temp = modbusTcp.getDeviceModbus().getClose();
                     modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp));
 
                     doWriteExe(modbusTcp, DeviceStatus.CLOSE.getCode());
@@ -255,6 +274,7 @@
 
         if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getOpen())) return;
 
+        if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getOpenEnd())) return;
         int addrExe = ServerUtil.getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd());
 
         boolean result = ModbusUtil2.readInputStatus(modbusTcp.getIp(), modbusTcp.getPort(), addrExe);
@@ -264,7 +284,7 @@
             ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getBizCode(), DeviceStatus.OPEN.getCode());
         }
 
-
+        if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getCloseEnd())) return;
         addrExe = ServerUtil.getAddrExe(modbusTcp.getDeviceModbus().getCloseEnd());
         result = ModbusUtil2.readInputStatus(modbusTcp.getIp(), modbusTcp.getPort(), addrExe);
         log.debug("---------璇诲叧鍒颁綅鐘舵��------{}-{}-{}", modbusTcp.getBizCode(), addrExe, result);

--
Gitblit v1.9.3