From ebd2f4397a92c6a5096de1b86d59154363344720 Mon Sep 17 00:00:00 2001 From: vincentlu <t1341870251@gmail.com> Date: 星期二, 13 五月 2025 08:48:15 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java | 104 ++++++++++++++-------------------------------------- 1 files changed, 28 insertions(+), 76 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 b52ae15..2fdaf0b 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 @@ -4,8 +4,14 @@ import com.zy.acs.common.utils.RedisSupport; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.R; +import com.zy.acs.manager.core.constant.AgvAreaDispatcher; import com.zy.acs.manager.core.cache.CoreCache; -import com.zy.acs.manager.manager.entity.*; +import com.zy.acs.manager.core.domain.CodeStepDto; +import com.zy.acs.manager.core.domain.type.JobType; +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.Travel; import com.zy.acs.manager.manager.enums.StatusType; import com.zy.acs.manager.manager.enums.TaskTypeType; import com.zy.acs.manager.manager.enums.TravelStateType; @@ -45,17 +51,8 @@ }}; private List<String> CONVEYOR_PICK_CODE_DATA_CACHE = new ArrayList<String>(){{ - add("00000246"); + add("00000146"); }}; - - private Map<String, JobType> agvJobMap = new ConcurrentHashMap<>(); - public enum JobType { - CONVEYOR_PICK, - CONVEYOR_DROP, - LOC_PICK, - LOCK_DROP, - ; - } @Autowired private AgvService agvService; @@ -91,9 +88,9 @@ return; } - JobType jobType = this.agvJobMap.get(agvNo); + JobType jobType = CoreCache.AGV_MOCK_JOB_CACHE.get(agvNo); if (null == jobType) { - this.agvJobMap.put(agvNo, JobType.LOC_PICK); + CoreCache.AGV_MOCK_JOB_CACHE.put(agvNo, JobType.LOC_PICK); CoreCache.AGV_BACKPACK_USED_CACHE.put(agvId, 0); jobType = JobType.LOC_PICK; } @@ -101,6 +98,7 @@ String destinationCodeData = null; switch (jobType) { case LOC_PICK: + // 5, 4, 3, 2, 1 int locPickRemaining = agvService.getBackpackRemainingCapacity(agvId); if (0 < locPickRemaining) { destinationCodeData = this.getLocCode(agvNo, null); @@ -113,8 +111,9 @@ destinationCodeData = this.getConveyorPickCode(agvNo); break; case LOCK_DROP: + // 0, 1, 2, 3, 4 int locDropRemaining = agvService.getBackpackRemainingCapacity(agvId); - if (0 < locDropRemaining) { + if (locDropRemaining < agvModelService.getByAgvId(agvId).getBackpack()) { destinationCodeData = this.getLocCode(agvNo, null); } break; @@ -128,40 +127,8 @@ if (mainLockWrapService.buildMinorTask(agvId, TaskTypeType.MOVE, destinationCodeData, null)) { log.info( "{}寮�濮嬩綔涓氭紨绀�...", agvNo); - switch (jobType) { - case LOC_PICK: - Integer usedSlotsByLocPick = CoreCache.AGV_BACKPACK_USED_CACHE.get(agvId); - usedSlotsByLocPick++; - if (Objects.equals(agvModelService.getByAgvId(agvId).getBackpack(), usedSlotsByLocPick)) { - this.agvJobMap.put(agvNo, JobType.CONVEYOR_DROP); - } else { - CoreCache.AGV_BACKPACK_USED_CACHE.put(agvId, usedSlotsByLocPick); - } - break; - case CONVEYOR_DROP: - CoreCache.AGV_BACKPACK_USED_CACHE.put(agvId, 0); - - this.agvJobMap.put(agvNo, JobType.CONVEYOR_PICK); - break; - case CONVEYOR_PICK: - CoreCache.AGV_BACKPACK_USED_CACHE.put(agvId, agvModelService.getByAgvId(agvId).getBackpack()); - - this.agvJobMap.put(agvNo, JobType.LOCK_DROP); - break; - case LOCK_DROP: - Integer usedSlotsByLocDrop = CoreCache.AGV_BACKPACK_USED_CACHE.get(agvId); - usedSlotsByLocDrop--; - - if (usedSlotsByLocDrop == 0) { - this.agvJobMap.put(agvNo, JobType.LOC_PICK); - } else { - CoreCache.AGV_BACKPACK_USED_CACHE.put(agvId, usedSlotsByLocDrop); - } - break; - default: - break; - } + CoreCache.AGV_MOCK_STEP_CACHE.put(agvId, CodeStepDto.build(destinationCodeData, jobType)); } } @@ -233,30 +200,14 @@ Code startCode = codeService.getCacheById(agvDetail.getRecentCode()); - Set<String> notInCodeSet = new HashSet<>(); - notInCodeSet.add("00000301"); - notInCodeSet.add("00000302"); - notInCodeSet.add("00000303"); - notInCodeSet.add("00000351"); - notInCodeSet.add("00000353"); - notInCodeSet.add("00000401"); - notInCodeSet.add("00000402"); + List<String> codeList = AgvAreaDispatcher.AGV_AREA.get(agvNo); + List<String> disableCodeList = AgvAreaDispatcher.AGV_DISABLE_AREA.get(agvNo); + if (!Cools.isEmpty(codeList)) { + Collections.shuffle(codeList); + } - notInCodeSet.add("00000311"); - notInCodeSet.add("00000312"); - notInCodeSet.add("00000313"); - notInCodeSet.add("00000361"); - notInCodeSet.add("00000363"); - notInCodeSet.add("00000411"); - notInCodeSet.add("00000412"); - - notInCodeSet.add("00000046"); - notInCodeSet.add("00000047"); - - Collections.shuffle(CODE_DATA_CACHE); - - for (String endCodeData : CODE_DATA_CACHE) { - if (notInCodeSet.contains(endCodeData)) { continue; } + for (String endCodeData : codeList) { + if (disableCodeList.contains(endCodeData)) { continue; } Code endCode = codeService.getCacheByData(endCodeData); // valid lane @@ -271,7 +222,7 @@ } } - return CODE_DATA_CACHE.stream().findFirst().orElse(null); + return codeList.stream().findFirst().orElse(null); } // --------------------------------------------------------------------------- @@ -291,10 +242,10 @@ Runnable patrolTask = () -> { try { -// executePatrolLogic(agvNo); - executeUShapeConveyor(agvNo); + executePatrolLogic(agvNo); +// executeUShapeConveyor(agvNo); } catch (Exception e) { - log.error("鎵цAGV{}璺戝簱浠诲姟鏃跺彂鐢熷紓甯�: {}", agvNo, e.getMessage()); + log.error("鎵цAGV{}璺戝簱浠诲姟鏃跺彂鐢熷紓甯�", agvNo, e); } }; @@ -317,8 +268,9 @@ if (cancelled) { AGV_PATROL_MAP.remove(agvNo); CoreCache.AGV_BACKPACK_USED_CACHE.remove(agvId); - this.agvJobMap.remove(agvNo); - log.info("宸插仠姝GV " + agvNo + " 鐨勮窇搴撲换鍔°��"); + CoreCache.AGV_MOCK_STEP_CACHE.remove(agvId); + CoreCache.AGV_MOCK_JOB_CACHE.remove(agvNo); + log.info("宸插仠姝GV {} 鐨勮窇搴撲换鍔°��", agvNo); return R.ok("宸插仠姝GV " + agvNo + " 鐨勮窇搴撲换鍔°��"); } else { log.error("鏈兘鎴愬姛鍋滄AGV " + agvNo + " 鐨勮窇搴撲换鍔°��"); -- Gitblit v1.9.1