From da7c1947a55418767e258c734e85c1732d663b42 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 30 十月 2024 17:06:14 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 46 ++++++++++++++++++++++------------------------
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java | 13 +++++--------
2 files changed, 27 insertions(+), 32 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 107e9a3..946ce40 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
@@ -45,7 +45,7 @@
}
/**
- * 瀵诲潃 ===>> A*
+ * 瀵诲潃 ===>> A Star
*/
public synchronized List<String> checkoutPath(String agvNo, Code startCode, Code endCode
, Boolean lock, List<String> whiteList, List<String> blackList) {
@@ -66,7 +66,7 @@
ArrayList<NavigateNode> navigateNodes = new ArrayList<>();
// 娓叉煋
- NavigateNode parentNode = null;//褰撳墠寰幆涓婁竴鑺傜偣锛岀敤浜庢嫄鐐硅绠�
+ NavigateNode parentNode = null; // 褰撳墠寰幆涓婁竴鑺傜偣锛岀敤浜庢嫄鐐硅绠�
while (finishNode != null) {
navigateNodes.add(finishNode);
@@ -76,12 +76,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());
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
index 7922cee..2d218bb 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
@@ -2,11 +2,11 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.acs.common.constant.RedisConstant;
+import com.zy.acs.common.utils.RedisSupport;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.SnowflakeIdWorker;
import com.zy.acs.framework.exception.CoolException;
-import com.zy.acs.common.constant.RedisConstant;
-import com.zy.acs.common.utils.RedisSupport;
import com.zy.acs.manager.common.utils.MapDataUtils;
import com.zy.acs.manager.core.domain.TaskPosDto;
import com.zy.acs.manager.core.domain.TrafficJamDto;
@@ -26,10 +26,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
/**
* Wavefront
@@ -84,24 +81,23 @@
Travel travel = travelService.getById(segment.getTravelId());
Agv agv = agvService.getById(travel.getAgvId());
AgvDetail agvDetail = agvDetailService.selectByAgvId(travel.getAgvId());
-
long endNode = segment.getEndNode();
- Code startCode = codeService.getById(agvDetail.getRecentCode());
- Code endCode = codeService.getById(endNode);
+ // valid ----------------------------------------------------
+ if (!agvService.judgeEnable(agv.getId())) {
+ return;
+ }
if (!Cools.isEmpty(segmentService.getByAgvAndState(agv.getId(), SegmentStateType.RUNNING.toString()))) {
return;
}
-
List<Segment> waitingSegList = segmentService.getByAgvAndState(agv.getId(), SegmentStateType.WAITING.toString());
if (!Cools.isEmpty(waitingSegList)) {
- for (Segment seg : waitingSegList) {
- if (!seg.getId().equals(segment.getId())) {
+ for (Segment waitingSeg : waitingSegList) {
+ if (!waitingSeg.getId().equals(segment.getId())) {
return;
}
}
}
-
if (jamService.count(new LambdaQueryWrapper<Jam>()
.eq(Jam::getJamAgv, agv.getId())
.eq(Jam::getJamSeg, segment.getId())
@@ -112,23 +108,27 @@
return;
}
+ // execute -----------------------------------------------
// ArrayList<List<TaskPosDto>> list = JSON.parseObject(travel.getTaskContent(), new TypeReference<ArrayList<List<TaskPosDto>>>() {});
-
- List<Segment> segmentList = new ArrayList<>();
- segmentList.add(segment);
// get path list
avoidWaveCalculator.calcWaveScope(); // * sync wave scope
- List<String> pathList = this.checkoutPath(agv, startCode, endCode, segment);
+ // checkout path
+ Code startCode = codeService.getById(agvDetail.getRecentCode());
+ Code endCode = codeService.getById(endNode);
+ List<String> pathList = this.checkoutPath(agv, startCode, endCode, segment);
if (Cools.isEmpty(pathList)) {
return;
}
- String lastCodeData = pathList.get(pathList.size() - 1);
+ List<Segment> segmentList = new ArrayList<>();
+ segmentList.add(segment);
- // slice
+ String lastCodeData = pathList.get(pathList.size() - 1);
if (!endCode.getData().equals(lastCodeData)) {
+ // slice
+ Code lastCode = codeService.selectByData(lastCodeData);
// if (pathList.size() <= MIN_SLICE_PATH_LENGTH) {
// return;
@@ -138,11 +138,9 @@
segment.setState(SegmentStateType.INIT.toString());
segment.setUpdateTime(now);
if (!segmentService.updateById(segment)) {
- log.error("Segment [{}] 鏇存柊澶辫触 锛侊紒锛�", segment.getTravelId() + " - " + segment.getSerial());
+ log.error("Segment [{}] failed to update 锛侊紒锛�", segment.getGroupId() + " - " + segment.getSerial());
}
segmentList.clear();
-
- Code lastCode = codeService.selectByData(lastCodeData);
// new move seg
Segment insertSeg = new Segment();
@@ -157,7 +155,6 @@
if (!segmentService.save(insertSeg)) {
log.error("Segment [{}] 淇濆瓨澶辫触 锛侊紒锛�", segment.getTravelId() + " - " + segment.getSerial());
}
-
segmentList.add(insertSeg);
} else {
@@ -231,7 +228,8 @@
List<String> lockPathList = mapService.checkoutPath(agvNo, startCode, endCode, true);
if (!Cools.isEmpty(lockPathList) && // 瀛樺湪閬胯瑙�
- Math.abs(lockPathList.size() - unlockPathList.size()) <= Math.max((mapDataDispatcher.getCodeMatrix(lev)[0].length / 2), 5)) {
+ Math.abs(lockPathList.size() - unlockPathList.size()) <= Arrays.stream(mapDataDispatcher.getCodeMatrix(lev)).mapToInt(row -> row.length).sum() / 10
+ ) {
pathList = lockPathList;
} else {
--
Gitblit v1.9.1