From 500f6ce071c0bc14d6720354ce148599ac3f35ee Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 25 十月 2024 15:38:42 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MissionAssignService.java |   56 +++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 49 insertions(+), 7 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MissionAssignService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MissionAssignService.java
index e99c90e..cc5973b 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MissionAssignService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MissionAssignService.java
@@ -15,6 +15,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -34,6 +35,49 @@
     private ConfigService configService;
     @Autowired
     private TaskService taskService;
+    @Autowired
+    private LaneService laneService;
+
+    /**
+     * get available agv list which is idle
+     */
+    private List<Agv> getAvailableAgv() {
+        List<Agv> result = new ArrayList<>();
+        List<Agv> agvList = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, 1));
+        Collections.shuffle(agvList);
+        for (Agv agv : agvList) {
+
+            // 1. without running tasks
+            if (0 < taskService.count(new LambdaQueryWrapper<Task>()
+                    .eq(Task::getAgvId, agv.getId())
+                    .and(i ->
+                            i.eq(Task::getTaskSts, TaskStsType.ASSIGN.val())
+                            .or().eq(Task::getTaskSts, TaskStsType.PROGRESS.val())
+                    )
+            )) {
+                continue;
+            }
+
+            // 2. in idle status
+            if (!agvService.judgeEnable(agv.getId(), true)) {
+                continue;
+            }
+
+            result.add(agv);
+        }
+
+        return result;
+    }
+
+    public synchronized Agv execute(Task task) {
+        List<Agv> availableAgvList = getAvailableAgv();
+        if (Cools.isEmpty(availableAgvList)) {
+            return null;
+        }
+
+
+        return null;
+    }
 
     public synchronized Agv execute(Task task, Map<String, List<Long>> taskAllot, List<Long> taskIds) {
         String oriLocNo = task.getOriLoc$();
@@ -43,7 +87,7 @@
 
         Agv hit = null;
 
-        List<Agv> agvList = agvService.list(new LambdaQueryWrapper<>());
+        List<Agv> agvList = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, 1));
         Collections.shuffle(agvList);
         for (Agv agv : agvList) {
             AgvModel agvModel = agvModelService.getById(agv.getAgvModel());
@@ -66,9 +110,8 @@
                 log.info(agv.getUuid() + "鍙稟GV涓嶅彲鐢紝宸茬粡瀛樺湪杩涜涓殑浠诲姟...");
                 continue;
             }
-            final Agv finalAgv = agv;
-            if (!agvService.judgeEnable(finalAgv.getId(), agvDetail -> agvDetail.getVol() > finalAgv.getChargeLine())) {
-                log.info(finalAgv.getUuid() + "鍙稟GV涓嶅彲鐢紝" + task.getSeqNum() + "浠诲姟鏃犳硶璁$畻...");
+            if (!agvService.judgeEnable(agv.getId(), true)) {
+                log.info(agv.getUuid() + "鍙稟GV涓嶅彲鐢紝" + task.getSeqNum() + "浠诲姟鏃犳硶璁$畻...");
                 continue;
             }
 
@@ -113,9 +156,8 @@
             log.info(agv.getUuid() + "鍙稟GV涓嶅彲鐢紝宸茬粡瀛樺湪杩涜涓殑浠诲姟...");
             return null;
         }
-        final Agv finalAgv = agv;
-        if (!agvService.judgeEnable(finalAgv.getId(), agvDetail -> agvDetail.getVol() > finalAgv.getChargeLine())) {
-            log.info(finalAgv.getUuid() + "鍙稟GV涓嶅彲鐢紝" + task.getSeqNum() + "浠诲姟鏃犳硶璁$畻...");
+        if (!agvService.judgeEnable(agv.getId(), true)) {
+            log.info(agv.getUuid() + "鍙稟GV涓嶅彲鐢紝" + task.getSeqNum() + "浠诲姟鏃犳硶璁$畻...");
             return null;
         }
 

--
Gitblit v1.9.1