From be056737989257b7627ebc3bc4b3b687648a9a27 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 10 九月 2025 15:14:43 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/utils/NavigateUtils.java |   42 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java
index d49b64b..eb76e13 100644
--- a/src/main/java/com/zy/common/utils/NavigateUtils.java
+++ b/src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -231,9 +231,47 @@
         return findTargetLocation(endPath);
     }
 
+    public String calcFirstLocation(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites, int firstPathNumber) {
+        //璁$畻璺緞
+        List<NavigateNode> navigateNodes = calc(startPoint, endPoint, mapTypes, shuttlePoints, whites);
+        if (navigateNodes == null) {
+            News.error("{} dash {} can't find navigate path!", startPoint, endPoint);
+            return null;
+        }
+
+        //鑾峰彇鍒嗘璺緞
+        List<List<NavigateNode>> partList = this.getSectionPath(navigateNodes);
+        List<NavigateNode> firstList = partList.get(0);
+
+        NavigateNode targetNode = null;
+        if(firstList.size() <= firstPathNumber){
+            targetNode = firstList.get(firstList.size() - 1);
+        }else {
+            targetNode = firstList.get(firstPathNumber);
+        }
+
+        String locNo = NavigatePositionConvert.nodeToLocNo(targetNode);
+        return locNo;
+    }
+
     public String findTargetLocation(List<List<NavigateNode>> partList) {
-        List<NavigateNode> nodes = partList.get(partList.size() - 1);
-        NavigateNode targetNode = nodes.get(0);
+        NavigateNode targetNode = null;
+        for (int i = partList.size(); i > 0; i--) {
+            List<NavigateNode> nodes = partList.get(i - 1);
+            for (NavigateNode node : nodes) {
+                if (node.getNodeValue() == MapNodeType.MAIN_PATH.id) {
+                    continue;
+
+                }
+                targetNode = node;
+                break;
+            }
+
+            if(targetNode != null){
+                break;
+            }
+        }
+
         String locNo = NavigatePositionConvert.nodeToLocNo(targetNode);
         return locNo;
     }

--
Gitblit v1.9.1