Преглед на файлове

增加自动门ts信号对接

k преди 2 години
родител
ревизия
f21ae307d2

+ 13 - 0
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/StatusUpdateService.java

@@ -33,4 +33,17 @@ public interface StatusUpdateService {
      */
     void feedbackTS(Integer doorNo);
 
+    /**
+     * 开门
+     *
+     * @param doorNo
+     */
+    void openDoor(Integer doorNo);
+
+    /**
+     * 关门
+     */
+    void closeDoor(Integer doorNo);
+
+
 }

+ 12 - 4
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/impl/SocketBufferServiceImpl.java

@@ -260,11 +260,19 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                         // agvUnloadingConfirmService.confirmEmptyPlate(task130.getTaskNo());
                     }
                     break;
-                case 126: //600
-                    log.info("快速门-请求开启!");
+                case 126: //600 中间卷帘门请求开启 定时请求
+                    log.info("快速门-请求开启!" + "-" + JSON.toJSONString(event));
+                    String lp3_126 = event.getLp3();
+                    executorService.execute(() -> {
+                        statusUpdateService.openDoor(Integer.valueOf(lp3_126));
+                    });
                     break;
-                case 127: //601
-                    log.info("快速门-请求关闭!");
+                case 127: //601 中间卷帘门请求关闭 只请求一次
+                    log.info("快速门-请求关闭!" + "-" + JSON.toJSONString(event));
+                    String lp3_127 = event.getLp3();
+                    executorService.execute(() -> {
+                        statusUpdateService.closeDoor(Integer.valueOf(lp3_127));
+                    });
                     break;
                 case 134:
                     break;

+ 34 - 1
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/service/impl/StatusUpdateServiceImpl.java

@@ -6,10 +6,10 @@ import com.ruoyi.ams.agv.ndc.service.IAmsTaskService;
 import com.ruoyi.ams.agv.ndc.service.StatusUpdateService;
 import com.ruoyi.ams.business.BusinessServiceImpl;
 import com.ruoyi.ams.business.IBusinessService;
-import com.ruoyi.ams.task.form.AddTaskForm;
 import com.ruoyi.ams.task.service.IWcsTaskService;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.common.utils.uuid.SnowflakeIdWorker;
+import com.ruoyi.hard.modbus.tcp.AutoDoorClient;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -26,6 +26,8 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
     private IWcsTaskService wcsTaskService;
     @Autowired
     private IBusinessService businessService;
