Browse Source

完善PLC对接,添加任务取消后呼叫成功信号消除

zhifei 1 year ago
parent
commit
ea9df19c3b

+ 5 - 5
ruoyi-admin/src/main/resources/application-dev.yml

@@ -65,34 +65,34 @@ logging:
 
 # 是否开启服务
 init-task:
-    autosend: false # 自动下发任务
+    autosend: true # 自动下发任务
     aciservice: false # ndc通讯
 
     # plc连接配置
 plc:
     plcList[0]:
-        ip: 192.168.100.101
+        ip: 192.168.1.131
         enable: false
         name: packingMachine_1Plc
         ePlcType: S1200
         heartbeat: DB5000.2
         confirmTheStatus:
     plcList[1]:
-        ip: 192.68.100.102
+        ip: 192.168.1.132
         enable: false
         name: packingMachine_2Plc
         ePlcType: S1200
         heartbeat: DB5000.2
         confirmTheStatus:
     plcList[2]:
-        ip: 192.68.100.103
+        ip: 192.168.1.133
         enable: false
         name: packingMachine_3Plc
         ePlcType: S1200
         heartbeat: DB5000.2
         confirmTheStatus:
     plcList[3]:
-        ip: 192.68.100.104
+        ip: 192.168.1.134
         enable: false
         name: stackingMachinePlc
         ePlcType: S1200

+ 5 - 5
ruoyi-admin/src/main/resources/application-prod.yml

@@ -72,34 +72,34 @@ modbus:
     tcp-master:
         fifth: # 充电桩
             open: true
-            host: 192.168.10.220
+            host: 192.168.1.220
             port: 8899
 
     # plc连接配置
 plc:
     plcList[0]:
-        ip: 192.168.10.101
+        ip: 192.168.1.131
         enable: true
         name: packingMachine_1Plc
         ePlcType: S1200
         heartbeat: DB5001.2.0
         confirmTheStatus: DB5000.2.0
     plcList[1]:
-        ip: 192.168.10.102
+        ip: 192.168.1.132
         enable: true
         name: packingMachine_2Plc
         ePlcType: S1200
         heartbeat: DB5001.2.0
         confirmTheStatus: DB5000.2.0
     plcList[2]:
-        ip: 192.168.10.103
+        ip: 192.168.1.133
         enable: true
         name: packingMachine_3Plc
         ePlcType: S1200
         heartbeat: DB5001.2.0
         confirmTheStatus: DB5000.2.0
     plcList[3]:
-        ip: 192.168.10.104
+        ip: 192.168.1.134
         enable: true
         name: stackingMachinePlc
         ePlcType: S1200

+ 29 - 22
ruoyi-dongfangyaiye/src/main/java/com/ruoyi/taiye/job/AMSJob.java

@@ -25,7 +25,6 @@ public class AMSJob {
     private IDeviceLogService deviceLogService;
 
 
-
     public void test() {
         // 一号包装机
         boolean b1 = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).readBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_1.getMetadata());
@@ -52,20 +51,14 @@ public class AMSJob {
     }
 
 
-
     /**
      * 一号包装机下料任务
      */
     public void onePackingMachineUnloading() {
-        log.info("一号包装机下料信号:{}:{}", PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCEnum.PACKING_MACHINE_UNLOADING_1.getMetadata());
         boolean b = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).readBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_1.getMetadata());
         deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "获取到下料信号:" + b, "1"));
         if (b) {
-            boolean b1 = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).readBoolean(PLCEnum.STACKING_MACHINE_FEEDING.getMetadata());
-            deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "获取到上料信号:" + b1, "1"));
-            if (b1) {
-                processService.createPackingMachineUnloadingTask("PM_L_1", 100000);
-            }
+            processService.createPackingMachineUnloadingTask("PM_L_1", 100000);
         }
     }
 
