From 42cc083dd05f6c90137fc239482625492965a2e8 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 24 十月 2023 20:22:54 +0800
Subject: [PATCH] #路径规划修改

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   33 +++++++----
 src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java |   18 +++--
 src/main/java/com/zy/common/utils/NyShuttleOperaUtils.java  |    6 ++
 src/main/java/com/zy/core/thread/NyShuttleThread.java       |   70 +++++++++++-----------
 4 files changed, 73 insertions(+), 54 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index e70ce0f..cecad4c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3078,18 +3078,6 @@
                 return false;//娌℃湁璁剧疆鎻愬崌鏈虹偣浣嶅潗鏍�
             }
 
-            //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�***************
-            List<NavigateNode> targetNodes = NyLiftUtils.getLiftStaNodes(liftSta.getStaNo());
-            if (targetNodes == null) {
-                return false;//鏈幏鍙栧埌鑺傜偣
-            }
-            //灏濊瘯瑙i攣鐩爣绔欒矾寰�
-            boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿�
-            if (!result) {
-                return false;//璺緞瑙i攣澶辫触
-            }
-            //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�***************
-
             NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY());
             liftNode.setZ(liftSta.getLev());
 
@@ -3154,6 +3142,27 @@
                 return false;
             }
 
+            //璺ㄦゼ灞傜Щ鍔ㄤ换鍔�
+            if (Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+                //鑾峰彇鐩爣绔�
+                LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
+                if (liftSta == null) {
+                    return false;//鎵句笉鍒扮珯鐐�
+                }
+
+                //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�***************
+                List<NavigateNode> targetNodes = NyLiftUtils.getLiftStaNodes(liftSta.getStaNo());
+                if (targetNodes == null) {
+                    return false;//鏈幏鍙栧埌鑺傜偣
+                }
+                //灏濊瘯瑙i攣鐩爣绔欒矾寰�
+                boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿�
+                if (!result) {
+                    return false;//璺緞瑙i攣澶辫触
+                }
+                //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�***************
+            }
+
 //            //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐�
 //            BasDevp targetBasDevp = basDevpService.selectByLevAndLiftNo(Utils.getLev(wrkMast.getLocNo()), wrkMast.getLiftNo());
 //            if (targetBasDevp == null) {
diff --git a/src/main/java/com/zy/common/utils/NyShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/NyShuttleOperaUtils.java
index cf52c25..2c46cd8 100644
--- a/src/main/java/com/zy/common/utils/NyShuttleOperaUtils.java
+++ b/src/main/java/com/zy/common/utils/NyShuttleOperaUtils.java
@@ -1,5 +1,6 @@
 package com.zy.common.utils;
 
+import com.core.common.SpringUtils;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.model.NavigateNode;
 import com.zy.common.model.NyShuttleOperaResult;
@@ -86,6 +87,7 @@
      * 鑾峰彇璧风偣鍒扮洰鏍囩偣琛岃蛋鍛戒护
      */
     public static NyShuttleOperaResult getStartToTargetCommands(Integer shuttleNo, Integer wrkNo, String startPoint, String targetPoint, Integer mapType) {
+        NavigateMapUtils navigateMapUtils = SpringUtils.getBean(NavigateMapUtils.class);
         //璁$畻璧风偣鍒扮洰鏍囩偣琛岃蛋鑺傜偣
         List<NavigateNode> calc = NavigateUtils.calc(startPoint, targetPoint, mapType, Utils.getShuttlePoints(shuttleNo, Utils.getLev(startPoint)));
         if (calc == null) {
@@ -94,6 +96,7 @@
 
         //鍛戒护闆嗗悎
         ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>();
+        List<NavigateNode> allNode = new ArrayList<>();
 
         //鑾峰彇鍒嗘璺緞
         ArrayList<ArrayList<NavigateNode>> data = NavigateUtils.getSectionPath(calc);
@@ -107,8 +110,11 @@
             NyShuttleHttpCommand moveCommand = NyHttpUtils.getMoveCommand(shuttleNo, wrkNo, startPath, targetPath);
             moveCommand.setNodes(nodes);//灏嗚璧拌妭鐐规坊鍔犲埌姣忎竴姝ュ懡浠や腑
             commands.add(moveCommand);
+
+            allNode.addAll(nodes);
         }
 
+        navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(startPoint), allNode, true);//閿佸畾璺緞
         return result(commands, calc);
     }
 
