From 4c9169967a879b54c04b0754ab9830a5a6baa708 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期二, 18 三月 2025 14:30:48 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 75 +++++++++++++++++++++++++++++++++++++
1 files changed, 75 insertions(+), 0 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 8dc6dbe..775f301 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
@@ -71,6 +71,10 @@
private JamService jamService;
@Autowired
private AvoidWaveCalculator avoidWaveCalculator;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private FuncStaService funcStaService;
@Transactional
public synchronized void trigger(Segment segment) {
@@ -99,6 +103,77 @@
if (!agvService.judgeEnable(agv.getId())) {
return;
}
+
+ // resolve deadlock
+// if (configService.getVal("unlockSwitch", Boolean.class)) {
+//
+// boolean preSegIsStandbyDeadLock = false;
+// Segment previousSeg = segmentService.getPreviousStepOfFinish(segment.getTravelId(), segment.getSerial(), MapDataConstant.RESOLVE_DEADLOCK);
+// preSegIsStandbyDeadLock = previousSeg != null;
+// if (preSegIsStandbyDeadLock && !jamService.isAvoidSeg(segment.getId())) {
+// if (0 < segmentService.count(new LambdaQueryWrapper<Segment>()
+// .in(Segment::getState, SegmentStateType.WAITING.toString(), SegmentStateType.RUNNING.toString())
+// .eq(Segment::getMemo, MapDataConstant.RESOLVE_DEADLOCK))) {
+// return;
+// }
+// }
+//
+// Jam jam = jamService.getJam(agv.getId(), agvDetail.getRecentCode(), segment.getId());
+// if (!preSegIsStandbyDeadLock && (null != jam && null != jam.getDuration() && jam.getDuration() > (BlockSeverityType.SEVERE.duration - MapDataConstant.MAX_JAM_TIMEOUT)
+// || DateUtils.diffToMilliseconds(segment.getUpdateTime(), now) > (BlockSeverityType.SEVERE.duration - MapDataConstant.MAX_JAM_TIMEOUT))
+// && (Cools.isEmpty(segment.getMemo()) || !segment.getMemo().equals(MapDataConstant.RESOLVE_DEADLOCK))) {
+//
+// Task task = taskService.getById(segment.getTaskId());
+// if (task.getTaskSts().equals(TaskStsType.PROGRESS.val())
+// && DateUtils.diffToMilliseconds(task.getUpdateTime(), now) > MapDataConstant.DEADLOCK_TASK_TIMEOUT) {
+//
+// Code endCode = null;
+// List<FuncSta> idleFunStaList = funcStaService.findInIdleStatus(FuncStaType.STANDBY, segment.getAgvId());
+// if (!Cools.isEmpty(idleFunStaList)) {
+// idleFunStaList = idleFunStaList.stream().filter(funcSta -> {
+// return 0 == segmentService.count(new LambdaQueryWrapper<Segment>()
+// .eq(Segment::getEndNode, funcSta.getCode())
+// .in(Segment::getState, SegmentStateType.WAITING.toString(), SegmentStateType.RUNNING.toString())
+// .eq(Segment::getMemo, MapDataConstant.RESOLVE_DEADLOCK)
+// );
+// }).collect(Collectors.toList());
+// FuncSta funcSta = funcStaService.checkoutFurthestFunSta(agvDetailService.getCurrentCode(segment.getAgvId()).getId(), idleFunStaList);
+// if (null != funcSta) {
+// endCode = codeService.getCacheById(funcSta.getCode());
+// }
+// }
+// if (null == endCode) {
+// log.warn("AGV[{}] failed to search destination锛宼here hadn't any idle funSta锛孴askTypeType锛歿}", segment.getAgvId(), FuncStaType.STANDBY);
+// return;
+// }
+//
+// segment.setState(SegmentStateType.INIT.toString());
+// segment.setUpdateTime(now);
+// if (!segmentService.updateById(segment)) {
+// log.error("Segment [{}] failed to update 锛侊紒锛�", segment.getGroupId() + " - " + segment.getSerial());
+// return;
+// }
+//
+// // new move seg
+// Segment insertSeg = new Segment();
+// insertSeg.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3));
+// insertSeg.setTravelId(segment.getTravelId());
+// insertSeg.setAgvId(segment.getAgvId());
+// insertSeg.setTaskId(segment.getTaskId());
+// insertSeg.setSerial(segment.getSerial() - 1);
+// insertSeg.setEndNode(endCode.getId());
+// insertSeg.setPosType(TaskPosDto.PosType.MOVE.toString());
+// insertSeg.setState(SegmentStateType.WAITING.toString());
+// insertSeg.setMemo(MapDataConstant.RESOLVE_DEADLOCK);
+// if (!segmentService.save(insertSeg)) {
+// log.error("Segment [{}] failed to save 锛侊紒锛�", segment.getTravelId() + " - " + segment.getSerial());
+// return;
+// }
+// return;
+// }
+// }
+// }
+
if (!Cools.isEmpty(segmentService.getByAgvAndState(agv.getId(), SegmentStateType.RUNNING.toString()))) {
return;
}
--
Gitblit v1.9.1