@@ -76,11 +69,7 @@ public class AMSJob {
         boolean b = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).readBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_2.getMetadata());
         deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "获取到下料信号:" + b, "1"));
         if (b) {
-            boolean b1 = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).readBoolean(PLCEnum.STACKING_MACHINE_FEEDING.getMetadata());
-            deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "获取到上料信号:" + b1, "1"));
-            if (b1) {
-                processService.createPackingMachineUnloadingTask("PM_L_3", 100001);
-            }
+            processService.createPackingMachineUnloadingTask("PM_L_2", 100001);
         }
     }
 
@@ -91,13 +80,8 @@ public class AMSJob {
         boolean b = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).readBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_3.getMetadata());
         deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "获取到下料信号:" + b, "1"));
         if (b) {
-            boolean b1 = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).readBoolean(PLCEnum.STACKING_MACHINE_FEEDING.getMetadata());
-            deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "获取到上料信号:" + b1, "1"));
-            if (b1) {
-                processService.createPackingMachineUnloadingTask("PM_L_3", 100002);
-            }
+            processService.createPackingMachineUnloadingTask("PM_L_3", 100002);
         }
-
     }
 
     /**
@@ -105,11 +89,10 @@ public class AMSJob {
      */
     public void onePackingMachineUpEmptyPallets() {
         boolean b = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).readBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_PALLETS_1.getMetadata());
-        deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(),PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(),"获取到上空信号:"+b,"1"));
+        deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "获取到上空信号:" + b, "1"));
         if (b) {
-        processService.createPackingMachineUpEmptyPallets("PM_UP_1", 100003L);
+            processService.createPackingMachineUpEmptyPallets("PM_UP_1", 100003L);
         }
