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