From 79603e53c78e535dba4bfbc69b8c3b5c184012c5 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期一, 08 四月 2024 09:16:05 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java                    |   68 ++++++++++-
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java                    |    4 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java                  |    4 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java         |   10 +
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java |  228 +++++++------------------------------
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/TaskStsType.java              |    9 +
 zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml                                |   18 ++
 7 files changed, 147 insertions(+), 194 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..e276f9a 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
@@ -203,164 +203,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() + "娌℃湁鎸囧畾浠诲姟浣滀笟娴佺▼锛侊紒锛�");
         }
@@ -417,8 +277,8 @@
             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 +290,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 +314,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;
         }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
index 2f74a3c..5c2c38c 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/mapper/TaskMapper.java
@@ -18,6 +18,10 @@
 
     List<Task> selectByExecuteSts();
 
+    List<Task> selectManualByAnalyzeSts();
+
+    List<Task> selectManualByExecuteSts();
+
     List<Task> selectWaitAnalyzeInBoundTask();
 
     List<Task> selectPakOut();
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/TaskStsType.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/TaskStsType.java
index 891970b..6b8b3e5 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/TaskStsType.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/TaskStsType.java
@@ -55,6 +55,15 @@
         throw new CoolException("TaskStsType Error!!!");
     }
 
+    public static TaskStsType queryById(Long id) {
+        TaskStsService taskStsService = SpringUtils.getBean(TaskStsService.class);
+        TaskSts taskSts = taskStsService.getById(id);
+        if (taskSts == null) {
+            throw new CoolException("TaskStsType Error!!!");
+        }
+        return query(Long.valueOf(taskSts.getUuid()));
+    }
+
     public Long getId() {
         TaskStsService taskStsService = SpringUtils.getBean(TaskStsService.class);
         TaskSts taskSts = taskStsService.getOne(new LambdaQueryWrapper<TaskSts>()
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
index ef8f451..a79c50e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/TaskService.java
@@ -16,6 +16,10 @@
 
     List<Task> selectByExecuteSts();
 
+    List<Task> selectManualByAnalyzeSts();
+
+    List<Task> selectManualByExecuteSts();
+
     List<Task> selectWaitAnalyzeInBoundTask();
 
     List<Task> selectPakOut();
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
index 3964219..0dd46fb 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/TaskServiceImpl.java
@@ -66,6 +66,16 @@
     }
 
     @Override
+    public List<Task> selectManualByAnalyzeSts() {
+        return this.baseMapper.selectManualByAnalyzeSts();
+    }
+
+    @Override
+    public List<Task> selectManualByExecuteSts() {
+        return this.baseMapper.selectManualByExecuteSts();
+    }
+
+    @Override
     public List<Task> selectWaitAnalyzeInBoundTask() {
         return this.baseMapper.selectWaitAnalyzeInBoundTask();
     }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java
index 9dbe686..7ef0cb4 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java
@@ -61,13 +61,13 @@
                     continue;
                 }
 
-                // 鏇存柊wrkMast
-                switch (TaskStsType.query(task.getTaskSts())) {
+                // 鏇存柊Task
+                switch (TaskStsType.queryById(task.getTaskSts())) {
                     case ANALYZE_INBOUND:
-                        task.setTaskSts(TaskStsType.EXECUTE_INBOUND.sts);
+                        task.setTaskSts(TaskStsType.EXECUTE_INBOUND.getId());
                         break;
                     case ANALYZE_OUTBOUND:
-                        task.setTaskSts(TaskStsType.EXECUTE_OUTBOUND.sts);
+                        task.setTaskSts(TaskStsType.EXECUTE_OUTBOUND.getId());
                         break;
                 }
                 task.setUpdateTime(now);
@@ -90,13 +90,13 @@
                         continue;
                     }
 