+    @Autowired
+    private AutoDoorClient autoDoorClient;
 
     public enum AGV_ACTION {
         /***
@@ -161,4 +163,35 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
         }
         amsTaskService.insertAmsTask(addTaskForm);
     }
+
+    @Override
+    public void openDoor(Integer doorNo) {
+        AutoDoorClient.AUTO_DOOR_NO doorNum = null;
+        if (doorNo == 1) {
+            doorNum = AutoDoorClient.AUTO_DOOR_NO.D;
+        } else if (doorNo == 2) {
+            doorNum = AutoDoorClient.AUTO_DOOR_NO.C;
+        }
+        Boolean isOpen = autoDoorClient.sendOpen(doorNum);
+        if (isOpen) {
+            log.info("开门信号发送成功!门号:" + doorNo);
+            feedbackTS(doorNo);
+        }
+    }
+
+    @Override
+    public void closeDoor(Integer doorNo) {
+        AutoDoorClient.AUTO_DOOR_NO doorNum = null;
+        if (doorNo == 1) {
+            doorNum = AutoDoorClient.AUTO_DOOR_NO.D;
+        } else if (doorNo == 2) {
+            doorNum = AutoDoorClient.AUTO_DOOR_NO.C;
+        }
+        Boolean isClose = autoDoorClient.sendClose(doorNum);
+        if (isClose) {
+            log.info("关门信号发送成功!门号:" + doorNo);
+            // 不需要反馈
+//            feedbackTS(doorNo);
+        }
+    }
 }

+ 103 - 28
warewms-hard/src/main/java/com/ruoyi/hard/modbus/tcp/AutoDoorClient.java

@@ -8,6 +8,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.PostConstruct;
+import java.util.HashMap;
+import java.util.Map;
+
 import static com.ruoyi.hard.modbus.tcp.AutoDoorClient.AUTOMATIC_DOOR_CODE.*;
 
 
@@ -28,6 +32,13 @@ public class AutoDoorClient {
     @Qualifier("modbusTcpMasterTemplateFirst")
     private ModbusTcpMasterTemplate modbusTcpMasterTemplateFirst;
 
+    /**
+     * 自动门(靠马路-第二层)
+     */
+    @Autowired(required = false)
+    @Qualifier("modbusTcpMasterTemplateSixth")
+    private ModbusTcpMasterTemplate modbusTcpMasterTemplateSixth;
+
     /**
      * 自动门
      */
@@ -35,6 +46,76 @@ public class AutoDoorClient {
     @Qualifier("modbusTcpMasterTemplateSecond")
     private ModbusTcpMasterTemplate modbusTcpMasterTemplateSecond;
 
+    /**
+     * 卷帘门
+     */
+    @Autowired(required = false)
+    @Qualifier("modbusTcpMasterTemplateSeventh")
+    private ModbusTcpMasterTemplate modbusTcpMasterTemplateSeventh;
+
+    private Map<String, ModbusTcpMasterTemplate> tcpMasterTemplateMap;
+
+    @PostConstruct
+    public void initMap() {
+        tcpMasterTemplateMap = new HashMap<>();
+        tcpMasterTemplateMap.put(AUTO_DOOR_NO.A.name(), modbusTcpMasterTemplateFirst);
+        tcpMasterTemplateMap.put(AUTO_DOOR_NO.B.name(), modbusTcpMasterTemplateSecond);
+        tcpMasterTemplateMap.put(AUTO_DOOR_NO.C.name(), modbusTcpMasterTemplateSixth);
+        tcpMasterTemplateMap.put(AUTO_DOOR_NO.D.name(), modbusTcpMasterTemplateSeventh);
+    }
+
+    public ModbusMasterUtil getModbusMasterUtil(AUTO_DOOR_NO doorNo) {
+        return tcpMasterTemplateMap.get(doorNo.name()).getModbusMasterUtil();
+    }
+
+    /**
+     * 自动门编号
+     */
+    public enum AUTO_DOOR_NO {
+        /***
+         * 靠墙门
+         */
+        A("1"),
+        /***
+         * 靠室内
+         */
+        B("2"),
+        /***
+         * 靠墙门(第二层)
+         */
+        C("3"),
+        /***
+         * 卷帘门
+         */
+        D("4");
+
+        private String value;
+
+        AUTO_DOOR_NO(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        /**
+         * 根据值获得枚举类型 switch
+         *
+         * @param value
+         * @return
+         */
+        public static AUTO_DOOR_NO getByValue(String value) {
+            for (AUTO_DOOR_NO code : values()) {
+                if (code.getValue().equals(value)) {
+                    return code;
+                }
+            }
+            return null;
+        }
+    }
+
+
     /**
      * 自动门命令
      */
@@ -105,71 +186,66 @@ public class AutoDoorClient {
     /**
      * 开门
      *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
+     * @param doorNo
      */
-    public Boolean sendOpen(Boolean con) {
-        ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
-                : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
-        sendCloseClear(con);
+    public Boolean sendOpen(AUTO_DOOR_NO doorNo) {
+        ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
+        sendCloseClear(doorNo);
         Boolean r = modbusMasterUtil.writeHoldingRegisters(WRITE_OPEN.getSlaveId(), WRITE_OPEN.offset, WRITE_OPEN.getValue());
         try {
             Thread.sleep(1000);
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-        sendOpenClear(con);
+        sendOpenClear(doorNo);
         return r;
     }
 
     /**
      * 关门
      *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
+     * @param doorNo
      */
-    public Boolean sendClose(Boolean con) {
-        ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
-                : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
-        sendOpenClear(con);
+    public Boolean sendClose(AUTO_DOOR_NO doorNo) {
+        ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
+        sendOpenClear(doorNo);
         Boolean r = modbusMasterUtil.writeHoldingRegisters(WRITE_CLOSE.getSlaveId(), WRITE_CLOSE.offset, WRITE_CLOSE.getValue());
         try {
             Thread.sleep(1000);
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-        sendCloseClear(con);
+        sendCloseClear(doorNo);
         return r;
     }
 
     /**
      * 开门清除标记
      *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
+     * @param doorNo
      */
-    public Boolean sendOpenClear(Boolean con) {
-        ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
-                : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
+    public Boolean sendOpenClear(AUTO_DOOR_NO doorNo) {
+        ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
         return modbusMasterUtil.writeHoldingRegisters(WRITE_OPEN.getSlaveId(), WRITE_OPEN.offset, WRITE_OPEN.getClear());
     }
 
     /**
      * 关门清除标记
      *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
+     * @param doorNo
      */
-    public Boolean sendCloseClear(Boolean con) {
-        ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
-                : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
+    public Boolean sendCloseClear(AUTO_DOOR_NO doorNo) {
+        ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
         return modbusMasterUtil.writeHoldingRegisters(WRITE_CLOSE.getSlaveId(), WRITE_CLOSE.offset, WRITE_CLOSE.getClear());
     }
 
     /**
      * 查询开门状态 暂时用不到
      *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
+     * @param
      */
-    public AjaxResult readOpenSts(Boolean con) {
-        ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
-                : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
+    public AjaxResult readOpenSts(AUTO_DOOR_NO doorNo) {
+        ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
         ReadResponse readResponse = modbusMasterUtil.readHoldingRegisters(RAED_OPEN_STS.getSlaveId(), RAED_OPEN_STS.getOffset(), RAED_OPEN_STS.getValue());
         boolean[] booleanData = readResponse.getBooleanData();
         return AjaxResult.success("", booleanData);
@@ -178,11 +254,10 @@ public class AutoDoorClient {
     /**
      * 查询关门门状态 暂时用不到
      *
-     * @param con true代表靠马路的自动门 false墙里面的自动门
+     * @param doorNo
      */
-    public AjaxResult readCloseSts(Boolean con) {
-        ModbusMasterUtil modbusMasterUtil = con ? modbusTcpMasterTemplateFirst.getModbusMasterUtil()
-                : modbusTcpMasterTemplateSecond.getModbusMasterUtil();
+    public AjaxResult readCloseSts(AUTO_DOOR_NO doorNo) {
+        ModbusMasterUtil modbusMasterUtil = getModbusMasterUtil(doorNo);
         ReadResponse readResponse = modbusMasterUtil.readHoldingRegisters(RAED_ClOSE_STS.getSlaveId(), RAED_ClOSE_STS.getOffset(), RAED_ClOSE_STS.getValue());
         boolean[] booleanData = readResponse.getBooleanData();
         return AjaxResult.success("", booleanData);