From 0b83448133a1af459273318bc5b0c2a4bc6e0448 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期六, 08 四月 2023 17:09:14 +0800
Subject: [PATCH] 四向穿梭车逻辑优化
---
src/main/java/com/zy/common/utils/NavigateUtils.java | 43 +++++++++++++++++++++++++++++++++++++++++--
1 files changed, 41 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 fd743d4..38fbb15 100644
--- a/src/main/java/com/zy/common/utils/NavigateUtils.java
+++ b/src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -1,5 +1,6 @@
package com.zy.common.utils;
+import com.alibaba.fastjson.JSONObject;
import com.zy.common.model.NavigateNode;
import com.zy.core.enums.ShuttleTaskModeType;
@@ -128,7 +129,9 @@
ArrayList<ArrayList<NavigateNode>> list = new ArrayList<>();
ArrayList<NavigateNode> data = new ArrayList<>();
String direction = mapList.get(0).getDirection();//琛岃蛋鏂瑰悜
- for (NavigateNode mapNode : mapList) {
+
+ for (int i = 0; i < mapList.size(); i++) {
+ NavigateNode mapNode = mapList.get(i);
boolean isInflectionPoint = mapNode.getIsInflectionPoint();
data.add(mapNode);
if (isInflectionPoint) {
@@ -137,10 +140,13 @@
list.add(data);//娣诲姞鏌愪竴娈垫暟鎹�
direction = mapNode.getDirection();//鏇存柊琛岃蛋鏂瑰悜
data = new ArrayList<>();
+ data.add(mapNode);//灏嗘嫄鐐圭殑缁堢偣锛屾洿鏂版垚涓嬩竴娈靛懡浠ょ殑璧风偣鍧愭爣
}else {
//鐩磋绾胯矾
mapNode.setDirection(direction);//璁剧疆琛岃蛋鏂瑰悜
}
+ Integer distance = getXToNextDistance(mapNode);//鑾峰彇褰撳墠鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈
+ mapNode.setMoveDistance(distance);
}
//灏嗘渶鍚庝竴娈垫暟鎹坊鍔犺繘鍏�
@@ -149,15 +155,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(List<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", ShuttleTaskModeType.PAK_OUT.id);
+ 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