-
     }
 
     /**
@@ -142,4 +125,28 @@ public class AMSJob {
         log.info("已清除一周前的数据,数量:{}", i);
     }
 
+    public void test1() {
+        boolean b = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).readBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_1.getMetadata());
+        deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "获取到下料信号:" + b, "1"));
+        if (b) {
+            processService.createPackingMachineUnloadingTask("PM_L_1", 100000);
+        }
+    }
+
+    public void test2() {
+        boolean b = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).readBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_2.getMetadata());
+        deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "获取到下料信号:" + b, "1"));
+        if (b) {
+            processService.createPackingMachineUnloadingTask("PM_L_3", 100001);
+        }
+    }
+
+    public void test3() {
+        boolean b = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).readBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_3.getMetadata());
+        deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "获取到下料信号:" + b, "1"));
+        if (b) {
+            processService.createPackingMachineUnloadingTask("PM_L_3", 100002);
+        }
+    }
+
 }

+ 66 - 15
ruoyi-dongfangyaiye/src/main/java/com/ruoyi/taiye/service/impl/ProcessServiceImpl.java

@@ -17,10 +17,13 @@ import com.ruoyi.common.core.domain.DeviceLog;
 import com.ruoyi.system.enums.PLCConnectNameEnum;
 import com.ruoyi.system.enums.PLCEnum;
 import com.ruoyi.system.init.PlcConnectServiceRunner;
+import com.ruoyi.taiye.service.IDeviceLogService;
 import com.ruoyi.taiye.service.ProcessService;
+import com.serotonin.modbus4j.sero.log.SimpleLog;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -43,40 +46,88 @@ public class ProcessServiceImpl implements ProcessService {
 
     @Autowired
     private IInvLotLocIdService invLotLocIdService;
+
     @Autowired
     private IInvLotAttService iInvLotAttService;
 
     @Autowired
     private PlcConnectServiceRunner plcConnectServiceRunner;
 
+    @Autowired
+    private IDeviceLogService deviceLogService;
+
     @Override
-    public void createPackingMachineUnloadingTask(String taskType, Integer from) {
+    @Transactional
+    public synchronized void createPackingMachineUnloadingTask(String taskType, Integer from) {
         WcsTask wcsTask = new WcsTask();
-        wcsTask.setLocationTo(SMID);
-        List<WcsTask> tasking = wcsTaskMapper.getTasking(wcsTask);
-        if (!tasking.isEmpty()) {
-            log.info(taskType + "请求下料存在进行的任务:" + tasking.stream().map(WcsTask::getTaskNo).collect(Collectors.toList()));
-            return;
+        //获取产线上缓存位的状态
+        String s = taskType.split("_")[2];
+        BaseLocationInfo baseLocationInfo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo("DOWN_HC-" + s, Constant.WAREHOUSE_ID);
+        AjaxResult ajaxResult = null;
+        log.info(baseLocationInfo.getIsEmpty());
+        if ("N".equals(baseLocationInfo.getIsEmpty())) {
+            boolean b1 = plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).readBoolean(PLCEnum.STACKING_MACHINE_FEEDING.getMetadata());
+            deviceLogService.insertDeviceLog(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "获取到上料信号:" + b1, "1"));
+            if (!b1) {
+                return;
+            }
+            wcsTask.setLocationTo(SMID);
+            List<WcsTask> tasking = wcsTaskMapper.getTasking(wcsTask);
+            if (!tasking.isEmpty()) {
+                log.info(taskType + "叠包机上料存在进行的任务:" + tasking.stream().map(WcsTask::getTaskNo).collect(Collectors.toList()));
+                return;
+            }
+            //生成两个任务 打包机->叠包机,打包机缓存 ->叠包机
+            // 打包机->叠包机
+            AgvCallDTO agvCallDTO = new AgvCallDTO();
+            agvCallDTO.setLocationFrom(String.valueOf(from));
+            agvCallDTO.setLocationTo(SMID);
+            ajaxResult = iBusinessService.agvCall(Constant.FLOW_CONFIG_ID.valueOf(taskType).getValue(), agvCallDTO);
+
+            //打包机缓存 ->叠包机
+            agvCallDTO.setLocationFrom(String.valueOf(baseLocationInfo.getId()));
+            ajaxResult = iBusinessService.agvCall(Constant.FLOW_CONFIG_ID.valueOf("SM_HC_" + s).getValue(), agvCallDTO);
+
+            plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata(), true);
+            SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata() + "值:true", "1"));
+
+        } else {
+            wcsTask.setLocationTo(baseLocationInfo.getId().toString());
+            List<WcsTask> tasking = wcsTaskMapper.getTasking(wcsTask);
+            if (!tasking.isEmpty()) {
+                log.info(taskType + "下料至暂存区存在进行的任务:" + tasking.stream().map(WcsTask::getTaskNo).collect(Collectors.toList()));
+                return;
+            }
+            AgvCallDTO agvCallDTO = new AgvCallDTO();
+            agvCallDTO.setLocationFrom(String.valueOf(from));
+            agvCallDTO.setLocationTo(baseLocationInfo.getId().toString());
+            ajaxResult = iBusinessService.agvCall(Constant.FLOW_CONFIG_ID.valueOf("PM_HC_" + s).getValue(), agvCallDTO);
         }
-        AgvCallDTO agvCallDTO = new AgvCallDTO();
-        agvCallDTO.setLocationFrom(from + "");
-        agvCallDTO.setLocationTo(SMID);
-        AjaxResult ajaxResult = iBusinessService.agvCall(Constant.FLOW_CONFIG_ID.valueOf(taskType).getValue(), agvCallDTO);
         if (ajaxResult.isSuccess()) {
-            if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_1.name())) {
+            if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_L_1.name())) {
+                plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata(), true);
+                SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata() + "值:true", "1"));
+            }
+            if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_L_2.name())) {
+                plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata(), true);
+                SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata() + "值:true", "1"));
+            }
+            if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_L_3.name())) {
+                plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_3.getMetadata(), true);
+                SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_3.getMetadata() + "值:true", "1"));
+            }
+            if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_UP_1.name())) {
                 plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_1.getMetadata(), true);
                 SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_1.getMetadata() + "值:true", "1"));
             }
-            if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_2.name())) {
+            if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_UP_2.name())) {
                 plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_2.getMetadata(), true);
                 SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_2.getMetadata() + "值:true", "1"));
             }
-            if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_3.name())) {
+            if (taskType.equals(Constant.FLOW_CONFIG_ID.PM_UP_3.name())) {
                 plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_3.getMetadata(), true);
                 SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_3.getMetadata() + "值:true", "1"));
             }
-            plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata(), true);
-            SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata() + "值:true", "1"));
         }
     }
 

+ 10 - 10
ruoyi-system/src/main/java/com/ruoyi/system/enums/PLCEnum.java

@@ -65,17 +65,17 @@ public enum PLCEnum {
     /**
      * 一号包装机下料完成信号
      */