diff --git a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java b/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
index 525078e..f17d9be 100644
--- a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
@@ -70,11 +70,15 @@
      */
     public boolean dispatchShuttle(Integer wrkNo, String locNo) {
         //妫�娴嬬洰鏍囧簱浣嶇粍鏄惁瀛樺湪灏忚溅锛屽瀛樺湪灏忚溅鍒欑洿鎺ユ寚瀹氳杞�
-        List<String> groupLoc = Utils.getGroupLoc(locNo);
-        Integer groupShuttleNo = Utils.checkGroupLocHasShuttle(groupLoc);
-        if (groupShuttleNo != null) {
-            //瀛樺湪灏忚溅锛岀洿鎺ヨ皟搴﹁杞�
-            return shuttleMoveGenerate(wrkNo, locNo, groupShuttleNo);
+        WrkMast wrkMast = wrkMastMapper.selectByWorkNo(wrkNo);
+        if (wrkMast != null) {
+            String targetLocNo = wrkMast.getIoType() < 100 ? wrkMast.getLocNo() : wrkMast.getSourceLocNo();
+            List<String> groupLoc = Utils.getGroupLoc(targetLocNo);
+            Integer groupShuttleNo = Utils.checkGroupLocHasShuttle(groupLoc);
+            if (groupShuttleNo != null) {
+                //瀛樺湪灏忚溅锛岀洿鎺ヨ皟搴﹁杞�
+                return shuttleMoveGenerate(wrkNo, locNo, groupShuttleNo);
+            }
         }
 
         ArrayList<NyShuttleThread> sameLev = new ArrayList<>();//鐩稿悓妤煎眰鐨勭┛姊溅
@@ -145,8 +149,8 @@
             WrkMast wrkMast1 = wrkMastMapper.selectByWorkNo(wrkNo);
 
             if (wrkMast1 != null) {
-                String locNO=wrkMast1.getIoType()<100?wrkMast1.getLocNo():wrkMast1.getSourceLocNo();
-                int lev = Utils.getLev(locNO);//鐩爣妤煎眰
+                String targetLoc = wrkMast1.getIoType() < 100 ? wrkMast1.getLocNo() : wrkMast1.getSourceLocNo();
+                int lev = Utils.getLev(targetLoc);//鐩爣妤煎眰
 
                 //妫�娴嬬洰鏍囨ゼ灞傝溅鏁伴噺鏄惁灏忎簬鍏佽鐨勬渶澶ф暟閲�
                 boolean checkDispatchMaxNum = checkDispatchMaxNum(lev);
diff --git a/src/main/java/com/zy/core/thread/NyShuttleThread.java b/src/main/java/com/zy/core/thread/NyShuttleThread.java
index a84ca61..083a995 100644
--- a/src/main/java/com/zy/core/thread/NyShuttleThread.java
+++ b/src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -473,41 +473,41 @@
             return false;
         }
 
-        if (command.getRequest().getBody().get("requestType").equals("move")) {
-            ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆鑺傜偣鐨勭櫧鍚嶅崟
-            if (wrkMast != null && ((wrkMast.getIoType() > 100 && wrkMast.getIoType() < 200) || wrkMast.getIoType() == 11)) {
-                //鍑哄簱浠诲姟锛屼笉妫�娴嬮鑺傜偣
-                int[] startArr = NavigatePositionConvert.positionToXY(wrkMast.getSourceLocNo());//寮�濮嬭妭鐐�
-                whiteList.add(startArr);
-            }
-
-            //瑙i攣杩囪矾寰勶紝鍙娴嬩笅涓�娈佃矾寰勬槸鍚﹀彲璧�(褰撳墠璺緞宸茬粡琚攣瀹氭棤闇�鍐嶆娴�)
-            if (isLock) {
-                //鍙娴嬩笅涓�娈佃矾寰勬槸鍚﹀彲璧�(褰撳墠璺緞宸茬粡琚攣瀹氭棤闇�鍐嶆娴�)
-                //妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋
-                if (!checkPath(nextNodes == null ? command.getNodes() : nextNodes, null, whiteList)) {
-                    return false;
-                }
-            }else {
-                //妫�娴嬪綋鍓嶈矾寰勫拰涓嬩竴娈佃矾寰�
-                //妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋
-                if (!checkPath(command.getNodes(), nextNodes, whiteList)) {
-                    return false;
-                }
-            }
-
-            //閿佸畾璺緞锛岄攣瀹氬綋鍓嶈矾寰勫拰涓嬩竴姝ヨ矾寰�
-            List<NavigateNode> nodes = command.getNodes();
-            if (nextNodes != null) {
-                nodes.addAll(nextNodes);
-            }
-            if (nodes != null) {
-                boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), nodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
-                if (!result) {
-                    return false;//璺緞閿佸畾澶辫触
-                }
-            }
-        }
+//        if (command.getRequest().getBody().get("requestType").equals("move")) {
+//            ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆鑺傜偣鐨勭櫧鍚嶅崟
+//            if (wrkMast != null && ((wrkMast.getIoType() > 100 && wrkMast.getIoType() < 200) || wrkMast.getIoType() == 11)) {
+//                //鍑哄簱浠诲姟锛屼笉妫�娴嬮鑺傜偣
+//                int[] startArr = NavigatePositionConvert.positionToXY(wrkMast.getSourceLocNo());//寮�濮嬭妭鐐�
+//                whiteList.add(startArr);
+//            }
+//
+//            //瑙i攣杩囪矾寰勶紝鍙娴嬩笅涓�娈佃矾寰勬槸鍚﹀彲璧�(褰撳墠璺緞宸茬粡琚攣瀹氭棤闇�鍐嶆娴�)
+//            if (isLock) {
+//                //鍙娴嬩笅涓�娈佃矾寰勬槸鍚﹀彲璧�(褰撳墠璺緞宸茬粡琚攣瀹氭棤闇�鍐嶆娴�)
+//                //妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋
+//                if (!checkPath(nextNodes == null ? command.getNodes() : nextNodes, null, whiteList)) {
+//                    return false;
+//                }
+//            }else {
+//                //妫�娴嬪綋鍓嶈矾寰勫拰涓嬩竴娈佃矾寰�
+//                //妫�娴嬭矾寰勬槸鍚﹀彲琛岃蛋
+//                if (!checkPath(command.getNodes(), nextNodes, whiteList)) {
+//                    return false;
+//                }
+//            }
+//
+//            //閿佸畾璺緞锛岄攣瀹氬綋鍓嶈矾寰勫拰涓嬩竴姝ヨ矾寰�
+//            List<NavigateNode> nodes = command.getNodes();
+//            if (nextNodes != null) {
+//                nodes.addAll(nextNodes);
+//            }
+//            if (nodes != null) {
+//                boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(shuttleProtocol.getCurrentLocNo()), nodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢�
+//                if (!result) {
+//                    return false;//璺緞閿佸畾澶辫触
+//                }
+//            }
+//        }
 
         //鍙墽琛屽懡浠�
         if (!write(command, assignCommand)) {

--
Gitblit v1.9.1