From 8bc919a3a4ad7f690ad5269628f4405df1a896b8 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期四, 18 十二月 2025 15:03:19 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java |   74 ++++++++++++++++++++++++++++++++++--
 1 files changed, 69 insertions(+), 5 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 f1a45ae..0ab5997 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
@@ -6,13 +6,12 @@
 import com.zy.acs.framework.common.Cools;
 import com.zy.acs.framework.common.SnowflakeIdWorker;
 import com.zy.acs.manager.common.domain.TaskDto;
-import com.zy.acs.manager.core.service.MainLockWrapService;
-import com.zy.acs.manager.core.service.MainService;
-import com.zy.acs.manager.core.service.TrafficService;
+import com.zy.acs.manager.core.service.*;
 import com.zy.acs.manager.manager.controller.param.OpenBusSubmitParam;
 import com.zy.acs.manager.manager.entity.*;
 import com.zy.acs.manager.manager.enums.*;
 import com.zy.acs.manager.manager.service.*;
+import com.zy.acs.manager.manager.service.impl.CodeServiceImpl;
 import com.zy.acs.manager.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -53,8 +52,14 @@
     private AgvModelService agvModelService;
     @Autowired
     private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private AgvAreaDispatcher agvAreaDispatcher;
+    @Autowired
+    private AreaGovernService areaGovernService;
+    @Autowired
+    private CodeServiceImpl codeService;
 
-//    @Scheduled(fixedRate = 500) // 鍥哄畾棰戠巼鎵ц锛屼笉鍚屾
+    //    @Scheduled(fixedRate = 500) // 鍥哄畾棰戠巼鎵ц锛屼笉鍚屾
     @Scheduled(fixedDelay = 1000) // 鍥哄畾棰戠巼鎵ц锛屽悓姝�
 //    @Scheduled(cron = "0/1 * * * * ? ")
     private void execute() {
@@ -91,7 +96,7 @@
             return;
         }
 
-        // STOCK
+        // STOCK STA
         LambdaQueryWrapper<Sta> stockWrapper = new LambdaQueryWrapper<Sta>()
                 .eq(Sta::getStaSts, StaStsType.STOCK.val())
                 .eq(Sta::getStatus, StatusType.ENABLE.val)
@@ -127,6 +132,65 @@
         mainService.generateBusAndTask(param, memo);
     }
 
+    private void runStaToLoc0(String memo) {
+        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
+        if (null == agvModel) { return; }
+
+        // STOCK STA
+        List<Sta> stockList = staService.list(new LambdaQueryWrapper<Sta>()
+                .eq(Sta::getStaSts, StaStsType.STOCK.val())
+                .eq(Sta::getStatus, StatusType.ENABLE.val));
+        if (Cools.isEmpty(stockList)) { return; }
+        Collections.shuffle(stockList);
+
+        OpenBusSubmitParam param = new OpenBusSubmitParam();
+        param.setBatch(String.valueOf(snowflakeIdWorker.nextId()).substring(13, 19));
+        for (int i = 0; i < Math.min(agvModel.getBackpack(), stockList.size()) ; i++) {
+            Sta stockSta = stockList.get(i);
+            String staCode = stockSta.getCode$();
+
+            Loc idleLoc = null;
+
+            // 鎵�鍦ㄥ尯鍩熺殑鏉$爜锛屽鏋滄病鏈塧rea缁戝畾锛屽氨鍏ㄥ湴鍥�
+            List<String> codeList = areaGovernService.queryCodesByOneCode(staCode);
+            if (Cools.isEmpty(codeList)) {
+                idleLoc = locService.selectRandOneByLocSts(LocStsType.IDLE.val());
+            } else {
+                Collections.shuffle(codeList);
+                for (String codeData : codeList) {
+                    Code code = codeService.getCacheByData(codeData);
+                    if (null == code) { break; }
+                    List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>()
+                            .eq(Loc::getCode, code.getId()).eq(Loc::getLocSts, LocStsType.IDLE.val()));
+                    if (Cools.isEmpty(locList)) {
+                        break;
+                    } else if (locList.size() == 1) {
+                        idleLoc = locList.get(0);
+                    } else {
+                        Collections.shuffle(locList);
+                        idleLoc = locList.get(0);
+                    }
+                    if (null != idleLoc) {
+                        break;
+                    }
+                }
+            }
+
+            if (null == idleLoc) { break; }
+
+            TaskDto taskDto = new TaskDto();
+            taskDto.setOriSta(stockSta.getStaNo());
+            taskDto.setDestLoc(idleLoc.getLocNo());
+            taskDto.setPriority(100);
+            taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(15, 19));
+
+            param.getTaskList().add(taskDto);
+        }
+        if (Cools.isEmpty(param.getTaskList())) { return; }
+
+        mainService.generateBusAndTask(param, memo);
+    }
+
     // 鍑哄簱
     private void runLocToSta(String memo) {
 //        Integer startRow = Collections.min(locGroupList);

--
Gitblit v1.9.1