-    PACKING_MACHINE_UNLOADING_Leave_1("DB5000.1.0"),
+    PACKING_MACHINE_UNLOADING_Leave_1("DB5000.1.1"),
 
     /**
      * 二号包装机下料完成信号
      */
-    PACKING_MACHINE_UNLOADING_Leave_2("DB5000.1.0"),
+    PACKING_MACHINE_UNLOADING_Leave_2("DB5000.1.1"),
 
     /**
      * 三号包装机下料完成信号
      */
-    PACKING_MACHINE_UNLOADING_Leave_3("DB5000.1.0"),
+    PACKING_MACHINE_UNLOADING_Leave_3("DB5000.1.1"),
 
     /**
      * 一号包装机上空完成信号
@@ -108,37 +108,37 @@ public enum PLCEnum {
     STACKING_MACHINE_FEEDING_FINISH("DB5000.0.1"),
 
     /**
-     * 一号包装机下料接收返回信号
+     * 一号包装机下料呼叫成功返回信号
      */
     PACKING_MACHINE_UNLOADING_RECEPTION_1("DB5000.1.2"),
 
     /**
-     * 二号包装机下料接收返回信号
+     * 二号包装机下料呼叫成功返回信号
      */
     PACKING_MACHINE_UNLOADING_RECEPTION_2("DB5000.1.2"),
 
     /**
-     * 三号包装机下料接收返回信号
+     * 三号包装机下料呼叫成功返回信号
      */
     PACKING_MACHINE_UNLOADING_RECEPTION_3("DB5000.1.2"),
 
     /**
-     * 一号包装机上空接收返回信号
+     * 一号包装机上空呼叫成功返回信号
      */
     PACKING_MACHINE_UP_EMPTY_RECEPTION_1("DB5000.0.2"),
 
     /**
-     * 二号包装机上空接收返回信号
+     * 二号包装机上空呼叫成功返回信号
      */
     PACKING_MACHINE_UP_EMPTY_RECEPTION_2("DB5000.0.2"),
 
     /**
-     * 三号包装机上空接收返回信号
+     * 三号包装机上空呼叫成功返回信号
      */
     PACKING_MACHINE_UP_EMPTY_RECEPTION_3("DB5000.0.2"),
 
     /**
-     * 叠包机上料接收返回信号
+     * 叠包机上料呼叫成功返回信号
      */
     STACKING_MACHINE_FEEDING_RECEPTION("DB5000.0.2"),
 

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/AciService.java

@@ -38,7 +38,7 @@ public class AciService {
 
     private static final int BUFF_SIZE = 2048;
 
-    private static final String IP_ADDR = "192.168.10.130";
+    private static final String IP_ADDR = "192.168.1.130";
 
     private static final int IP_PORT = 30002;
 

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

@@ -211,7 +211,7 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                     } else {
                         //解析卸货确认状态
                         executorService.execute(() -> {
-                            statusUpdateService.confirmAnalysis(task60.getTaskNo(), aciIndex, PICKUP.getValue(), icarNo);
+                            statusUpdateService.confirmAnalysis(task60.getTaskNo(), aciIndex, UNLOAD.getValue(), icarNo);
                         });
                     }
                     break;
@@ -229,7 +229,7 @@ public class SocketBufferServiceImpl implements SocketBufferService {
                     } else {
                         //解析卸货确认状态
                         executorService.execute(() -> {
-                            statusUpdateService.confirmAnalysis(task60Pick.getTaskNo(), aciIndexPick, UNLOAD.getValue(), icarNo);
+                            statusUpdateService.confirmAnalysis(task60Pick.getTaskNo(), aciIndexPick, PICKUP.getValue(), icarNo);
                         });
                     }
                     break;

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

