From 281069d9434aad8e0245be45580402f7a9a798d0 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 29 十一月 2024 15:50:32 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 29 +++++++++++++++++------------
1 files changed, 17 insertions(+), 12 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 cd825ca..11d5fb2 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,15 +2,16 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.acs.common.utils.GsonUtils;
-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.manager.common.utils.MapDataUtils;
+import com.zy.acs.manager.core.constant.MapDataConstant;
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.NavigateNode;
import com.zy.acs.manager.core.service.astart.RetreatNavigateNode;
import com.zy.acs.manager.core.service.astart.WaveNodeType;
import com.zy.acs.manager.manager.entity.*;
@@ -38,12 +39,6 @@
@Component
public class TrafficService {
- public static final Integer MIN_SLICE_PATH_LENGTH = 3;
-
- public static final Integer MAX_JAM_TIMEOUT = 5 * 1000;
-
- private final RedisSupport redis = RedisSupport.defaultRedisSupport;
-
@Autowired
private AgvService agvService;
@Autowired
@@ -65,7 +60,7 @@
@Autowired
private SnowflakeIdWorker snowflakeIdWorker;
@Autowired
- private ActionService actionService;
+ private AgvModelService agvModelService;
@Autowired
private RetreatNavigateService retreatNavigateService;
@Autowired
@@ -239,7 +234,7 @@
assert !Cools.isEmpty(blockVehicleList);
boolean hasUnavoidableBlocks = blockVehicleList.stream().anyMatch(blockVehicleDto -> !blockVehicleDto.isAvoidable());
- if (hasUnavoidableBlocks && pathList.size() <= MIN_SLICE_PATH_LENGTH) {
+ if (hasUnavoidableBlocks && pathList.size() <= MapDataConstant.MIN_SLICE_PATH_LENGTH) {
log.info("AGV[{}] waiting in place, because the path list is too short...", agvNo);
pathList.clear();
}
@@ -277,7 +272,7 @@
if (!Cools.isEmpty(jam.getAvoAgv())
&& BlockVehicleDto.customContain(blockVehicleList, agvService.getById(jam.getAvoAgv()).getUuid())) {
- maxJamTimeoutFactor = 10;
+ maxJamTimeoutFactor = 5;
} else {
@@ -336,7 +331,7 @@
// handle jam timeout
if (null != maxJamTimeoutFactor) {
- if (System.currentTimeMillis() - jam.getStartTime().getTime() > MAX_JAM_TIMEOUT * maxJamTimeoutFactor) {
+ if (System.currentTimeMillis() - jam.getStartTime().getTime() > MapDataConstant.MAX_JAM_TIMEOUT * maxJamTimeoutFactor) {
if (!Cools.isEmpty(lockPathList)) {
@@ -519,6 +514,7 @@
private List<String> getBlackPathList(List<Jam> unfinishedOriginJamByCurrAgv) {
List<String> blackPathList = new ArrayList<>();
+ Integer lev = MapDataDispatcher.MAP_DEFAULT_LEV;
if (!Cools.isEmpty(unfinishedOriginJamByCurrAgv)) {
for (Jam jam : unfinishedOriginJamByCurrAgv) {
if (!Cools.isEmpty(jam.getJamPath())) {
@@ -526,7 +522,7 @@
List<String> list = GsonUtils.fromJsonToList(jam.getJamPath(), String.class);
Agv jamAgv = agvService.getById(jam.getJamAgv());
- List<String> jamDynamicNodes = mapDataDispatcher.queryCodeListFromDynamicNode(null, jamAgv.getUuid());
+ List<String> jamDynamicNodes = mapDataDispatcher.queryCodeListFromDynamicNode(lev, jamAgv.getUuid());
// jamDynamicNodes has sorted
String firstCodeNode = jamDynamicNodes.stream().findFirst().orElse(null);
@@ -535,6 +531,15 @@
if (idx != -1) {
list = new ArrayList<>(list.subList(idx, list.size()));
}
+
+ // the wave of first node
+ Double avoidDistance = MapDataUtils.getVehicleWaveSafeDistance(
+ agvModelService.getById(jamAgv.getAgvModel()).getDiameter(),
+ MapDataConstant.MAX_DISTANCE_BETWEEN_ADJACENT_AGV_FACTOR
+ );
+ List<String> waveCodeList = mapService.getWaveScopeByCode(lev, firstCodeNode, avoidDistance)
+ .stream().map(NavigateNode::getCodeData).distinct().collect(Collectors.toList());
+ list.addAll(waveCodeList);
}
blackPathList.addAll(list);
--
Gitblit v1.9.1