From 7087c609488ee87e24c25ab61a7ada46352af116 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 29 三月 2024 16:45:29 +0800
Subject: [PATCH] Merge branch 'Four-Way-Rack' of http://47.97.1.152:5880/r/zy-asrs-master into Four-Way-Rack

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java |  172 ++++++++++++++++++++++++++++++---------------------------
 1 files changed, 90 insertions(+), 82 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
index 13407ef..fc451d3 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zy.asrs.framework.common.Cools;
 import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wcs.core.action.LiftAction;
 import com.zy.asrs.wcs.core.action.ShuttleAction;
 import com.zy.asrs.wcs.core.entity.Loc;
 import com.zy.asrs.wcs.core.model.NavigateNode;
@@ -18,8 +19,10 @@
 import com.zy.asrs.wcs.core.entity.Motion;
 import com.zy.asrs.wcs.rcs.model.enums.ShuttleProtocolStatusType;
 import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
+import com.zy.asrs.wcs.rcs.model.protocol.LiftProtocol;
 import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
 import com.zy.asrs.wcs.core.service.MotionService;
+import com.zy.asrs.wcs.rcs.thread.LiftThread;
 import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -53,6 +56,8 @@
     private NavigateMapUtils navigateMapUtils;
     @Autowired
     private ShuttleAction shuttleAction;
+    @Autowired
+    private LiftAction liftAction;
 
     // 璁$畻
     public Boolean accept(Motion motion) {
@@ -84,8 +89,8 @@
         List<ShuttleCommand> shuttleCommands = new ArrayList<>();
         ShuttleTaskModeType shuttleTaskModeType = null;
 
-//        SiemensLiftThread liftThread = null;
-//        LiftProtocol liftProtocol = null;
+        LiftThread liftThread = null;
+        LiftProtocol liftProtocol = null;
 
         //鍒ゆ柇灏忚溅鐘舵��
         if (shuttleProtocol.getIdle()
@@ -106,38 +111,80 @@
                 shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
                 shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
                 break;
-//            case SHUTTLE_MOVE_LIFT_PALLET://绌挎杞﹂《鍗囧苟绉诲姩
-//                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-//                shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-//                shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-//                break;
-//            case SHUTTLE_MOVE_DOWN_PALLET://绌挎杞︾Щ鍔ㄥ苟鎵樼洏涓嬮檷
-//                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-//                shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-//                shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-//                break;
-//            case SHUTTLE_MOVE_FROM_LIFT://鍑烘彁鍗囨満
-//                // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
-//                liftThread = (SiemensLiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
-//                if (liftThread == null) {
-//                    return false;
-//                }
-//                liftProtocol = liftThread.getLiftProtocol();
-//                // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
-//                if (!liftProtocol.getMode()
-//                        || liftProtocol.getRunning()
-//                        || !liftProtocol.getReady()
-//                        || liftProtocol.getForwardRotationFeedback()
-//                        || liftProtocol.getReverseFeedback()
-//                        || liftProtocol.getNotReady().intValue() != 0
-//                ) {
-//                    return false;
-//                }
+            case SHUTTLE_MOVE_LIFT_PALLET://绌挎杞﹂《鍗囧苟绉诲姩
+                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
+                shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
+                shuttleCommands.add(0, shuttleThread.getLiftCommand(motion.getWrkNo(), true));
+                break;
+            case SHUTTLE_MOVE_DOWN_PALLET://绌挎杞︾Щ鍔ㄥ苟鎵樼洏涓嬮檷
+                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
+                shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
+                shuttleCommands.add(shuttleCommands.size(), shuttleThread.getLiftCommand(motion.getWrkNo(), false));
+                break;
+            case SHUTTLE_MOVE_FROM_LIFT://鍑烘彁鍗囨満
+                // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
+                liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
+                if (liftThread == null) {
+                    return false;
+                }
+
+                liftProtocol = liftThread.getStatus();
+                if (liftProtocol == null) {
+                    return false;
+                }
+
+                // 鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+                if (!liftThread.isIdle()) {
+                    return false;
+                }
+
+                if (liftProtocol.getLev() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
+                    return false;
+                }
+
+//                //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
+//                if (!liftProtocol.getLock()) {
+//                    //閿佸畾鎻愬崌鏈�
+//                    LiftCommand lockCommand = liftThread.getLockCommand(motion.getWrkNo(), true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
 //
-//                if (liftProtocol.getLev().intValue() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
-//                    return false;
-//                }
+//                    LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
+//                    liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
+//                    liftAssignCommand.setTaskNo(motion.getWrkNo());
+//                    ArrayList<LiftCommand> list = new ArrayList<>();
+//                    list.add(lockCommand);
+//                    liftAssignCommand.setCommands(list);
 //
+//                    liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
+//                    return false;//绛夊緟涓嬩竴娆¤疆璇�
+//                }
+
+                //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
+                if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
+                    return false;
+                }
+
+                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+                shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
+                break;
+            case SHUTTLE_MOVE_TO_LIFT://杩涙彁鍗囨満
+                // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
+                liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
+                if (liftThread == null) {
+                    return false;
+                }
+                liftProtocol = liftThread.getStatus();
+                if (liftProtocol == null) {
+                    return false;
+                }
+                // 鍒ゆ柇鎻愬崌鏈烘槸鍚︾┖闂�
+                if (!liftThread.isIdle()) {
+                    return false;
+                }
+
+                if (liftProtocol.getLev() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
+                    return false;
+                }
+
 //                //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
 //                if (!liftProtocol.getLiftLock()) {
 //                    //閿佸畾鎻愬崌鏈�
