From efabc6ba991acfd01d38bb0bf4e8cfd772416617 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 05 一月 2026 13:07:39 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java  |   30 ++++++++++++++----------------
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java      |    4 ++--
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AvoidWaveCalculator.java |   18 +++++++++++-------
 3 files changed, 27 insertions(+), 25 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java
index d37a3c6..cbd0707 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java
@@ -24,6 +24,8 @@
 @Component
 public class AutoRunScheduler {
 
+    private static final AgvModelType DEFAULT_AGV_MODEL = AgvModelType.CTU_BOX_TRANSPORT_AGV;
+
     private final RedisSupport redis = RedisSupport.defaultRedisSupport;
 
     @Autowired
@@ -52,10 +54,13 @@
 //    @Scheduled(cron = "0/1 * * * * ? ")
     private void execute() {
         if (!configService.getVal("TaskAssignMode", Boolean.class)) { return; }
-        this.autoRun();
+        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, DEFAULT_AGV_MODEL.toString()));
+        if (null == agvModel) { return; }
+
+        this.autoRun(agvModel);
     }
 
-    private void autoRun() {
+    private void autoRun(AgvModel agvModel) {
         int availableAgvCount = this.getAvailableAgvCount();
         if (0 == availableAgvCount) { return; }
 
@@ -64,18 +69,16 @@
         String memo = "DEMO_STA_" + String.join("-", staPreNos);
 
         // 鍏ュ簱
-        this.runStaToLoc(memo);
+        this.runStaToLoc(agvModel, memo);
         // 鍑哄簱
-        this.runLocToSta(memo);
-
+        this.runLocToSta(agvModel, memo);
         // 绉诲簱
-        this.runLocToLoc(memo);
+        this.runLocToLoc(agvModel, memo);
     }
 
     // 鍏ュ簱
-    private void runStaToLoc(String memo) {
-        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
-        if (null == agvModel) { return; }
+    private void runStaToLoc(AgvModel agvModel, String memo) {
+
 
         // STOCK STA
         List<Sta> stockList = staService.queryAvailableOutSta(1);
@@ -131,9 +134,7 @@
     }
 
     // 鍑哄簱
-    private void runLocToSta(String memo) {
-        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
-        if (null == agvModel) { return; }
+    private void runLocToSta(AgvModel agvModel, String memo) {
 
         // IDLE STA
         List<Sta> idleList = staService.queryAvailableInSta(1);
@@ -189,7 +190,7 @@
     }
 
     // 绉诲簱
-    private void runLocToLoc(String staTaskMemo) {
+    private void runLocToLoc(AgvModel agvModel, String staTaskMemo) {
         String memo = "DEMO_LOC";
 
         int availableAgvCount = this.getAvailableAgvCount();
@@ -199,9 +200,6 @@
                 .in(Bus::getBusSts, BusStsType.RECEIVE.val(), BusStsType.PROGRESS.val())
                 .in(Bus::getMemo, memo, staTaskMemo)
         )) { return; }
-
-        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
-        if (null == agvModel) { return; }
 
         int maxCapacity = agvModel.getBackpack();
 
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AvoidWaveCalculator.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AvoidWaveCalculator.java
index 4a11335..59cbb82 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AvoidWaveCalculator.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AvoidWaveCalculator.java
@@ -14,7 +14,6 @@
 import com.zy.acs.manager.manager.entity.AgvDetail;
 import com.zy.acs.manager.manager.entity.AgvModel;
 import com.zy.acs.manager.manager.entity.Code;
-import com.zy.acs.manager.manager.enums.AgvModelType;
 import com.zy.acs.manager.manager.service.AgvDetailService;
 import com.zy.acs.manager.manager.service.AgvModelService;
 import com.zy.acs.manager.manager.service.AgvService;
@@ -83,7 +82,7 @@
     }
 
 
-    public boolean calcWaveScope() {
+    public boolean calcWaveScope(AgvModel agvModel) {
         Integer lev = MapDataDispatcher.MAP_DEFAULT_LEV;
         boolean lockAcquired = false;
 
@@ -96,7 +95,7 @@
             }
 
 //            return this.calcWaveScopeByPython(lev);
-            return this.calcWaveScopeByJava(lev);
+            return this.calcWaveScopeByJava(lev, agvModel);
 
         } catch (Exception e) {
 
@@ -115,9 +114,12 @@
         }
     }
 
-    private boolean calcWaveScopeByPython(Integer lev) throws Exception {
+    private boolean calcWaveScopeByPython(Integer lev, AgvModel agvModel) throws Exception {
+        if (null == agvModel.getDiameter() || agvModel.getDiameter() <= 0) {
+            log.warn("There is no diameter or diameter value was wrong...");
+        }
+
         // python
-        AgvModel agvModel = agvModelService.selectByType(AgvModelType.CTU_BOX_TRANSPORT_AGV.toString());    // can be optimized
         Double avoidDistance = MapDataUtils.getVehicleWaveSafeDistance(agvModel.getDiameter(), MapDataConstant.MAX_DISTANCE_BETWEEN_ADJACENT_AGV_FACTOR);
 
         if (null == pythonFile) {
@@ -170,9 +172,11 @@
         return true;
     }
 
-    private boolean calcWaveScopeByJava(Integer lev) throws Exception {
+    private boolean calcWaveScopeByJava(Integer lev, AgvModel agvModel) throws Exception {
+        if (null == agvModel.getDiameter() || agvModel.getDiameter() <= 0) {
+            log.warn("There is no diameter or diameter value was wrong...");
+        }
 
-        AgvModel agvModel = agvModelService.selectByType(AgvModelType.CTU_BOX_TRANSPORT_AGV.toString());    // can be optimized
         Double avoidDistance = MapDataUtils.getVehicleWaveSafeDistance(agvModel.getDiameter(), MapDataConstant.MAX_DISTANCE_BETWEEN_ADJACENT_AGV_FACTOR);
 
         // java
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 a386a16..bb3cd44 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
@@ -201,7 +201,7 @@
             //        ArrayList<List<TaskPosDto>> list = JSON.parseObject(travel.getTaskContent(), new TypeReference<ArrayList<List<TaskPosDto>>>() {});
 
             // * sync wave scope
-            if (!avoidWaveCalculator.calcWaveScope()) {
+            if (!avoidWaveCalculator.calcWaveScope(agvModelService.getByAgvId(agv.getId()))) {
                 log.error("failed to calculate avoid wave matrix ...");
                 return;
             }
@@ -672,7 +672,7 @@
 
                             // the wave of first node
                             Double avoidDistance = MapDataUtils.getVehicleWaveSafeDistance(
-                                    agvModelService.getById(jamAgv.getAgvModel()).getDiameter(),
+                                    agvModelService.getByAgvId(jamAgv.getAgvModel()).getDiameter(),
                                     MapDataConstant.MAX_DISTANCE_BETWEEN_ADJACENT_AGV_FACTOR
                             );
                             List<String> waveCodeList = mapService.getWaveScopeByCode(lev, firstCodeNode, avoidDistance)

--
Gitblit v1.9.1