From e35abc495e50cfb3cfabed23a7d0d4c942c6dde9 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 25 七月 2023 10:09:22 +0800
Subject: [PATCH] 捡料

---
 src/main/java/com/zy/common/utils/NavigateUtils.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java
index a0aab42..950116e 100644
--- a/src/main/java/com/zy/common/utils/NavigateUtils.java
+++ b/src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -3,6 +3,7 @@
 import com.zy.asrs.utils.Utils;
 import com.zy.common.model.MapNode;
 import com.zy.common.model.NavigateNode;
+import com.zy.common.model.enums.NavigationMapType;
 import com.zy.core.enums.ShuttleTaskModeType;
 
 import java.util.*;
@@ -12,10 +13,13 @@
  */
 public class NavigateUtils {
 
-    public static List<NavigateNode> calc(String startPoint, String endPoint, Integer mapType) {
+    public static List<NavigateNode> calc(String startPoint, String endPoint, Integer mapType, List<int[]> shuttlePoints) {
         //閫氳繃寮�濮嬬紪鍙峰拰缁撴潫缂栧彿鑾峰彇瀵瑰簲鐨剎y杞村潗鏍�
         int[] startArr = NavigatePositionConvert.positionToXY(startPoint);//寮�濮嬭妭鐐�
         int[] endArr = NavigatePositionConvert.positionToXY(endPoint);//缁撴潫鑺傜偣
+
+        ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟
+        whiteList.add(startArr);//灏嗗紑濮嬭妭鐐硅缃负鐧藉悕鍗曪紝浠ラ槻琚繃婊�
 
         //鑾峰彇褰撳墠鑺傜偣璁$畻鐨勫眰楂橈紝骞惰祴鍊煎埌姣忎竴涓妭鐐逛腑
         int lev = Utils.getLev(startPoint);
@@ -26,7 +30,9 @@
         start.setFather(null);
 
         NavigateNode end = new NavigateNode(endArr[0], endArr[1]);
-        NavigateSolution solution = new NavigateSolution(mapType, lev);
+        NavigateSolution solution = new NavigateSolution(mapType, lev, whiteList, shuttlePoints);
+        //寮�濮嬭妭鐐癸紝涓嶇撼鍏ョ鐢ㄨ妭鐐瑰唴璁$畻
+
         NavigateNode res_node = solution.astarSearch(start, end);
         if (res_node == null) {
             System.out.println("鏈壘鍒拌矾寰�");
@@ -163,7 +169,7 @@
     //鑾峰彇浠巟鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈
     public static Integer getXToNextDistance(NavigateNode xNode) {
         NavigateMapData mapData = new NavigateMapData();
-        List<List<MapNode>> lists = mapData.getJsonData(1);
+        List<List<MapNode>> lists = mapData.getJsonData(NavigationMapType.NONE.id, null, null);
         if (lists != null) {
             MapNode mapNode = lists.get(xNode.getX()).get(xNode.getY());
             if (mapNode != null) {
@@ -184,6 +190,19 @@
     }
 
     /**
+     * 鏍规嵁鍘熷鑺傜偣缁撴灉锛岃绠楁�昏璧拌窛绂�
+     */
+    public static Integer getOriginPathAllDistance(List<NavigateNode> path) {
+        ArrayList<ArrayList<NavigateNode>> sectionPath = NavigateUtils.getSectionPath(path);
+        Integer allDistance = 0;
+        for (ArrayList<NavigateNode> navigateNodes : sectionPath) {
+            Integer distance = NavigateUtils.getCurrentPathAllDistance(navigateNodes);
+            allDistance += distance;
+        }
+        return allDistance;
+    }
+
+    /**
      * 鑾峰彇褰撳墠璺緞鎬昏璧拌窛绂�
      */
     public static Integer getCurrentPathAllDistance(List<NavigateNode> path) {
@@ -200,9 +219,34 @@
         return allDistance;
     }
 
+    /**
+     * 鑾峰彇涓棿鐐瑰埌鐩爣鐐硅璧拌窛绂�
+     */
+    public static Integer getMiddleToDistDistance(List<NavigateNode> path, NavigateNode middlePath) {
+        //鏈�鍚庝竴鏉¤妭鐐逛笉璁$畻杩涜璧拌窛绂�
+        NavigateNode lastPath = path.get(path.size() - 1);
+        //鎬昏窛绂�
+        int allDistance = 0;
+        boolean flag = false;
+        for (NavigateNode navigateNode : path) {
+            if (!flag && navigateNode.equals(middlePath)) {
+                flag = true;
+            }
+
+            if (navigateNode.equals(lastPath)) {
+                continue;//鏈�鍚庝竴鏉¤妭鐐逛笉璁$畻杩涜璧拌窛绂�
+            }
+
+            if (flag) {
+                allDistance += navigateNode.getMoveDistance();
+            }
+        }
+        return allDistance;
+    }
+
     public static void main(String[] args) {
         //璁$畻璺緞
-        List<NavigateNode> calc = calc("1000901", "1800201", ShuttleTaskModeType.PAK_OUT.id);
+        List<NavigateNode> calc = calc("1000901", "1800201", NavigationMapType.NONE.id, null);
         System.out.println(calc);
         System.out.println("------------------------");
 //        List<NavigateNode> calc = calc("0501401", "0201801", "out");

--
Gitblit v1.9.1