From 0f5a5a759221bde50ace126eae797326837f5f72 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期三, 16 十月 2024 16:15:12 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java |   48 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 32 insertions(+), 16 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
index 44bcacd..61cd617 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/action/ShuttleAction.java
@@ -36,6 +36,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
 
 @Component
 public class ShuttleAction {
@@ -132,13 +133,36 @@
         ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand();
         int commandStep = redisCommand.getCommandStep();
 
+        Integer mode = -1;
+        if(commandStep < commands.size()) {
+            //鍙栧嚭鍛戒护
+            ShuttleCommand currentCommand = commands.get(commandStep);
+            mode = currentCommand.getMode();
+        }
+
+        //鍒ゆ柇璁惧鏄惁绌洪棽
+        Integer finalMode = mode;
+        if (!shuttleThread.isDeviceIdle(new ExecuteSupport() {
+            @Override
+            public Boolean judgement() {
+                if (ShuttleCommandModeType.CHARGE_CLOSE.id.equals(finalMode)) {//鍏抽棴鍏呯數motion
+                    return false;//涓嶉渶瑕佸垽鏂姸鎬�
+                }
+                return true;//闇�瑕佸垽鏂姸鎬�
+            }
+        })) {
+            return false;
+        }
+
         // 瀹岀粨涓婁竴鏉″懡浠�
+        boolean updateCommand = false;
         if (commandStep != 0) {
             ShuttleCommand command = commands.get(commandStep - 1);
             if (command.getMode() == ShuttleCommandModeType.MOVE.id) {
                 // 姝e父绉诲姩
                 if (command.getTargetLocNo().equals(shuttleProtocol.getCurrentLocNo())) {
                     command.setComplete(true);
+                    updateCommand = true;
                     //瑙i攣閿佸畾璺緞锛屼笂涓�鏉¤矾寰�
                     List<NavigateNode> nodes = null;
                     try {
@@ -166,6 +190,7 @@
                 //鍒ゆ柇鏄惁椤跺崌鍒颁綅
                 if (shuttleProtocol.getHasLift()) {
                     command.setComplete(true);
+                    updateCommand = true;
 //                    //鍒ゆ柇鏄惁鏈夌墿
 //                    if (shuttleProtocol.getHasPallet()) {
 //                        command.setComplete(true);
@@ -176,19 +201,24 @@
                 // 鍒ゆ柇鏄惁涓嬮檷鍒颁綅
                 if (!shuttleProtocol.getHasLift()) {
                     command.setComplete(true);
+                    updateCommand = true;
                 }
             } else if (command.getMode() == ShuttleCommandModeType.CHARGE_OPEN.id) {
                 // 鍏呯數寮�
                 //鍒ゆ柇灏忚溅鍏呯數鐘舵��
                 if (shuttleProtocol.getHasCharge()) {
                     command.setComplete(true);
+                    updateCommand = true;
                 }
             }else {
                 command.setComplete(true);//鍏朵粬鍛戒护榛樿璁や负瀹屾垚
+                updateCommand = true;
             }
 
-            // 鏇存柊redis鏁版嵁
-            redisUtil.set(DeviceRedisConstant.SHUTTLE_WORK_FLAG + redisCommand.getTaskNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect));
+            if(updateCommand) {
+                // 鏇存柊redis鏁版嵁
+                redisUtil.set(DeviceRedisConstant.SHUTTLE_WORK_FLAG + redisCommand.getTaskNo(), JSON.toJSONString(redisCommand, SerializerFeature.DisableCircularReferenceDetect));
+            }
 
             if (!command.getComplete()) {
                 return false;
@@ -228,20 +258,6 @@
 
         //鍙栧嚭鍛戒护
         ShuttleCommand command = commands.get(commandStep);
-
-        Integer mode = command.getMode();
-        //鍒ゆ柇璁惧鏄惁绌洪棽
-        if (!shuttleThread.isDeviceIdle(new ExecuteSupport() {
-            @Override
-            public Boolean judgement() {
-                if (ShuttleCommandModeType.CHARGE_CLOSE.id.equals(mode)) {//鍏抽棴鍏呯數motion
-                    return false;//涓嶉渶瑕佸垽鏂姸鎬�
-                }
-                return true;//闇�瑕佸垽鏂姸鎬�
-            }
-        })) {
-            return false;
-        }
 
         // 涓嬪彂鍛戒护
         if (!write(command, device)) {

--
Gitblit v1.9.1