From 18c35e5010d11a49a4ce4f346e760a9bd1988c6c Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期五, 18 八月 2023 18:56:25 +0800
Subject: [PATCH] 调整粮情打印错误

---
 igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java |   91 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 89 insertions(+), 2 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 c00c5cc..0af4436 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,12 +1,24 @@
 package com.ld.igds.protocol.modbus.command;
 
+import com.ld.igds.common.CoreDeviceService;
+import com.ld.igds.constant.Constant;
+import com.ld.igds.constant.DeviceStatus;
 import com.ld.igds.io.RemoteControlService;
+import com.ld.igds.io.constant.OrderRespEnum;
+import com.ld.igds.io.constant.ProtocolEnum;
 import com.ld.igds.io.request.DeviceAutoControlRequest;
 import com.ld.igds.io.request.DeviceControlRequest;
+import com.ld.igds.io.request.ExeDevice;
 import com.ld.igds.io.request.TempControlRequest;
 import com.ld.igds.io.response.DeviceControlResponse;
+import com.ld.igds.models.Device;
+import com.ld.igds.protocol.modbus.ModbusUtil;
+import com.ld.igds.protocol.modbus.data.ModbusTcp;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * 褰撳墠鍗忚閽堝鏍囧噯Modbus-TCP鍗忚
@@ -21,15 +33,87 @@
 
     public static final String BEAN_ID = "modbus.remoteControlService";
 
+    @Resource
+    private CoreDeviceService deviceService;
+    @Resource
+    private ModbusUtil modbusUtil;
+
     @Override
     public String getProtocol() {
-        return null;
+        return ProtocolEnum.MODBUS_TCP.getCode();
     }
 
     @Override
     public DeviceControlResponse deviceControl(DeviceControlRequest request) {
-        return null;
+        List<ExeDevice> deviceList = request.getDeviceList();
+
+        if (null == deviceList || deviceList.isEmpty()) {
+            return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "娌℃湁闇�瑕佹墽琛岀殑璁惧");
+        }
+
+
+        try {
+
+
+            Device device;
+            ModbusTcp modbusTcp;
+            String[] addr;
+            String temp;
+            int addrExe = 65535;
+            for (ExeDevice exeDevice : deviceList) {
+                device = deviceService.getCacheDeviceById(exeDevice.getCompanyId(), exeDevice.getId());
+
+                if (null == device) continue;
+
+                if (null == device.getModbus()) continue;
+
+                modbusTcp = new ModbusTcp();
+                modbusTcp.setIp(request.getIp());
+                modbusTcp.setPort(request.getPort());
+                modbusTcp.setDeviceId(device.getId());
+                modbusTcp.setSerId(request.getSerId());
+
+                //modbus瑙勫垯锛氬紑鍦板潃-鍏冲湴鍧�-鍋滃湴鍧�-寮�鍒颁綅-鍏冲埌浣�-寮�鏁呴殰-鍏虫晠闅滐紝鏃犲湴鍧�鐢∟浠f浛
+                addr = device.getModbus().split("-");
+                temp = addr[0];
+                if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrOpen(temp);
+                temp = addr[1];
+                if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrClose(temp);
+                temp = addr[2];
+                if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrStop(temp);
+                temp = addr[3];
+                if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrOpenEnd(temp);
+                temp = addr[4];
+                if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrCloseEnd(temp);
+                temp = addr[5];
+                if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrOpenError(temp);
+                temp = addr[6];
+                if (!Constant.YN_N.equals(temp)) modbusTcp.setAddrCloseError(temp);
+
+
+                //鏍规嵁璁惧鐩爣鐩爣鐘舵�侊紝閫夋嫨闇�瑕佹墽琛岀殑閫氶亾
+                if (DeviceStatus.CLOSE.getCode().equals(device.getTargetStatus())) {
+                    addrExe = Integer.valueOf(modbusTcp.getAddrClose());
+                }
+
+                if(DeviceStatus.OPEN.getCode().equals(device.getTargetStatus())){
+                    addrExe = Integer.valueOf(modbusTcp.getAddrOpen());
+                }
+
+
+                //TODO 鍏朵粬鐘舵�佸緟瀹�
+
+                //鏍规嵁璁惧鐩爣鐘舵�侊紝璋冪敤MODBUS鎵ц
+                modbusUtil.writeCoil(modbusTcp.getIp(), modbusTcp.getPort(),addrExe, true);
+
+            }
+        } catch (Exception e) {
+
+        }
+
+        return new DeviceControlResponse(OrderRespEnum.ORDER_SUCCESS);
     }
+
 
     @Override
     public DeviceControlResponse closeAll(DeviceControlRequest request) {
@@ -48,11 +132,14 @@
 
     @Override
     public DeviceControlResponse airAutoControl(DeviceAutoControlRequest request) {
+
+
         return null;
     }
 
     @Override
     public DeviceControlResponse n2AutoControl(DeviceAutoControlRequest request) {
+
         return null;
     }
 }

--
Gitblit v1.9.3