From 39a7c54ceffb921258ac0148f58ccea60da0c87e Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 06 四月 2023 14:03:42 +0800
Subject: [PATCH] 充电逻辑

---
 src/main/java/com/zy/common/utils/NavigateUtils.java |   41 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 39 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 7a592cb..4be9c78 100644
--- a/src/main/java/com/zy/common/utils/NavigateUtils.java
+++ b/src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -1,6 +1,8 @@
 package com.zy.common.utils;
 
+import com.alibaba.fastjson.JSONObject;
 import com.zy.common.model.NavigateNode;
+import com.zy.core.enums.ShuttleTaskModeType;
 
 import java.util.*;
 
@@ -9,7 +11,7 @@
  */
 public class NavigateUtils {
 
-    public static List<NavigateNode> calc(String startPoint, String endPoint, String mapType) {
+    public static List<NavigateNode> calc(String startPoint, String endPoint, Integer mapType) {
         //閫氳繃寮�濮嬬紪鍙峰拰缁撴潫缂栧彿鑾峰彇瀵瑰簲鐨剎y杞村潗鏍�
         int[] startArr = NavigatePositionConvert.positionToXY(startPoint);//寮�濮嬭妭鐐�
         int[] endArr = NavigatePositionConvert.positionToXY(endPoint);//缁撴潫鑺傜偣
@@ -140,6 +142,8 @@
                 //鐩磋绾胯矾
                 mapNode.setDirection(direction);//璁剧疆琛岃蛋鏂瑰悜
             }
+            Integer distance = getXToNextDistance(mapNode);//鑾峰彇褰撳墠鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈
+            mapNode.setMoveDistance(distance);
         }
 
         //灏嗘渶鍚庝竴娈垫暟鎹坊鍔犺繘鍏�
@@ -148,15 +152,48 @@
         return list;
     }
 
+    //鑾峰彇浠巟鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈
+    public static Integer getXToNextDistance(NavigateNode xNode) {
+        NavigateMapData mapData = new NavigateMapData();
+        ArrayList<ArrayList<JSONObject>> lists = mapData.getJsonData(1);
+        if (lists != null) {
+            JSONObject jsonObject = lists.get(xNode.getX()).get(xNode.getY());
+            if (jsonObject != null) {
+                return Integer.parseInt(jsonObject.getOrDefault(xNode.getDirection(), 0).toString());
+            }
+            return 0;
+        }
+        return 0;
+    }
+
+    /**
+     * 鑾峰彇褰撳墠璺緞鎬昏璧拌窛绂�
+     */
+    public static Integer getCurrentPathAllDistance(ArrayList<NavigateNode> path) {
+        if (path.size() == 1) {
+            //璺緞鍙湁涓�鏉℃暟鎹紝鍒欑洿鎺ヨ繑鍥炶璧拌窛绂�
+            return path.get(0).getMoveDistance();
+        }
+
+        //鎬昏窛绂�
+        int allDistance = 0;
+        for (int i = 0; i < path.size() - 1; i++) {//璺緞涓渶鍚庝竴涓妭鐐逛笉缁熻鍒版�昏窛绂伙紝鏈�鍚庝竴涓妭鐐瑰苟涓嶄細鍐嶈璧�
+            allDistance += path.get(i).getMoveDistance();
+        }
+        return allDistance;
+    }
+
     public static void main(String[] args) {
         //璁$畻璺緞
-        List<NavigateNode> calc = calc("1000901", "0201801", "out");
+        List<NavigateNode> calc = calc("1000901", "1800201", ShuttleTaskModeType.PAK_OUT.id);
         System.out.println(calc);
         System.out.println("------------------------");
 //        List<NavigateNode> calc = calc("0501401", "0201801", "out");
         //灏嗚矾寰勫垎鍓叉垚澶氭
         ArrayList<ArrayList<NavigateNode>> data = getSectionPath(calc);
         for (ArrayList<NavigateNode> list : data) {
+            Integer currentPathAllDistance = getCurrentPathAllDistance(list);//璁$畻褰撳墠璺緞鎬昏窛绂�
+            System.out.println(currentPathAllDistance);
             System.out.println(list);
         }
 

--
Gitblit v1.9.1