From 9f19c2ea1a1d4e94460eb2d881b7cf8cc10e66df Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期四, 14 十一月 2024 10:42:10 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java | 44 +++++++++++++++++++++++++++++++++++++------- 1 files changed, 37 insertions(+), 7 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java index f663212..2dc8122 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java @@ -14,6 +14,7 @@ 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 com.zy.acs.manager.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -47,14 +48,18 @@ private AgvDetailService agvDetailService; @Autowired private TaskService taskService; -// @Autowired -// private MainService mainService; @Autowired private MainLockWrapService mainLockWrapService; @Autowired private CodeService codeService; @Autowired private MapService mapService; + @Autowired + private LaneService laneService; + @Autowired + private AllocateService allocateService; + @Autowired + private ConfigService configService; private void executePatrolLogic(String agvNo) { this.patrolOfMove(agvNo); @@ -75,30 +80,55 @@ if (!agvService.judgeEnable(agv.getId())) { return; } - Code randomCode = this.getRandomCode(agvDetail); - if (null == randomCode) { + Code destinationCode = this.getDestinationCode(agv, agvDetail); + if (null == destinationCode) { return; } - if (mainLockWrapService.buildMinorTask(agv, agvDetail, TaskTypeType.MOVE, randomCode.getData())) { + if (mainLockWrapService.buildMinorTask(agv, agvDetail, TaskTypeType.MOVE, destinationCode.getData())) { log.info(agv.getUuid() + "寮�濮嬭蛋琛屾紨绀�..."); } } - public Code getRandomCode(AgvDetail agvDetail) { + /** + * buildMinorTask 娌℃湁璁剧疆lane锛宭ane鍙渶瑕佸叧娉ㄨ捣濮嬬偣锛堣蛋琛屽彧闇�瑕佸叧娉ㄧ粓鐐癸級 + * 4涓湴鏂硅皟鐢ㄤ簡buildMinorTask锛屽湪浠�涔堟椂鍊欍�佸摢閲岃缃畉ask鐨刲ane + * ( + * HandlerController, 鎵嬪姩 锛堟墜鍔ㄦ槸鍚﹂渶瑕佸垽鏂璴ane锛� + * MaintainScheduler, 鑷姩 锛堜竴鑸笉闇�瑕佽�冭檻 lane锛� + * PatrolService, 鑷姩 锛堥渶瑕侀澶勭悊 lane锛� 鉁� + * TrafficService, 鑷姩 锛堝鍧�鏃跺凡缁忓鐞嗚繃 lane锛� 鉁� + * ) + * 璇勪及HandlerController娌℃湁璋冪敤buildMajorTask锛屾墜鍔ㄥ垱寤簍ask鐨勫彲琛屾�� + * patrolOfMove娌℃湁鍒ゆ柇lane鐨勫閲� + * 鎶㈠崰寰呮満浣� + * agv鍦板浘鍥炬爣鍙樺寲 + */ + public Code getDestinationCode(Agv agv, AgvDetail agvDetail) { + Integer maxAgvCountInLane = configService.getVal("maxAgvCountInLane", Integer.class); + Code startCode = codeService.getById(agvDetail.getRecentCode()); + List<String> notInCodeList = new ArrayList<>(); notInCodeList.add("00000151"); List<Code> list = codeService.list(new LambdaQueryWrapper<Code>().notIn(Code::getData, notInCodeList)); + Collections.shuffle(list); + for (Code endCode : list) { + // valid lane + if (!allocateService.validCapacityOfLane(agv, endCode)) { + continue; + } + + // valid path length List<String> pathList = mapService.validFeasibility(startCode, endCode); if (pathList.size() >= 5) { return endCode; } } + return list.stream().findFirst().orElse(null); } - // --------------------------------------------------------------------------- -- Gitblit v1.9.1