From e6c977aadbd6fdfa9c0d4be5d16dd83cf4677a79 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 15 十一月 2024 15:12:48 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 31 +++++++++++++++++++++++++++----
1 files changed, 27 insertions(+), 4 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 45c6fb4..0d5ee87 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
@@ -1,6 +1,7 @@
package com.zy.acs.manager.core.service;
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;
@@ -98,6 +99,8 @@
}
}
}
+
+ // dead lane
if (jamService.count(new LambdaQueryWrapper<Jam>()
.eq(Jam::getJamAgv, agv.getId())
.eq(Jam::getJamSeg, segment.getId())
@@ -196,6 +199,9 @@
String agvNo = agv.getUuid();
Date now = new Date();
Jam jam = jamService.getJam(agv.getId(), startCode.getId(), segment.getId());
+ // judge avoid of jam
+ List<Jam> unfinishedOriginJamByCurrAgv = jamService.hasUnfinishedOriginJamByAvo(agv.getId(), startCode.getId(), segment.getId());
+ List<String> blackPath = this.getBlackPathList(unfinishedOriginJamByCurrAgv);
// 缁撴灉闆�
List<String> pathList = new ArrayList<>();
@@ -246,7 +252,8 @@
Integer maxJamTimeoutFactor = null;
// persist jam data
- jam = this.createOrUpdateJam(agv, startCode, segment, jam);
+ ArrayList<String> jamPath = new ArrayList<>(unlockPathList);
+ jam = this.createOrUpdateJam(agv, startCode, segment, jam, jamPath);
// ? has unAvoidable block vehicles
if (blockVehicleList.stream().anyMatch(blockVehicleDto -> !blockVehicleDto.isAvoidable())) {
@@ -290,7 +297,7 @@
}
// notify block vehicle to avoid
- if (this.notifyVehicleAvoid(blockAgvNo, blockAgvCode, unlockPathList, agvNo, jam)) {
+ if (this.notifyVehicleAvoid(blockAgvNo, blockAgvCode, jamPath, agvNo, jam)) {
if (jam.getCycleAvo() == 1) {
jam.setCycleCode(endCode.getId());
}
@@ -453,23 +460,26 @@
if (!segmentService.save(insertSeg)) {
log.error("Segment [{}] 淇濆瓨澶辫触 锛侊紒锛�", segment.getTravelId() + " - " + segment.getSerial());
return false;
+ } else {
+ jam.setAvoSeg(insertSeg.getId());
}
} else {
- return mainLockWrapService.buildMinorTask(agv, null, TaskTypeType.MOVE, endCodeData);
+ return mainLockWrapService.buildMinorTask(agv, TaskTypeType.MOVE, endCodeData, jam);
}
return true;
}
- private Jam createOrUpdateJam(Agv agv, Code startCode, Segment segment, Jam jam) {
+ private Jam createOrUpdateJam(Agv agv, Code startCode, Segment segment, Jam jam, List<String> jamPath) {
if (jam == null) {
jam = new Jam();
jam.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3));
jam.setJamAgv(agv.getId());
jam.setJamCode(startCode.getId());
jam.setJamSeg(segment.getId());
+ jam.setJamPath(GsonUtils.toJson(jamPath));
jam.setStartTime(new Date());
jam.setState(JamStateType.RUNNING.toString());
if (!jamService.save(jam)) {
@@ -485,4 +495,17 @@
return jam;
}
+ private List<String> getBlackPathList(List<Jam> unfinishedOriginJamByCurrAgv) {
+ List<String> blackPathList = new ArrayList<>();
+ if (!Cools.isEmpty(unfinishedOriginJamByCurrAgv)) {
+ for (Jam jam : unfinishedOriginJamByCurrAgv) {
+ if (!Cools.isEmpty(jam.getJamPath())) {
+ List<String> list = GsonUtils.fromJsonToList(jam.getJamPath(), String.class);
+ blackPathList.addAll(list);
+ }
+ }
+ }
+ return blackPathList.stream().distinct().collect(Collectors.toList());
+ }
+
}
--
Gitblit v1.9.1