@@ -20,6 +20,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
 import java.util.List;
 
 import static com.ruoyi.ams.agv.ndc.service.impl.StatusUpdateServiceImpl.AGV_ACTION.PICKUP;
@@ -165,7 +166,8 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
                 return true;
             }
             if (AGV_ACTION.UNLOAD.getValue().equals(type)) {
-                if ("PM_L".equals(wcsTask.getTaskType().substring(0, 4))) {
+                String substring = wcsTask.getTaskType().substring(0, 4);
+                if ("PM_L".equals(substring) || "SM_H".equals(substring)) {
                     PLCConnectName = PLCConnectNameEnum.STACKING_MACHINE.getMetadata();
                     theAddressOfTheRequest = PLCEnum.STACKING_MACHINE_FEEDING_REQUEST_ENTER.getMetadata();
                     enterTheSignalAddress = PLCEnum.STACKING_MACHINE_FEEDING_ENTER.getMetadata();
@@ -191,16 +193,19 @@ public class StatusUpdateServiceImpl implements StatusUpdateService {
             } else {
                 switch (wcsTask.getTaskType()) {
                     case "PM_L_1":
+                    case "PM_HC_1":
                         PLCConnectName = PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata();
                         theAddressOfTheRequest = PLCEnum.PACKING_MACHINE_UNLOADING_REQUEST_ENTER_1.getMetadata();
                         enterTheSignalAddress = PLCEnum.PACKING_MACHINE_UNLOADING_ENTER_1.getMetadata();
                         break;
                     case "PM_L_2":
+                    case "PM_HC_2":
                         PLCConnectName = PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata();
                         theAddressOfTheRequest = PLCEnum.PACKING_MACHINE_UNLOADING_REQUEST_ENTER_2.getMetadata();
                         enterTheSignalAddress = PLCEnum.PACKING_MACHINE_UNLOADING_ENTER_2.getMetadata();
                         break;
                     case "PM_L_3":
+                    case "PM_HC_3":
                         PLCConnectName = PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata();
                         theAddressOfTheRequest = PLCEnum.PACKING_MACHINE_UNLOADING_REQUEST_ENTER_3.getMetadata();
                         enterTheSignalAddress = PLCEnum.PACKING_MACHINE_UNLOADING_ENTER_3.getMetadata();

+ 1 - 4
warewms-ams/src/main/java/com/ruoyi/ams/business/BusinessServiceImpl.java

@@ -134,13 +134,10 @@ public class BusinessServiceImpl implements IBusinessService {
                 if (!StringUtils.isEmpty(flowConfigHeaderVO.getLocationFrom())) {
                     zoneIdList = Arrays.stream(flowConfigHeaderVO.getLocationFrom().split(",")).collect(Collectors.toList());
                 }
-
                 List<WcsTask> wcsTaskList = new ArrayList<>();
-                if ("PM_L".equals(flowConfigHeaderVO.getRemark())) {
+                if ("PM_L".equals(flowConfigHeaderVO.getRemark())||"PM_HC".equals(flowConfigHeaderVO.getRemark())||"SM_HC".equals(flowConfigHeaderVO.getRemark())) {
                     locationFrom = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(agvCallDTO.getLocationFrom(), Constant.WAREHOUSE_ID);
                     locationTo = baseLocationInfoService.selectBaseLocationInfoByIdOrNo(agvCallDTO.getLocationTo(), Constant.WAREHOUSE_ID);
-                    baseLocationInfoService.occupyLocation(locationTo.getId(), Constant.WAREHOUSE_ID, "AMS");
-                    baseLocationInfoService.unOccupyLocation(locationFrom.getId(), Constant.WAREHOUSE_ID, "AMS");
                     wcsTaskList.addAll(this.genTask(locationFrom, locationTo, flowConfigHeaderVO, agvCallDTO, token));
 
                 }

+ 34 - 4
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -412,7 +412,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                     }
 
                     //叠包机
-                    if ("PM_L".equals(wcsTask.getTaskType().substring(0, 4))) {
+                    if ("PM_L".equals(wcsTask.getTaskType().substring(0, 4)) || "SM_H".equals(wcsTask.getTaskType().substring(0, 4)) ) {
                         plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_FINISH.getMetadata(), true);
                         Thread.sleep(3000L);
                         plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_FINISH.getMetadata(), false);
@@ -468,7 +468,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                         redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()), wcsTask.getLocationFrom());
                     }
 
-                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_1.name())) {
+                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_1.name()) || wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_HC_1.name())) {
                         plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_1.getMetadata(), true);
                         plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata(), true);
                         Thread.sleep(3000L);
