From c13fe87d70e81d7dcb604f8f1227de8f313cbefc Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期三, 10 七月 2024 09:26:51 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/MotionTimer.java |  132 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 128 insertions(+), 4 deletions(-)

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 10f3f7d..782d0e6 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
@@ -41,14 +41,16 @@
     @Autowired
     private ShuttleCommandService shuttleCommandService;
 
-//    @Scheduled(cron = "0/1 * * * * ? ")
+    @Scheduled(cron = "0/1 * * * * ? ")
     public synchronized void executeTask() {
         Date now = new Date();
         // ANALYZE_INBOUND
         for (Task task : taskService.selectByAnalyzeSts()) {
             Motion executingMotion = motionService.selectOfTop1(task.getUuid(), MotionStsType.EXECUTING.val(), task.getHostId());
             if (executingMotion != null) {//瀛樺湪姝e湪鎵ц鐨刴otion
-                continue;
+                if (executingMotion.getSync() == 1) {//褰撳墠鎵ц涓殑鍔ㄤ綔鏄悓姝ュ姩浣滐紝绛夊緟鎵ц瀹屾垚鍚庡啀鎵ц涓嬩竴涓姩浣�
+                    continue;
+                }
             }
 
             Motion motion = motionService.selectOfTop1(task.getUuid(), MotionStsType.INIT.val(), task.getHostId());
@@ -112,7 +114,9 @@
         for (Task taskCharge : taskService.selectChargeByAnalyzeSts()) {
             Motion executingMotion = motionService.selectOfTop1(taskCharge.getUuid(), MotionStsType.EXECUTING.val(), taskCharge.getHostId());
             if (executingMotion != null) {//瀛樺湪姝e湪鎵ц鐨刴otion
-                continue;
+                if (executingMotion.getSync() == 1) {//褰撳墠鎵ц涓殑鍔ㄤ綔鏄悓姝ュ姩浣滐紝绛夊緟鎵ц瀹屾垚鍚庡啀鎵ц涓嬩竴涓姩浣�
+                    continue;
+                }
             }
 
             Motion motion = motionService.selectOfTop1(taskCharge.getUuid(), MotionStsType.INIT.val(), taskCharge.getHostId());
@@ -169,13 +173,74 @@
     }
 
     @Scheduled(cron = "0/1 * * * * ? ")
+    public synchronized void executeLadenMoveTask() {
+        Date now = new Date();
+        // ANALYZE_CHARGE
+        for (Task taskCharge : taskService.selectLadenMoveByAnalyzeSts()) {
+            Motion executingMotion = motionService.selectOfTop1(taskCharge.getUuid(), MotionStsType.EXECUTING.val(), taskCharge.getHostId());
+            if (executingMotion != null) {//瀛樺湪姝e湪鎵ц鐨刴otion
+                if (executingMotion.getSync() == 1) {//褰撳墠鎵ц涓殑鍔ㄤ綔鏄悓姝ュ姩浣滐紝绛夊緟鎵ц瀹屾垚鍚庡啀鎵ц涓嬩竴涓姩浣�
+                    continue;
+                }
+            }
+
+            Motion motion = motionService.selectOfTop1(taskCharge.getUuid(), MotionStsType.INIT.val(), taskCharge.getHostId());
+            if (null != motion) {
+                boolean result = this.executeMotion(motion);
+                if (!result) {
+                    continue;
+                }
+                // 鏇存柊Task
+                switch (TaskStsType.query(taskCharge.getTaskSts())) {
+                    case ANALYZE_LADEN_MOVE:
+                        taskCharge.setTaskSts(TaskStsType.EXECUTE_LADEN_MOVE.sts);
+                        break;
+                }
+                taskCharge.setUpdateTime(now);
+                if (!taskService.updateById(taskCharge)) {
+                    log.error("{}鍏朵粬宸ヤ綔妗f洿鏂扮姸鎬佸け璐ワ紒", taskCharge.getTaskNo());
+                }
+            }
+        }
+        // EXECUTE_CHARGE
+        for (Task taskCharge : taskService.selectLadenMoveByExecuteSts()) {
+            if (!motionService.hasRunningMotion(taskCharge.getUuid(), taskCharge.getHostId())) {
+                Motion motion = motionService.selectOfTop1(taskCharge.getUuid(), MotionStsType.WAITING.val(), taskCharge.getHostId());
+                if (null != motion) {
+                    boolean result = this.executeMotion(motion);
+                    if (!result) {
+                        continue;
+                    }
+                } else {
+                    if (motionService.selectOfTop1(taskCharge.getUuid(), MotionStsType.EXECUTING.val(), taskCharge.getHostId()) != null) {
+                        continue;
+                    }
+
+                    // 鏇存柊Task
+                    switch (TaskStsType.query(taskCharge.getTaskSts())) {
+                        case EXECUTE_LADEN_MOVE:
+                            taskCharge.setTaskSts(TaskStsType.COMPLETE_LADEN_MOVE.sts);
+                            break;
+                    }
+                    taskCharge.setUpdateTime(now);
+                    if (!taskService.updateById(taskCharge)) {
+                        log.error("{}浠栧伐浣滄。鏇存柊鐘舵�佸け璐ワ紒", taskCharge.getTaskNo());
+                    }
+                }
+            }
+        }
+    }
+
+    @Scheduled(cron = "0/1 * * * * ? ")
     public synchronized void executeManualTask() {
         Date now = new Date();
         // ANALYZE_MANUAL
         for (Task task : taskService.selectManualByAnalyzeSts()) {
             Motion executingMotion = motionService.selectOfTop1(task.getUuid(), MotionStsType.EXECUTING.val(), task.getHostId());
             if (executingMotion != null) {//瀛樺湪姝e湪鎵ц鐨刴otion
-                continue;
+                if (executingMotion.getSync() == 1) {//褰撳墠鎵ц涓殑鍔ㄤ綔鏄悓姝ュ姩浣滐紝绛夊緟鎵ц瀹屾垚鍚庡啀鎵ц涓嬩竴涓姩浣�
+                    continue;
+                }
             }
 
             Motion motion = motionService.selectOfTop1(task.getUuid(), MotionStsType.INIT.val(), task.getHostId());
@@ -226,6 +291,65 @@
     }
 
     @Scheduled(cron = "0/1 * * * * ? ")
+    public synchronized void executeMoveTask() {
+        Date now = new Date();
+        // ANALYZE_MOVE
+        for (Task task : taskService.selectMoveByAnalyzeSts()) {
+            Motion executingMotion = motionService.selectOfTop1(task.getUuid(), MotionStsType.EXECUTING.val(), task.getHostId());
+            if (executingMotion != null) {//瀛樺湪姝e湪鎵ц鐨刴otion
+                if (executingMotion.getSync() == 1) {//褰撳墠鎵ц涓殑鍔ㄤ綔鏄悓姝ュ姩浣滐紝绛夊緟鎵ц瀹屾垚鍚庡啀鎵ц涓嬩竴涓姩浣�
+                    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.query(task.getTaskSts())) {
+                    case ANALYZE_MOVE:
+                        task.setTaskSts(TaskStsType.EXECUTE_MOVE.sts);
+                        break;
+                }
+                task.setUpdateTime(now);
+                if (!taskService.updateById(task)) {
+                    log.error("{}鍏朵粬宸ヤ綔妗f洿鏂扮姸鎬佸け璐ワ紒", task.getTaskNo());
+                }
+            }
+        }
+        // EXECUTE_MOVE
+        for (Task task : taskService.selectMoveByExecuteSts()) {
+            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.query(task.getTaskSts())) {
+                        case EXECUTE_MOVE:
+                            task.setTaskSts(TaskStsType.COMPLETE_MOVE.sts);
+                            break;
+                    }
+                    task.setUpdateTime(now);
+                    if (!taskService.updateById(task)) {
+                        log.error("{}浠栧伐浣滄。鏇存柊鐘舵�佸け璐ワ紒", task.getTaskNo());
+                    }
+                }
+            }
+        }
+    }
+
+    @Scheduled(cron = "0/1 * * * * ? ")
     public void scanMotionByExecuting() {
         List<Motion> motionList = motionService.selectBySts(MotionStsType.EXECUTING.val());
         for (Motion motion : motionList) {

--
Gitblit v1.9.1