@@ -147,55 +194,15 @@
 //                    liftThread.assignWork(lockCommand);
 //                    return false;//绛夊緟涓嬩竴娆¤疆璇�
 //                }
-//
-//                //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
-//                if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
-//                    return false;
-//                }
-//
-//                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-//                shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
-//                break;
-//            case SHUTTLE_MOVE_TO_LIFT://杩涙彁鍗囨満
-//                // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
-//                liftThread = (SiemensLiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
-//                if (liftThread == null) {
-//                    return false;
-//                }
-//                liftProtocol = liftThread.getLiftProtocol();
-//                // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佺┖闂层�佸噯澶囧氨缁�侀摼鏉℃病鏈夎浆鍔ㄣ�佹病鏈夋湭灏辩华鎶ラ敊
-//                if (!liftProtocol.getMode()
-//                        || liftProtocol.getRunning()
-//                        || !liftProtocol.getReady()
-//                        || liftProtocol.getForwardRotationFeedback()
-//                        || liftProtocol.getReverseFeedback()
-//                        || liftProtocol.getNotReady().intValue() != 0
-//                ) {
-//                    return false;
-//                }
-//
-//                if (liftProtocol.getLev().intValue() != Utils.getLev(motion.getTarget())) {//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁揪鍒扮洰鏍囧眰
-//                    return false;
-//                }
-//
-//                //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
-//                if (!liftProtocol.getLiftLock()) {
-//                    //閿佸畾鎻愬崌鏈�
-//                    LiftCommand lockCommand = liftThread.getLockCommand(true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
-//                    lockCommand.setLiftNo(liftProtocol.getLiftNo());
-//                    lockCommand.setTaskNo(motion.getWrkNo().shortValue());//鑾峰彇浠诲姟鍙�
-//                    liftThread.assignWork(lockCommand);
-//                    return false;//绛夊緟涓嬩竴娆¤疆璇�
-//                }
-//
-//                //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
-//                if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
-//                    return false;
-//                }
-//
-//                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-//                shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
-//                break;
+
+                //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
+                if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
+                    return false;
+                }
+
+                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
+                shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
+                break;
 //            case SHUTTLE_MOVE_FROM_CONVEYOR:
 //                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
 //                shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
@@ -405,7 +412,8 @@
             return false;
         }
 
-        if (!shuttleProtocol.getIdle()) {
+        //鍒ゆ柇璁惧鏄惁绌洪棽
+        if (!shuttleThread.isIdle()) {
             return false;
         }
 

--
Gitblit v1.9.1