From 7fd4327861ee2b36af01ff526742b0704f713ccc Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 26 十一月 2024 15:00:42 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java | 138 +++++-----------------------------------------
1 files changed, 15 insertions(+), 123 deletions(-)
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
index bfecd47..54b6457 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
@@ -1,25 +1,26 @@
package com.zy.acs.manager.core.service;
import com.alibaba.fastjson.JSONObject;
-import com.zy.acs.framework.common.Cools;
import com.zy.acs.common.enums.AgvDirectionType;
+import com.zy.acs.framework.common.Cools;
import com.zy.acs.manager.common.utils.MapDataUtils;
import com.zy.acs.manager.core.service.astart.*;
import com.zy.acs.manager.core.service.astart.domain.DynamicNode;
import com.zy.acs.manager.core.service.floyd.FloydNavigateService;
import com.zy.acs.manager.manager.entity.Code;
import com.zy.acs.manager.manager.entity.Loc;
+import com.zy.acs.manager.manager.entity.Segment;
import com.zy.acs.manager.manager.service.ActionService;
-import com.zy.acs.manager.manager.service.CodeGapService;
import com.zy.acs.manager.manager.service.CodeService;
-import com.zy.acs.manager.manager.service.RouteService;
import com.zy.acs.manager.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.time.StopWatch;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import java.util.stream.Collectors;
/**
@@ -32,10 +33,6 @@
@Autowired
private CodeService codeService;
@Autowired
- private CodeGapService codeGapService;
- @Autowired
- private RouteService routeService;
- @Autowired
private FloydNavigateService floydNavigateService;
@Autowired
private MapDataDispatcher mapDataDispatcher;
@@ -46,15 +43,11 @@
@Autowired
private ActionService actionService;
- public List<String> checkoutPath(String agvNo, Code startCode, Code endCode, Boolean lock) {
- return this.checkoutPath(agvNo, startCode, endCode, lock, null, null);
- }
-
/**
- * 瀵诲潃 ===>> A*
+ * 瀵诲潃 ===>> A Star
*/
public synchronized List<String> checkoutPath(String agvNo, Code startCode, Code endCode
- , Boolean lock, List<String> whiteList, List<String> blackList) {
+ , Boolean lock, List<String> blackList, Segment segment) {
int[] startMapIdx = mapDataDispatcher.getCodeMatrixIdx(null, startCode.getData());
int[] endMapIdx = mapDataDispatcher.getCodeMatrixIdx(null, endCode.getData());
@@ -62,7 +55,7 @@
NavigateNode startNode = new NavigateNode(startMapIdx[0], startMapIdx[1], startCode.getData());
NavigateNode endNode = new NavigateNode(endMapIdx[0], endMapIdx[1], endCode.getData());
- NavigateNode finishNode = aStarNavigateService.execute(agvNo, startNode, endNode, lock, whiteList, blackList);
+ NavigateNode finishNode = aStarNavigateService.execute(agvNo, startNode, endNode, lock, blackList, segment);
if (null == finishNode) {
log.warn("{} 鍙稟GV妫�绱{}] ===>> [{}]璺緞澶辫触......", agvNo, startCode.getData(), endCode.getData());
@@ -72,7 +65,7 @@
ArrayList<NavigateNode> navigateNodes = new ArrayList<>();
// 娓叉煋
- NavigateNode parentNode = null;//褰撳墠寰幆涓婁竴鑺傜偣锛岀敤浜庢嫄鐐硅绠�
+ NavigateNode parentNode = null; // 褰撳墠寰幆涓婁竴鑺傜偣锛岀敤浜庢嫄鐐硅绠�
while (finishNode != null) {
navigateNodes.add(finishNode);
@@ -82,12 +75,9 @@
Collections.reverse(navigateNodes);
- //灏嗘瘡涓妭鐐归噷闈㈢殑fatherNode鑷充负null(鏂逛究鍚庣画璁$畻鏃剁埗鑺傜偣杩囧瀵艰嚧鏄剧ず鐨勮妭鐐瑰お澶�)
- for (NavigateNode navigateNode : navigateNodes) {
- //鐖惰妭鐐硅缃负null锛屼笉褰卞搷璁$畻缁撴灉锛屼笉褰卞搷鍚庣画鎿嶄綔銆�
- //姝ゆ搷浣滀粎涓哄悗缁帓鏌ュ鐞嗘彁渚涜瑙夋柟渚裤��
- navigateNode.setParent(null);
- }
+// for (NavigateNode navigateNode : navigateNodes) {
+// navigateNode.setParent(null);
+// }
return navigateNodes.stream().map(NavigateNode::getCodeData).collect(Collectors.toList());
}
@@ -132,10 +122,9 @@
double deltaX = x1 - x0;
double deltaY = y1 - y0;
- double angle = Math.atan2(deltaX, deltaY);
- int offsetAngle = Integer.parseInt(configService.getVal("mapXoffset"));
- angle = angle + offsetAngle;
- angle = Math.toDegrees(angle);
+ double angle = -Math.atan2(deltaX, deltaY);
+ int angleOffsetVal = configService.getVal("mapAngleOffsetVal", Integer.class);
+ angle = Math.toDegrees(angle) + angleOffsetVal;
angle = (angle + 360) % 360; // 灏嗚搴﹁浆鎹负姝e��
return angle;
@@ -180,103 +169,6 @@
public void lockPath(Integer lev, List<String> pathList, String agvNo) {
mapDataDispatcher.modifyDynamicMatrix(lev, pathList, agvNo);
- }
-
- public synchronized void unlockPath(String agvNo, List<String> nodeList) {
- try {
- StopWatch stopWatch = new StopWatch();
- stopWatch.start();
-
- if (Cools.isEmpty(agvNo, nodeList)) {
- return;
- }
-
- List<String> pathList = actionService.getPathListByAgv(agvNo).stream().distinct().collect(Collectors.toList());
-
- List<String> inTrace = new ArrayList<>();
-
- Set<String> outsideTrace = new HashSet<>();
-
- if (Cools.isEmpty(pathList)) {
- outsideTrace.addAll(nodeList);
- } else {
-
- int size = nodeList.size();
- for (String code : pathList) {
-
-
- Iterator<String> iterator = nodeList.iterator();
- while (iterator.hasNext()) {
-
- String next = iterator.next();
-
- if (next.equals(code)) {
- if (!inTrace.contains(next)) {
- inTrace.add(next);
- }
-
- iterator.remove();
- }
- }
-
- }
-
-
- assert inTrace.size() + nodeList.size() <= size;
-
- if (!Cools.isEmpty(nodeList)) {
- outsideTrace.addAll(nodeList);
- }
-
- if (!Cools.isEmpty(inTrace)) {
-
- String last = inTrace.get(inTrace.size() - 1);
-
- int idx = pathList.indexOf(last);
- inTrace = pathList.subList(0, idx + 1);
- }
-
-
- }
-
- List<String> resetCodeList = new ArrayList<>();
-
- Integer lev = null;
-
- DynamicNode[][] dynamicMatrix = mapDataDispatcher.getDynamicMatrix(lev);
-
- for (String code : inTrace) {
- int[] node = mapDataDispatcher.getCodeMatrixIdx(lev, code);
- DynamicNode dynamicNode = dynamicMatrix[node[0]][node[1]];
-
- if (dynamicNode.getVehicle().equals(agvNo)) {
- resetCodeList.add(code);
- }
- }
-
- for (String code : outsideTrace) {
- int[] node = mapDataDispatcher.getCodeMatrixIdx(lev, code);
- DynamicNode dynamicNode = dynamicMatrix[node[0]][node[1]];
-
- if (dynamicNode.getVehicle().equals(agvNo)) {
- resetCodeList.add(code);
- }
- }
-
- if (!Cools.isEmpty(resetCodeList)) {
-
- mapDataDispatcher.clearDynamicMatrixByCodeList(lev, resetCodeList);
- }
-
- stopWatch.stop();
- if (stopWatch.getTime() > 50) {
- log.info("瑙i攣璺緞鍑芥暟鑺辫垂鏃堕棿涓猴細{}姣......", stopWatch.getTime());
- }
-
- } catch (Exception e) {
- log.error("TrafficService.unlockPath", e);
- }
-
}
public synchronized void unlockPath(String agvNo, String codeData) {
--
Gitblit v1.9.1