From 80d8b0ed5a43ba329c31b557fff81eceb42b022c Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 26 十一月 2024 10:26:55 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 33 +++++++++++++++++++++++----------
1 files changed, 23 insertions(+), 10 deletions(-)
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 a778a8a..6ca2b01 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
@@ -9,6 +9,7 @@
import com.zy.acs.manager.common.utils.MapDataUtils;
import com.zy.acs.manager.core.domain.BlockVehicleDto;
import com.zy.acs.manager.core.domain.TaskPosDto;
+import com.zy.acs.manager.core.domain.type.BlockSeverityType;
import com.zy.acs.manager.core.service.astart.MapDataDispatcher;
import com.zy.acs.manager.core.service.astart.RetreatNavigateNode;
import com.zy.acs.manager.core.service.astart.WaveNodeType;
@@ -199,6 +200,7 @@
String agvNo = agv.getUuid();
Date now = new Date();
Jam jam = jamService.getJam(agv.getId(), startCode.getId(), segment.getId());
+ BlockSeverityType blockSeverity = BlockSeverityType.query(null == jam ? null : jam.getDuration());
// judge avoid of jam
List<Jam> unfinishedOriginJamByCurrAgv = jamService.getUnfinishedOriginJamByAvo(agv.getId(), startCode.getId(), segment.getId());
List<String> blackPath = this.getBlackPathList(unfinishedOriginJamByCurrAgv);
@@ -207,9 +209,9 @@
List<String> pathList = new ArrayList<>();
// 鏃犻殰纰嶈В
- List<String> unlockPathList = mapService.checkoutPath(agvNo, startCode, endCode, false, blackPath, segment);
+ List<String> unlockPathList = mapService.checkoutPath(agvNo, startCode, endCode, false, blackPath, segment, null);
// 閬胯瑙�
- List<String> lockPathList = mapService.checkoutPath(agvNo, startCode, endCode, true, blackPath, segment);
+ List<String> lockPathList = mapService.checkoutPath(agvNo, startCode, endCode, true, blackPath, segment, null);
if (!Cools.isEmpty(lockPathList) && // 瀛樺湪閬胯瑙�
Math.abs(lockPathList.size() - unlockPathList.size()) <= Arrays.stream(mapDataDispatcher.getCodeMatrix(lev)).mapToInt(row -> row.length).sum() / 10
@@ -218,8 +220,10 @@
pathList = lockPathList;
} else {
+ // preview path
+ List<String> draftPath = new ArrayList<>(unlockPathList);
// 鍙蛋琛岃矾寰勯泦鍚堣绠�
- List<BlockVehicleDto> blockVehicleList = this.slicePathAndReturnBlockVehicleList(lev, unlockPathList, agvNo, pathList); // jamAgvNo may was wave
+ List<BlockVehicleDto> blockVehicleList = this.slicePathAndReturnBlockVehicleList(lev, draftPath, agvNo, pathList); // jamAgvNo may was wave
if (!Cools.isEmpty(pathList)) {
@@ -252,8 +256,7 @@
Integer maxJamTimeoutFactor = null;
// persist jam data
- ArrayList<String> jamPath = new ArrayList<>(unlockPathList);
- jam = this.createOrUpdateJam(agv, startCode, segment, jam, jamPath);
+ jam = this.createOrUpdateJam(agv, startCode, segment, jam, draftPath);
// ? has unAvoidable block vehicles
if (blockVehicleList.stream().anyMatch(blockVehicleDto -> !blockVehicleDto.isAvoidable())) {
@@ -271,10 +274,6 @@
} else {
// select optimal block vehicle
-// String blockAgvNo = blockVehicleList.stream()
-// .filter(BlockVehicleDto::isAvoidable)
-// .map(BlockVehicleDto::getVehicle)
-// .findFirst().orElse(null);
String blockAgvNo = this.checkoutBestSolutionOfBlocks(blockVehicleList);
if (Cools.isEmpty(blockAgvNo)) {
@@ -306,7 +305,7 @@
}
// notify block vehicle to avoid
- if (this.notifyVehicleAvoid(blockAgvNo, blockAgvCode, jamPath, agvNo, jam)) {
+ if (this.notifyVehicleAvoid(blockAgvNo, blockAgvCode, draftPath, agvNo, jam)) {
if (jam.getCycleAvo() == 1) {
jam.setCycleCode(endCode.getId());
}
@@ -515,7 +514,21 @@
if (!Cools.isEmpty(unfinishedOriginJamByCurrAgv)) {
for (Jam jam : unfinishedOriginJamByCurrAgv) {
if (!Cools.isEmpty(jam.getJamPath())) {
+
List<String> list = GsonUtils.fromJsonToList(jam.getJamPath(), String.class);
+
+ Agv jamAgv = agvService.getById(jam.getJamAgv());
+ List<String> jamDynamicNodes = mapDataDispatcher.queryCodeListFromDynamicNode(null, jamAgv.getUuid());
+ // jamDynamicNodes has sorted
+ String firstCodeNode = jamDynamicNodes.stream().findFirst().orElse(null);
+
+ if (!Cools.isEmpty(firstCodeNode)) {
+ int idx = list.indexOf(firstCodeNode);
+ if (idx != -1) {
+ list = new ArrayList<>(list.subList(idx, list.size()));
+ }
+ }
+
blackPathList.addAll(list);
}
}
--
Gitblit v1.9.1