From 819bef1aeacf77eaaac809f87971db1056d18ee5 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 14 十一月 2024 13:57:55 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 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 fe6f6da..428c9f0 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
@@ -55,6 +55,8 @@
     @Autowired
     private MainService mainService;
     @Autowired
+    private MainLockWrapService mainLockWrapService;
+    @Autowired
     private MapService mapService;
     @Autowired
     private MapDataDispatcher mapDataDispatcher;
@@ -91,6 +93,7 @@
             if (!Cools.isEmpty(waitingSegList)) {
                 for (Segment waitingSeg : waitingSegList) {
                     if (!waitingSeg.getId().equals(segment.getId())) {
+                        log.error("AGV[{}] 浠诲姟寮傚父锛屾湇鍔″櫒閿欒锛侊紒锛�", agv.getUuid());
                         return;
                     }
                 }
@@ -150,7 +153,7 @@
                 insertSeg.setPosType(TaskPosDto.PosType.MOVE.toString());
                 insertSeg.setState(SegmentStateType.WAITING.toString());
                 if (!segmentService.save(insertSeg)) {
-                    log.error("Segment [{}] 淇濆瓨澶辫触 锛侊紒锛�", segment.getTravelId() + " - " + segment.getSerial());
+                    log.error("Segment [{}] failed to save 锛侊紒锛�", segment.getTravelId() + " - " + segment.getSerial());
                 }
                 segmentList.add(insertSeg);
 
@@ -217,9 +220,17 @@
                 if (!pathList.get(pathList.size() - 1).equals(endCode.getData())) {
                     assert !Cools.isEmpty(blockVehicleList);
 
-                    boolean hasUnavoidableBlocks  = blockVehicleList.stream().anyMatch(blockVehicleDto -> !blockVehicleDto.isAvoidable());
+                    boolean hasUnavoidableBlocks = blockVehicleList.stream().anyMatch(blockVehicleDto -> !blockVehicleDto.isAvoidable());
                     if (hasUnavoidableBlocks && pathList.size() <= MIN_SLICE_PATH_LENGTH) {
                         log.info("AGV[{}] waiting in place, because the path list is too short...", agvNo);
+                        pathList.clear();
+                    }
+
+                    boolean hasCycleJam = blockVehicleList.stream().anyMatch(
+                            blockVehicleDto -> null != jamService.getCycleJam(agv.getId(), segment.getId(), blockVehicleDto.getVehicle())
+                    );
+                    if (hasCycleJam) {
+                        log.info("AGV[{}] waiting in place, because has cycle jam...", agvNo);
                         pathList.clear();
                     }
                 }
@@ -441,7 +452,7 @@
 
         } else {
 
-            return mainService.buildMinorTask(agv, null, TaskTypeType.MOVE, endCodeData);
+            return mainLockWrapService.buildMinorTask(agv, null, TaskTypeType.MOVE, endCodeData);
         }
 
         return true;

--
Gitblit v1.9.1