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         |   10 +++++++++-
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/JamServiceImpl.java |   18 ++++++++++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/JamService.java          |    2 ++
 3 files changed, 29 insertions(+), 1 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 a213cac..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
@@ -220,11 +220,19 @@
                 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();
+                    }
                 }
 
             // 鏃犲彲璧拌璺緞
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/JamService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/JamService.java
index 14d09ac..ce8407c 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/JamService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/JamService.java
@@ -10,6 +10,8 @@
 
     Jam getJam(Long agvId, Long jamCode, Long jamSeg);
 
+    Jam getCycleJam(Long jamAgv, Long jamSeg, String avoAgvNo);
+
     List<Jam> queryByAvoid(Long avoAgv, JamStateType jamState);
 
     Boolean checkIfFinish(Long avoAgv, String currCodeData);
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/JamServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/JamServiceImpl.java
index 9e3899c..af8c23b 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/JamServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/JamServiceImpl.java
@@ -7,6 +7,7 @@
 import com.zy.acs.manager.manager.entity.Jam;
 import com.zy.acs.manager.manager.enums.JamStateType;
 import com.zy.acs.manager.manager.mapper.JamMapper;
+import com.zy.acs.manager.manager.service.AgvService;
 import com.zy.acs.manager.manager.service.CodeService;
 import com.zy.acs.manager.manager.service.JamService;
 import lombok.extern.slf4j.Slf4j;
@@ -22,6 +23,8 @@
 
     @Autowired
     private CodeService codeService;
+    @Autowired
+    private AgvService agvService;
 
     @Override
     public Jam getJam(Long agvId, Long jamCode, Long jamSeg) {
@@ -38,6 +41,21 @@
     }
 
     @Override
+    public Jam getCycleJam(Long jamAgv, Long jamSeg, String avoAgvNo) {
+        List<Jam> jams = this.list(new LambdaQueryWrapper<Jam>()
+                .eq(Jam::getJamAgv, jamAgv)
+                .eq(Jam::getJamSeg, jamSeg)
+                .eq(Jam::getAvoAgv, agvService.selectByUuid(avoAgvNo).getId())
+                .eq(Jam::getCycleAvo, 1)
+//                .eq(Jam::getState, JamStateType.RUNNING.toString())
+        );
+        if (!Cools.isEmpty(jams)) {
+            return jams.stream().findFirst().orElse(null);
+        }
+        return null;
+    }
+
+    @Override
     public List<Jam> queryByAvoid(Long avoAgv, JamStateType jamState) {
         if (null == avoAgv) {
             return null;

--
Gitblit v1.9.1