From 9e02c41bbc10752e066917c4237275f5031960f4 Mon Sep 17 00:00:00 2001
From: vince <757871790@qq.com>
Date: 星期四, 24 八月 2023 11:45:19 +0800
Subject: [PATCH] 地磅单增加字段
---
igds-protocol-modbus/src/main/java/com/ld/igds/protocol/modbus/command/RemoteControlServiceImpl.java | 142 ++++++++++++++++++++++++++---------------------
1 files changed, 79 insertions(+), 63 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 100023b..2bf1d8e 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
@@ -11,11 +11,14 @@
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.modbus.service.HDeviceModbusService;
import com.ld.igds.models.Device;
-import com.ld.igds.protocol.modbus.ModbusUtil;
+import com.ld.igds.models.DeviceModbus;
+import com.ld.igds.protocol.modbus.ModbusUtil2;
import com.ld.igds.protocol.modbus.ServerUtil;
import com.ld.igds.protocol.modbus.data.ModbusTcp;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -35,16 +38,16 @@
public static final String BEAN_ID = "modbus.remoteControlService";
@Resource
- private CoreDeviceService deviceService;
+ private CoreDeviceService coreDeviceService;
+ @Resource
+ private HDeviceModbusService deviceModbusService;
@Resource
private AnalysisService analysisService;
- @Resource
- private ModbusUtil modbusUtil;
@Override
public String getProtocol() {
- return ProtocolEnum.MODBUS_TCP.getCode();
+ return ProtocolEnum.TCP_MODBUS.getCode();
}
@Override
@@ -56,55 +59,58 @@
}
try {
- Device device;
+ DeviceModbus deviceModbus;
ModbusTcp modbusTcp;
ModbusTcp modbusTcpLink = null;
String temp = Constant.YN_N;
for (ExeDevice exeDevice : deviceList) {
- device = deviceService.getCacheDeviceById(exeDevice.getCompanyId(), exeDevice.getId());
+ deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), exeDevice.getPassCode() + "");
- if (null == device) continue;
+ if (null == deviceModbus) {
+ log.error("褰撳墠璁惧---{}{},涓鸿幏鍙栧埌閰嶇疆鐨凪ODBUS淇℃伅", exeDevice.getSerId(), exeDevice.getName());
+ continue;
+ }
- if (null == device.getModbus()) continue;
-
- modbusTcp = new ModbusTcp(device.getModbus());
+ modbusTcp = new ModbusTcp(deviceModbus);
modbusTcp.setIp(request.getIp());
modbusTcp.setPort(request.getPort());
- modbusTcp.setDeviceCode(device.getPassCode() + "");
+ modbusTcp.setDeviceCode(exeDevice.getPassCode() + "");
modbusTcp.setSerId(request.getSerId());
modbusTcp.setCompanyId(request.getCompanyId());
- if (null != device.getLinkModbus()) {
- modbusTcpLink = new ModbusTcp(device.getLinkModbus());
- modbusTcpLink.setIp(request.getIp());
- modbusTcpLink.setPort(request.getPort());
- modbusTcpLink.setDeviceCode(device.getLink());
- modbusTcpLink.setSerId(request.getSerId());
- modbusTcpLink.setCompanyId(request.getCompanyId());
- }
-
//鏍规嵁璁惧鐩爣鐩爣鐘舵�侊紝閫夋嫨闇�瑕佹墽琛岀殑閫氶亾
- if (DeviceStatus.CLOSE.getCode().equals(device.getTargetStatus())) {
- temp = modbusTcp.getAddrClose();
+ if (DeviceStatus.CLOSE.getCode().equals(exeDevice.getTargetStatus())) {
+ temp = modbusTcp.getDeviceModbus().getClose();
}
- if (DeviceStatus.OPEN.getCode().equals(device.getTargetStatus())) {
- temp = modbusTcp.getAddrOpen();
+ if (DeviceStatus.OPEN.getCode().equals(exeDevice.getTargetStatus())) {
+ temp = modbusTcp.getDeviceModbus().getOpen();
}
- if (null == modbusTcpLink) {
+ if (StringUtils.isBlank(exeDevice.getLink()) || "null".equals(exeDevice.getLink())) {
//鏍规嵁璁惧鐩爣鐘舵�侊紝璋冪敤MODBUS鎵ц
modbusTcp.setAddrExe(this.getAddrExe(temp));
- doWriteExe(modbusTcp, device.getTargetStatus());
+ doWriteExe(modbusTcp, exeDevice.getTargetStatus());
+
continue;
}
+ deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), exeDevice.getLink());
+ if (null == deviceModbus) continue;
+ modbusTcpLink = new ModbusTcp(deviceModbus);
+ modbusTcpLink.setIp(request.getIp());
+ modbusTcpLink.setPort(request.getPort());
+ modbusTcpLink.setDeviceCode(exeDevice.getLink());
+ modbusTcpLink.setSerId(request.getSerId());
+ modbusTcpLink.setCompanyId(request.getCompanyId());
+
+
//濡傛灉鏄紑椋庢満
- if (DeviceStatus.F_OPEN.getCode().equals(device.getTargetStatus())) {
+ if (DeviceStatus.F_OPEN.getCode().equals(exeDevice.getTargetStatus())) {
//鍏堝紑绐楀彛
- temp = modbusTcp.getAddrOpen();
+ temp = modbusTcp.getDeviceModbus().getOpen();
modbusTcp.setAddrExe(this.getAddrExe(temp));
doWriteExe(modbusTcp, DeviceStatus.OPEN.getCode());
@@ -113,15 +119,15 @@
Thread.sleep(300);
//鍐嶅紑椋庢満
- temp = modbusTcpLink.getAddrOpen();
+ temp = modbusTcpLink.getDeviceModbus().getOpen();
modbusTcpLink.setAddrExe(this.getAddrExe(temp));
doWriteExe(modbusTcpLink, DeviceStatus.OPEN.getCode());
}
//濡傛灉鍏抽鏈�
- if (DeviceStatus.F_CLOSE.equals(device.getTargetStatus())) {
- temp = modbusTcpLink.getAddrClose();
+ if (DeviceStatus.F_CLOSE.equals(exeDevice.getTargetStatus())) {
+ temp = modbusTcpLink.getDeviceModbus().getStop();
modbusTcpLink.setAddrExe(this.getAddrExe(temp));
doWriteExe(modbusTcpLink, DeviceStatus.CLOSE.getCode());
@@ -129,25 +135,25 @@
//濡傛灉寮�绐�
- if (DeviceStatus.W_OPEN.equals(device.getTargetStatus())) {
- temp = modbusTcp.getAddrOpen();
+ if (DeviceStatus.W_OPEN.equals(exeDevice.getTargetStatus())) {
+ temp = modbusTcp.getDeviceModbus().getOpen();
modbusTcp.setAddrExe(this.getAddrExe(temp));
- doWriteExe(modbusTcp, device.getTargetStatus());
+ doWriteExe(modbusTcp, exeDevice.getTargetStatus());
}
//濡傛灉鏄叧绐楁埛
- if (DeviceStatus.W_CLOSE.equals(device.getTargetStatus())) {
+ if (DeviceStatus.W_CLOSE.equals(exeDevice.getTargetStatus())) {
//鍏堝叧椋庢満
- temp = modbusTcpLink.getAddrClose();
+ temp = modbusTcpLink.getDeviceModbus().getStop();
modbusTcpLink.setAddrExe(this.getAddrExe(temp));
doWriteExe(modbusTcpLink, DeviceStatus.CLOSE.getCode());
Thread.sleep(300);
//鍦ㄥ叧绐楁埛
- temp = modbusTcp.getAddrClose();
+ temp = modbusTcp.getDeviceModbus().getOpen();
modbusTcp.setAddrExe(this.getAddrExe(temp));
doWriteExe(modbusTcp, DeviceStatus.CLOSE.getCode());
@@ -171,8 +177,9 @@
}
private void doWriteExe(ModbusTcp modbusTcp, String targetStatus) throws Exception {
- boolean exeResult = modbusUtil.writeValue05(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe(), true);
+ boolean exeResult = ModbusUtil2.writeCoilStatus(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe(), true);
if (exeResult) {
+ log.debug("--------鍐欏叆鍊�---{}-{}-{}", modbusTcp.getSerId(), modbusTcp.getDeviceCode(), targetStatus);
ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getDeviceCode(), targetStatus);
}
}
@@ -186,55 +193,56 @@
@Override
public DeviceControlResponse queryStatus(DeviceControlRequest request) {
try {
- List<Device> list = deviceService.getCacheDeviceBySerId(request.getCompanyId(), request.getSerId());
+ List<Device> list = coreDeviceService.getCacheDeviceBySerId(request.getCompanyId(), request.getSerId());
if (null == list || list.isEmpty()) {
return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鏈幏鍙栧埌璁惧鍒楄〃淇℃伅");
}
-
+ DeviceModbus deviceModbus;
ModbusTcp modbusTcp;
ModbusTcp modbusTcpLink;
- int addrExe;
for (Device device : list) {
+ deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), device.getPassCode() + "");
- if (null == device.getModbus()) continue;
+ if (null == deviceModbus) {
+ log.error("褰撳墠璁惧---{}{},涓鸿幏鍙栧埌閰嶇疆鐨凪ODBUS淇℃伅", device.getSerId(), device.getName());
+ continue;
+ }
+ if (Constant.YN_N.equals(deviceModbus.getOpen())) continue;
- modbusTcp = new ModbusTcp(device.getModbus());
+ modbusTcp = new ModbusTcp(deviceModbus);
modbusTcp.setIp(request.getIp());
modbusTcp.setPort(request.getPort());
modbusTcp.setDeviceCode(device.getPassCode() + "");
modbusTcp.setSerId(device.getSerId());
modbusTcp.setCompanyId(device.getCompanyId());
+ doReadStatus(modbusTcp);
- if (Constant.YN_N.equals(modbusTcp.getAddrOpenEnd())) continue;
-
- addrExe = Integer.valueOf(modbusTcp.getAddrOpenEnd()) - 1;
- modbusTcp.setAddrExe(addrExe);
-
- doReadExe(modbusTcp);
-
- if (null == device.getLinkModbus()) continue;
+ if (StringUtils.isBlank(device.getLink()) || "null".equals(device.getLink())) continue;
Thread.sleep(300);
- modbusTcpLink = new ModbusTcp(device.getModbus());
+ deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), device.getLink());
+
+ if (null == deviceModbus) continue;
+
+ modbusTcpLink = new ModbusTcp(deviceModbus);
modbusTcpLink.setIp(request.getIp());
modbusTcpLink.setPort(request.getPort());
modbusTcpLink.setSerId(device.getSerId());
modbusTcpLink.setDeviceCode(device.getLink());
modbusTcpLink.setCompanyId(device.getCompanyId());
- addrExe = Integer.valueOf(modbusTcpLink.getAddrOpenEnd()) - 1;
- modbusTcpLink.setAddrExe(addrExe);
- doReadExe(modbusTcpLink);
+ modbusTcpLink.setAddrExe(this.getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd()));
+ doReadStatus(modbusTcpLink);
}
} catch (Exception e) {
log.error("璋冪敤MODBUS-TCP鎵ц寮傚父锛歿}", e);
- return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鍚庡彴鎵ц寮傚父锛�" + e.getMessage());
+ return new DeviceControlResponse(OrderRespEnum.ORDER_ERROR.getCode(), "鍚庡彴鎵ц寮傚父锛�" + e.getLocalizedMessage());
}
analysisService.analysisDevice(request, 3000);
@@ -248,17 +256,25 @@
* @param modbusTcp
* @throws Exception
*/
- private void doReadExe(ModbusTcp modbusTcp) throws Exception {
+ private void doReadStatus(ModbusTcp modbusTcp) throws Exception {
- if (Constant.YN_N.equals(modbusTcp.getAddrOpenEnd())) return;
+ if (Constant.YN_N.equals(modbusTcp.getDeviceModbus().getOpen())) return;
- boolean[] result = modbusUtil.readStatus02(modbusTcp.getIp(), modbusTcp.getPort(), modbusTcp.getAddrExe(), 2);
- log.debug("---------璇诲彇鐘舵��------{}--{}", modbusTcp.getDeviceCode(), result.toString());
+ int addrExe = getAddrExe(modbusTcp.getDeviceModbus().getOpenEnd());
- if (result[0]) {
+ boolean result = ModbusUtil2.readInputStatus(modbusTcp.getIp(), modbusTcp.getPort(), addrExe);
+ log.debug("---------璇诲紑鍒颁綅鐘舵��------{}-{}-{}", modbusTcp.getDeviceCode(), addrExe, result);
+
+ if (result) {
ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getDeviceCode(), DeviceStatus.OPEN.getCode());
}
- if (result[1]) {
+
+
+ addrExe = getAddrExe(modbusTcp.getDeviceModbus().getCloseEnd());
+ result = ModbusUtil2.readInputStatus(modbusTcp.getIp(), modbusTcp.getPort(), addrExe);
+ log.debug("---------璇诲叧鍒颁綅鐘舵��------{}-{}-{}", modbusTcp.getDeviceCode(), addrExe, result);
+
+ if (result) {
ServerUtil.add2StatusMap(modbusTcp.getCompanyId(), modbusTcp.getSerId(), modbusTcp.getDeviceCode(), DeviceStatus.CLOSE.getCode());
}
}
--
Gitblit v1.9.3