-                    // 鏇存柊wrkMast
-                    switch (TaskStsType.query(task.getTaskSts())) {
+                    // 鏇存柊Task
+                    switch (TaskStsType.queryById(task.getTaskSts())) {
                         case EXECUTE_INBOUND:
-                            task.setTaskSts(TaskStsType.COMPLETE_INBOUND.sts);
+                            task.setTaskSts(TaskStsType.COMPLETE_INBOUND.getId());
                             break;
                         case EXECUTE_OUTBOUND:
-                            task.setTaskSts(TaskStsType.COMPLETE_OUTBOUND.sts);
+                            task.setTaskSts(TaskStsType.COMPLETE_OUTBOUND.getId());
                             break;
                     }
                     task.setUpdateTime(now);
@@ -173,7 +173,59 @@
 
 //    @Scheduled(cron = "0/1 * * * * ? ")
     public synchronized void executeManualTask() {
+        Date now = new Date();
+        // ANALYZE_MANUAL
+        for (Task task : taskService.selectByAnalyzeSts()) {
+            Motion executingMotion = motionService.selectOfTop1(task.getUuid(), MotionStsType.EXECUTING.val(), task.getHostId());
+            if (executingMotion != null) {//瀛樺湪姝e湪鎵ц鐨刴otion
+                continue;
+            }
 
+            Motion motion = motionService.selectOfTop1(task.getUuid(), MotionStsType.INIT.val(), task.getHostId());
+            if (null != motion) {
+                boolean result = this.executeMotion(motion);
+                if (!result) {
+                    continue;
+                }
+                // 鏇存柊Task
+                switch (TaskStsType.queryById(task.getTaskSts())) {
+                    case ANALYZE_MANUAL:
+                        task.setTaskSts(TaskStsType.EXECUTE_MANUAL.getId());
+                        break;
+                }
+                task.setUpdateTime(now);
+                if (!taskService.updateById(task)) {
+                    log.error("{}鍏朵粬宸ヤ綔妗f洿鏂扮姸鎬佸け璐ワ紒", task.getTaskNo());
+                }
+            }
+        }
+        // EXECUTE_MANUAL
+        for (Task task : taskService.selectManualByExecuteSts()) {
+            if (!motionService.hasRunningMotion(task.getUuid(), task.getHostId())) {
+                Motion motion = motionService.selectOfTop1(task.getUuid(), MotionStsType.WAITING.val(), task.getHostId());
+                if (null != motion) {
+                    boolean result = this.executeMotion(motion);
+                    if (!result) {
+                        continue;
+                    }
+                } else {
+                    if (motionService.selectOfTop1(task.getUuid(), MotionStsType.EXECUTING.val(), task.getHostId()) != null) {
+                        continue;
+                    }
+
+                    // 鏇存柊Task
+                    switch (TaskStsType.queryById(task.getTaskSts())) {
+                        case EXECUTE_MANUAL:
+                            task.setTaskSts(TaskStsType.COMPLETE_MANUAL.getId());
+                            break;
+                    }
+                    task.setUpdateTime(now);
+                    if (!taskService.updateById(task)) {
+                        log.error("{}浠栧伐浣滄。鏇存柊鐘舵�佸け璐ワ紒", task.getTaskNo());
+                    }
+                }
+            }
+        }
     }
 
     @Scheduled(cron = "0/1 * * * * ? ")
diff --git a/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml b/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
index 7467945..7654c7e 100644
--- a/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
+++ b/zy-asrs-wcs/src/main/resources/mapper/core/TaskMapper.xml
@@ -13,14 +13,28 @@
     <select id="selectByAnalyzeSts" resultType="com.zy.asrs.wcs.core.entity.Task">
         select * from wcs_task
         where 1=1
-        and task_sts in (2, 102, 202, 302)
+        and task_sts in (2, 102)
         order by priority desc,start_time,task_no asc
     </select>
 
     <select id="selectByExecuteSts" resultType="com.zy.asrs.wcs.core.entity.Task">
         select * from wcs_task
         where 1=1
-        and task_sts in (3, 103, 203, 303)
+        and task_sts in (3, 103)
+        order by priority desc,start_time,task_no asc
+    </select>
+
+    <select id="selectManualByAnalyzeSts" resultType="com.zy.asrs.wcs.core.entity.Task">
+        select * from wcs_task
+        where 1=1
+          and task_sts in (402)
+        order by priority desc,start_time,task_no asc
+    </select>
+
+    <select id="selectManualByExecuteSts" resultType="com.zy.asrs.wcs.core.entity.Task">
+        select * from wcs_task
+        where 1=1
+          and task_sts in (403)
         order by priority desc,start_time,task_no asc
     </select>
 

--
Gitblit v1.9.1