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