From 5c0622d48c825ca4b75f63dda78d51ed75bc7a2f Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 12 四月 2024 11:04:19 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java |  254 ++++++++++----------------------------------------
 1 files changed, 53 insertions(+), 201 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 fc451d3..122398a 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
@@ -63,14 +63,14 @@
     public Boolean accept(Motion motion) {
         Integer deviceNo = Integer.parseInt(motion.getDevice());
         ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, deviceNo);
+        if (shuttleThread == null) {
+            return false;
+        }
         ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
         if (null == shuttleProtocol) {
             return false;
         }
-        if (!shuttleProtocol.getIdle()) {//璁惧涓嶇┖闂�
-            return false;
-        }
-        if (!shuttleProtocol.getPakMk()) {
+        if (!shuttleThread.isIdle()) {//璁惧涓嶇┖闂�
             return false;
         }
         if (motionService.count(new LambdaQueryWrapper<Motion>()
@@ -91,14 +91,6 @@
 
         LiftThread liftThread = null;
         LiftProtocol liftProtocol = null;
-
-        //鍒ゆ柇灏忚溅鐘舵��
-        if (shuttleProtocol.getIdle()
-                && shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.IDLE)
-                && shuttleProtocol.getTaskNo() != 0
-        ) {
-            return false;
-        }
 
         switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){
             case SHUTTLE_MOVE:
@@ -203,164 +195,24 @@
                 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;
-//                break;
-//            case SHUTTLE_MOVE_TO_CONVEYOR:
-//                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-//                shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO;
-//                break;
-//            case SHUTTLE_MOVE_FROM_LIFT_TO_CONVEYOR://绌挎杞﹀嚭鎻愬崌鏈哄幓杈撻�佺嚎
-//                // 鍒ゆ柇鎻愬崌鏈虹姸鎬�
-//                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;
-//            case SHUTTLE_TRANSPORT:
-//                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-//                shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-//
-//                shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-//                shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-//                break;
-//            case SHUTTLE_TRANSPORT_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;
-//                }
-//
-//                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.DFX.id, assignCommand, shuttleThread);
-//                shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-//                shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-////                shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-//                break;
-//            case SHUTTLE_TRANSPORT_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.DFX.id, assignCommand, shuttleThread);
-//                shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-////                shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-//                shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-//                break;
-//            case SHUTTLE_TRANSPORT_FROM_CONVEYOR:
-//                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-//                shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-//
-//                shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-//                shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-//                break;
-//            case SHUTTLE_TRANSPORT_TO_CONVEYOR:
-//                shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
-//                shuttleTaskModeType = ShuttleTaskModeType.PAK_IN;
-//
-//                shuttleCommands.add(0, shuttleThread.getPalletCommand((short) 1));
-//                shuttleCommands.add(shuttleCommands.size(), shuttleThread.getPalletCommand((short) 2));
-//                break;
-//            case SHUTTLE_CHARGE_ON:
-//                shuttleTaskModeType = ShuttleTaskModeType.CHARGE;
-//                shuttleCommands.add(shuttleThread.getChargeSwitchCommand((short) 1));
-//                assignCommand.setCharge(Boolean.TRUE);
-//                break;
+            case SHUTTLE_CHARGE_ON://鍏呯數寮�
+                shuttleTaskModeType = ShuttleTaskModeType.CHARGE;
+                shuttleCommands.add(shuttleThread.getChargeCommand(motion.getWrkNo(), true));
+                assignCommand.setCharge(Boolean.TRUE);
+                break;
+            case SHUTTLE_CHARGE_OFF://鍏呯數鍏�
+                shuttleTaskModeType = ShuttleTaskModeType.CHARGE;
+                shuttleCommands.add(shuttleThread.getChargeCommand(motion.getWrkNo(), false));
+                assignCommand.setCharge(Boolean.TRUE);
+                break;
+            case SHUTTLE_PALLET_LIFT://鎵樼洏椤跺崌
+                shuttleTaskModeType = ShuttleTaskModeType.PALLET_LIFT;
+                shuttleCommands.add(shuttleThread.getLiftCommand(motion.getWrkNo(), true));
+                break;
+            case SHUTTLE_PALLET_DOWN://鎵樼洏涓嬮檷
+                shuttleTaskModeType = ShuttleTaskModeType.PALLET_DOWN;
+                shuttleCommands.add(shuttleThread.getLiftCommand(motion.getWrkNo(), false));
+                break;
             default:
                 throw new CoolException(motion.getMotionCtgEl() + "娌℃湁鎸囧畾浠诲姟浣滀笟娴佺▼锛侊紒锛�");
         }
@@ -406,19 +258,19 @@
             return true;
         }
 
-        if (!shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.WAITING)
-            && !shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.CHARGING_WAITING)
-        ) {
-            return false;
-        }
+//        if (!shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.WAITING)
+//            && !shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.CHARGING_WAITING)
+//        ) {
+//            return false;
+//        }
 
         //鍒ゆ柇璁惧鏄惁绌洪棽
         if (!shuttleThread.isIdle()) {
             return false;
         }
 
-//        SiemensLiftThread liftThread = null;
-//        LiftProtocol liftProtocol = null;
+        LiftThread liftThread = null;
+        LiftProtocol liftProtocol = null;
 
         switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){
             case SHUTTLE_MOVE:
@@ -430,21 +282,21 @@
                     return false;
                 }
                 break;
-//            case SHUTTLE_MOVE_TO_LIFT:
-//            case SHUTTLE_MOVE_FROM_LIFT:
-//            case SHUTTLE_TRANSPORT_FROM_LIFT:
-//            case SHUTTLE_TRANSPORT_TO_LIFT:
-//            case SHUTTLE_MOVE_FROM_LIFT_TO_CONVEYOR:
-//                liftThread = (SiemensLiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
-//                if (liftThread == null) {
-//                    return false;
-//                }
-//                liftProtocol = liftThread.getLiftProtocol();
-//
-//                if (!shuttleProtocol.getCurrentLocNo().equals(motion.getTarget())) {
-//                    return false;
-//                }
-//
+            case SHUTTLE_MOVE_TO_LIFT:
+            case SHUTTLE_MOVE_FROM_LIFT:
+            case SHUTTLE_TRANSPORT_FROM_LIFT:
+            case SHUTTLE_TRANSPORT_TO_LIFT:
+            case SHUTTLE_MOVE_FROM_LIFT_TO_CONVEYOR:
+                liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
+                if (liftThread == null) {
+                    return false;
+                }
+                liftProtocol = liftThread.getStatus();
+
+                if (!shuttleProtocol.getCurrentLocNo().equals(motion.getTarget())) {
+                    return false;
+                }
+
 //                //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
 //                if (liftProtocol.getLiftLock()) {
 //                    //瑙i攣鎻愬崌鏈�
@@ -454,18 +306,18 @@
 //                    liftThread.assignWork(lockCommand);
 //                    return false;
 //                }
-//
-//                //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
-//                if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
-//                    return false;
-//                }
-//
-//                if (liftProtocol.getTaskNo().intValue() != 0) {
+
+                //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
+                if (liftProtocol.getTaskNo().intValue() != motion.getWrkNo()) {
+                    return false;
+                }
+
+//                if (liftProtocol.getTaskNo() != 0) {
 //                    //娓呯┖鎻愬崌鏈哄彿
 //                    liftThread.setTaskNo(0);
 //                }
-//
-//                break;
+
+                break;
             default:
                 break;
         }

--
Gitblit v1.9.1