From 87c4efe93e6fe31a9c989b4aa5cc0c8f559b845d Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 31 三月 2023 16:50:47 +0800
Subject: [PATCH] 提升机代码,四向穿梭车线程优化

---
 src/main/java/com/zy/core/thread/ShuttleThread.java |   64 ++++++++++++++++++++-----------
 1 files changed, 41 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java
index db733ce..73613c9 100644
--- a/src/main/java/com/zy/core/thread/ShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/ShuttleThread.java
@@ -10,7 +10,6 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasShuttle;
 import com.zy.asrs.entity.BasShuttleOpt;
-import com.zy.asrs.mapper.BasShuttleMapper;
 import com.zy.asrs.service.BasShuttleOptService;
 import com.zy.asrs.service.BasShuttleService;
 import com.zy.common.model.NavigateNode;
@@ -168,8 +167,11 @@
                     shuttleProtocol.setPakMk(true);
                 }
 
-                //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟涓旀爣璁颁负true锛岄渶瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠�
-                if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getTaskNo() != 0 && shuttleProtocol.getPakMk()) {
+                //鍥涘悜绌挎杞︾┖闂层�佹湁浠诲姟銆佹爣璁颁负true銆佸瓨鍦ㄤ换鍔℃寚浠わ紝闇�瑕佹墽琛屼换鍔$殑涓嬩竴鏉℃寚浠�
+                if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE
+                        && shuttleProtocol.getTaskNo() != 0
+                        && shuttleProtocol.getPakMk()
+                        && shuttleProtocol.getAssignCommand() != null) {
                     //鎵ц涓嬩竴姝ユ寚浠�
                     executeWork(shuttleProtocol.getAssignCommand());
                 }
@@ -347,19 +349,23 @@
         //灏嗘map瀛樺叆redis涓�
         HashMap<String, Object> map = new HashMap<>();
 
-        //璁$畻璺緞
-        List<NavigateNode> calc = NavigateUtils.calc(assignCommand.getSourceLocNo(), assignCommand.getLocNo(), assignCommand.getTaskMode().intValue());
-        if (calc != null) {
-            //鑾峰彇鍒嗘璺緞
-            ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc);
-            //璺緞鏁版嵁
-            map.put("path", data);
-            //璺緞娆℃暟
-            map.put("pathSize", data.size());
-        }else {
-            if (assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_IN.id.shortValue() || assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_OUT.id.shortValue()) {
-                //灞炰簬鍏ュ簱鍑哄簱锛屽繀椤昏璁$畻璺緞锛屽垯鎶涘嚭寮傚父
-                throw new Exception("鏈兘鎵惧埌杩愯璺緞");
+        if (assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_IN.id.shortValue()
+                || assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_OUT.id.shortValue()) {
+            //鍏ュ簱鎴栧嚭搴撴ā寮忥紝璁$畻璺緞
+            //璁$畻璺緞
+            List<NavigateNode> calc = NavigateUtils.calc(assignCommand.getSourceLocNo(), assignCommand.getLocNo(), assignCommand.getTaskMode().intValue());
+            if (calc != null) {
+                //鑾峰彇鍒嗘璺緞
+                ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc);
+                //璺緞鏁版嵁
+                map.put("path", data);
+                //璺緞娆℃暟
+                map.put("pathSize", data.size());
+            }else {
+                if (assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_IN.id.shortValue() || assignCommand.getTaskMode() == ShuttleTaskModeType.PAK_OUT.id.shortValue()) {
+                    //灞炰簬鍏ュ簱鍑哄簱锛屽繀椤昏璁$畻璺緞锛屽垯鎶涘嚭寮傚父
+                    throw new Exception("鏈兘鎵惧埌杩愯璺緞");
+                }
             }
         }
 
@@ -373,6 +379,7 @@
         map.put("assignCommand", assignCommand);
         shuttleProtocol.setTaskNo(assignCommand.getTaskNo());
         shuttleProtocol.setAssignCommand(assignCommand);
+        shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING);
         //浠诲姟鏁版嵁淇濆瓨鍒皉edis
         redisUtil.set("wrk_no_" + assignCommand.getTaskNo(), JSON.toJSONString(map));
         //鎵ц涓嬪彂浠诲姟
@@ -385,7 +392,14 @@
         if (assignCommand == null) {
             return false;
         }
+
+        //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
+        shuttleProtocol.setPakMk(false);
+
         Object o = redisUtil.get("wrk_no_" + assignCommand.getTaskNo());
+        if (o == null) {
+            return false;
+        }
         HashMap map = JSON.parseObject(o.toString(), HashMap.class);
         //褰撳墠姝ュ簭
         int commandStep = Integer.parseInt(map.get("commandStep").toString());
@@ -453,6 +467,8 @@
                 shuttleProtocol.setTaskNo((short) 0);
                 //鏍囪澶嶄綅
                 shuttleProtocol.setPakMk(true);
+                //浠诲姟鎸囦护娓呴浂
+                shuttleProtocol.setAssignCommand(null);
                 break;
             default:
         }
@@ -464,9 +480,6 @@
             return false;
         } else {
             News.info("鍥涘悜绌挎杞﹀懡浠や笅鍙戞垚鍔燂紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
-
-            //灏嗘爣璁扮疆涓篺alse(闃叉閲嶅彂)
-            shuttleProtocol.setPakMk(false);
 
             //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚
             if (commandStep < size - 1) {
@@ -491,17 +504,22 @@
                             null,
                             null,
                             null,
-                            JSON.toJSONString(command)
+                            JSON.toJSONString(assignCommand)
                     );
                     shuttleOptService.insert(opt);
                 }
                 //鍒犻櫎redis
                 redisUtil.del("wrk_no_" + map.get("wrk_no").toString());
 
-                //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
-                shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
+                if (!assignCommand.getAuto()) {
+                    //鎵嬪姩妯″紡涓嶆姏鍑虹瓑寰呯姸鎬侊紝鐩存帴澶嶄綅
+                    News.info("鍥涘悜绌挎杞︽墜鍔ㄤ换鍔℃墽琛屽畬鎴愶紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
+                }else {
+                    //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
+                    shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING);
+                    News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屽畬鎴愮瓑寰呯‘璁や腑锛岀┛姊溅鍙�={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
+                }
 
-                News.info("鍥涘悜绌挎杞︿换鍔℃墽琛屽畬鎴愮瓑寰呯‘璁や腑锛岀┛姊溅鍙�={}锛屼换鍔℃暟鎹�={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command));
             }
 
         }

--
Gitblit v1.9.1