From 46a1c6c2437c1341e1d7994d61b66eb27d40ae1b Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 09 十一月 2024 15:58:46 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/PatrolService.java |   75 +++++++++++++++++++++++++++++++++++--
 1 files changed, 70 insertions(+), 5 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/PatrolService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/PatrolService.java
index a40d879..e647b0c 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/PatrolService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/PatrolService.java
@@ -2,15 +2,28 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zy.acs.framework.common.R;
+import com.zy.acs.manager.core.service.MainService;
+import com.zy.acs.manager.core.service.MapService;
 import com.zy.acs.manager.manager.entity.Agv;
+import com.zy.acs.manager.manager.entity.AgvDetail;
+import com.zy.acs.manager.manager.entity.Code;
+import com.zy.acs.manager.manager.entity.Task;
 import com.zy.acs.manager.manager.enums.StatusType;
+import com.zy.acs.manager.manager.enums.TaskStsType;
+import com.zy.acs.manager.manager.enums.TaskTypeType;
+import com.zy.acs.manager.manager.service.AgvDetailService;
 import com.zy.acs.manager.manager.service.AgvService;
+import com.zy.acs.manager.manager.service.CodeService;
+import com.zy.acs.manager.manager.service.TaskService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.*;
 
@@ -28,6 +41,63 @@
 
     @Autowired
     private AgvService agvService;
+    @Autowired
+    private AgvDetailService agvDetailService;
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private MainService mainService;
+    @Autowired
+    private CodeService codeService;
+    @Autowired
+    private MapService mapService;
+
+    private void executePatrolLogic(String agvNo) {
+        this.patrolOfMove(agvNo);
+    }
+
+    private void patrolOfMove(String agvNo) {
+        Agv agv = agvService.selectByUuid(agvNo);
+        AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId());
+        if (taskService.count(new LambdaQueryWrapper<Task>()
+                .eq(Task::getAgvId, agv.getId())
+                .and(i -> {
+                    i.eq(Task::getTaskSts, TaskStsType.WAITING.val())
+                            .or().eq(Task::getTaskSts, TaskStsType.ASSIGN.val())
+                            .or().eq(Task::getTaskSts, TaskStsType.PROGRESS.val());
+                })) > 0) {
+            return;
+        }
+        if (!agvService.judgeEnable(agv.getId())) {
+            return;
+        }
+        Code randomCode = this.getRandomCode(agvDetail);
+        if (null == randomCode) {
+            return;
+        }
+        if (mainService.buildMinorTask(agv, agvDetail, TaskTypeType.MOVE, randomCode.getData())) {
+            log.info(agv.getUuid() + "寮�濮嬭蛋琛屾紨绀�...");
+        }
+    }
+
+    public Code getRandomCode(AgvDetail agvDetail) {
+        Code startCode = codeService.getById(agvDetail.getRecentCode());
+        List<String> notInCodeList = new ArrayList<>();
+        notInCodeList.add("00000061");
+        List<Code> list = codeService.list(new LambdaQueryWrapper<Code>().notIn(Code::getData, notInCodeList));
+        Collections.shuffle(list);
+        for (Code endCode : list) {
+            List<String> pathList = mapService.validFeasibility(startCode, endCode);
+            if (pathList.size() >= 5) {
+                return endCode;
+            }
+        }
+        return list.stream().findFirst().orElse(null);
+    }
+
+
+
+    // ---------------------------------------------------------------------------
 
     public boolean isPatrolling(String agvNo) {
         ScheduledFuture<?> scheduledFuture = AGV_PATROL_MAP.get(agvNo);
@@ -74,11 +144,6 @@
             log.error("鏈兘鎴愬姛鍋滄AGV " + agvNo + " 鐨勮窇搴撲换鍔°��");
             return R.error("鏈兘鎴愬姛鍋滄AGV " + agvNo + " 鐨勮窇搴撲换鍔°��");
         }
-    }
-
-    private void executePatrolLogic(String agvNo) {
-        // TODO: 鍦ㄨ繖閲屽疄鐜板叿浣撶殑璺戝簱涓氬姟閫昏緫
-        log.info("鎵цAGV " + agvNo + " 鐨勮窇搴撲换鍔°��");
     }
 
     @PostConstruct

--
Gitblit v1.9.1