CZT
2023-08-30 178c71496d5508dae69110f4d988cf128723d740
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
@@ -63,6 +67,7 @@
            ModbusTcp modbusTcp;
            ModbusTcp modbusTcpLink = null;
            String temp = Constant.YN_N;
            DeviceSer deviceSer;
            for (ExeDevice exeDevice : deviceList) {
                deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), exeDevice.getPassCode() + "");
@@ -74,6 +79,12 @@
                modbusTcp = new ModbusTcp(deviceModbus);
                modbusTcp.setIp(request.getIp());
                modbusTcp.setPort(request.getPort());
                //若Modbus设备配置分机,则使用所配置分机的IP、端口
                if(StringUtils.isNotEmpty(deviceModbus.getSerId())){
                    deviceSer = coreSerService.getCacheSer(request.getCompanyId(), deviceModbus.getSerId());
                    modbusTcp.setIp(deviceSer.getIp());
                    modbusTcp.setPort(deviceSer.getPort());
                }
                modbusTcp.setBizCode(exeDevice.getPassCode() + "");
                modbusTcp.setSerId(request.getSerId());
                modbusTcp.setCompanyId(request.getCompanyId());
@@ -87,6 +98,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));
@@ -94,7 +115,6 @@
                    continue;
                }
                deviceModbus = deviceModbusService.getCacheDeviceModbus(request.getCompanyId(), exeDevice.getLink());
                if (null == deviceModbus) continue;
@@ -105,6 +125,12 @@
                modbusTcpLink.setSerId(request.getSerId());
                modbusTcpLink.setCompanyId(request.getCompanyId());
                //若Modbus设备配置分机,则使用所配置分机的IP、端口
                if(StringUtils.isNotEmpty(deviceModbus.getSerId())){
                    deviceSer = coreSerService.getCacheSer(request.getCompanyId(), deviceModbus.getSerId());
                    modbusTcpLink.setIp(deviceSer.getIp());
                    modbusTcpLink.setPort(deviceSer.getPort());
                }
                //如果是开风机
                if (DeviceStatus.F_OPEN.getCode().equals(exeDevice.getTargetStatus())) {
@@ -112,9 +138,7 @@
                    //先开窗口
                    temp = modbusTcp.getDeviceModbus().getOpen();
                    modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp));
                    doWriteExe(modbusTcp, DeviceStatus.OPEN.getCode());
                    Thread.sleep(300);
@@ -153,7 +177,7 @@
                    Thread.sleep(300);
                    //在关窗户
                    temp = modbusTcp.getDeviceModbus().getOpen();
                    temp = modbusTcp.getDeviceModbus().getClose();
                    modbusTcp.setAddrExe(ServerUtil.getAddrExe(temp));
                    doWriteExe(modbusTcp, DeviceStatus.CLOSE.getCode());
@@ -255,6 +279,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 +289,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);