@@ -478,7 +478,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                         SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_Leave_1.getMetadata() + "值:true", "1"));
                         SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata() + "值:true", "1"));
                     }
-                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_2.name())) {
+                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_2.name()) || wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_HC_2.name())) {
                         plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_2.getMetadata(), true);
                         plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata(), true);
                         Thread.sleep(3000L);
@@ -488,7 +488,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                         SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_Leave_2.getMetadata() + "值:true", "1"));
                         SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata() + "值:true", "1"));
                     }
-                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_3.name())) {
+                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_3.name()) || wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_HC_3.name())) {
                         plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_3.getMetadata(), true);
                         plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata(), true);
                         Thread.sleep(3000L);
@@ -541,6 +541,36 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                     if (!StringUtils.isEmpty(wcsTask.getExt8())) {
                         redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
                     }
+
+                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_1.name()) || wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_HC_1.name())) {
+                        plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata(), false);
+                        SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata() + "值:true", "1"));
+                    }
+                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_2.name()) || wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_HC_2.name())) {
+                        plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata(), false);
+                        SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata() + "值:true", "1"));
+                    }
+                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_3.name()) || wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_HC_3.name())) {
+                        plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_3.getMetadata(), false);
+                        SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_3.getMetadata() + "值:true", "1"));
+                    }
+                    //叠包机
+                    if ("PM_L".equals(wcsTask.getTaskType().substring(0, 4)) || "SM_H".equals(wcsTask.getTaskType().substring(0, 4)) ) {
+                        plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata(), false);
+                        SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata() + "值:false", "1"));
+                    }
+                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_1.name())) {
+                        plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_1.getMetadata(), false);
+                        SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_1.getMetadata() + "值:false", "1"));
+                    }
+                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_2.name())) {
+                        plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_2.getMetadata(), false);
+                        SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_2.getMetadata() + "值:false", "1"));
+                    }
+                    if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_3.name())) {
+                        plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_3.getMetadata(), false);
+                        SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_3.getMetadata() + "值:false", "1"));
+                    }
                     break;
                 case 8:
                     log.error("任务异常状态------------" + wcsTask.getTaskNo());

+ 1 - 1
warewms-ams/src/main/resources/mapper/ams/WcsTaskMapper.xml

@@ -355,6 +355,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="parentTask != null  and parentTask != ''"> and parent_task = #{parentTask}</if>
             <if test="agvNo != null  and agvNo != ''"> and agv_no like concat('%', #{agvNo}, '%')</if>
         </where>
-        and state in(1,3,4,5,6,8,9,10)
+        and state in(1,3,4,5,8,9,10)
     </select>
 </mapper>

+ 25 - 1
warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java

@@ -56,7 +56,31 @@ public class Constant {
         /**
          * 叠包机空托搬运
          */
-        M_EP(32L);
+        M_EP(32L),
+        /**
+         * 一号包装机下料缓存位
+         */
+        PM_HC_1(32L),
+        /**
+         * 二号包装机下料缓存位
+         */
+        PM_HC_2(33L),
+        /**
+         * 三号包装机下料缓存位
+         */
+        PM_HC_3(34L),
+        /**
+         * 一号缓存位上料
+         */
+        SM_HC_1(35L),
+        /**
+         * 二号缓存位上料
+         */
+        SM_HC_2(36L),
+        /**
+         * 三号缓存位上料
+         */
+        SM_HC_3(37L);
 
         private Long flowId;