From 4116d1a906514bf1920e4450fc6868191fe93bac Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 18 十一月 2024 11:06:51 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 40 +++++++++++++++++++++++++++++++--------- 1 files changed, 31 insertions(+), 9 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java index 6ec43b9..7729fe5 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java @@ -200,16 +200,16 @@ Date now = new Date(); Jam jam = jamService.getJam(agv.getId(), startCode.getId(), segment.getId()); // judge avoid of jam - List<Jam> unfinishedOriginJamByCurrAgv = jamService.hasUnfinishedOriginJamByAvo(agv.getId(), startCode.getId(), segment.getId()); + List<Jam> unfinishedOriginJamByCurrAgv = jamService.getUnfinishedOriginJamByAvo(agv.getId(), startCode.getId(), segment.getId()); List<String> blackPath = this.getBlackPathList(unfinishedOriginJamByCurrAgv); // 缁撴灉闆� List<String> pathList = new ArrayList<>(); // 鏃犻殰纰嶈В - List<String> unlockPathList = mapService.checkoutPath(agvNo, startCode, endCode, false, blackPath); + List<String> unlockPathList = mapService.checkoutPath(agvNo, startCode, endCode, false, blackPath, segment); // 閬胯瑙� - List<String> lockPathList = mapService.checkoutPath(agvNo, startCode, endCode, true, blackPath); + List<String> lockPathList = mapService.checkoutPath(agvNo, startCode, endCode, true, blackPath, segment); if (!Cools.isEmpty(lockPathList) && // 瀛樺湪閬胯瑙� Math.abs(lockPathList.size() - unlockPathList.size()) <= Arrays.stream(mapDataDispatcher.getCodeMatrix(lev)).mapToInt(row -> row.length).sum() / 10 @@ -271,10 +271,11 @@ } else { // select optimal block vehicle - String blockAgvNo = blockVehicleList.stream() - .filter(BlockVehicleDto::isAvoidable) - .map(BlockVehicleDto::getVehicle) - .findFirst().orElse(null); +// String blockAgvNo = blockVehicleList.stream() +// .filter(BlockVehicleDto::isAvoidable) +// .map(BlockVehicleDto::getVehicle) +// .findFirst().orElse(null); + String blockAgvNo = this.checkoutBestSolutionOfBlocks(blockVehicleList); // block vehicle info Agv blockAgv = agvService.selectByUuid(blockAgvNo); @@ -290,8 +291,11 @@ } // 鍒ゆ柇涓嬩釜浠诲姟鏄惁涓哄師鍦颁换鍔★紝濡傛灉鏄垯绛夊緟 ===>> 瓒呰繃绛夊緟鏃堕棿锛岀粫璺紱濡傛灉涓嶆槸锛岃闃诲杞﹁締閬胯 - Segment waitingSeg = segmentService.getJustWaitingSeg(blockAgv.getId()); - if (null != waitingSeg && waitingSeg.getEndNode().equals(codeService.selectByData(blockAgvCode).getId())) { + List<Segment> waitingSegList = segmentService.getJustWaitingSeg(blockAgv.getId()); + if (null != waitingSegList + && waitingSegList.stream().anyMatch( + waitingSeg -> waitingSeg.getEndNode().equals(codeService.selectByData(blockAgvCode).getId()) + )) { maxJamTimeoutFactor = 1; break; } @@ -437,6 +441,10 @@ List<Segment> waitingSegList = segmentService.getByAgvAndState(agv.getId(), SegmentStateType.WAITING.toString()); if (!Cools.isEmpty(waitingSegList)) { + if (waitingSegList.size() > 1) { + log.error("閬胯閫氱煡澶辫触锛寋}鍙疯溅杈嗗瓨鍦ㄥ涓瓑寰呬腑鐨凷egment锛侊紒锛�", agvNo); + return false; + } // revert Date now = new Date(); for (Segment seg : waitingSegList) { @@ -508,4 +516,18 @@ return blackPathList.stream().distinct().collect(Collectors.toList()); } + private String checkoutBestSolutionOfBlocks(List<BlockVehicleDto> blockVehicleList) { + assert !Cools.isEmpty(blockVehicleList); + for (BlockVehicleDto blockVehicleDto : blockVehicleList) { + if (!blockVehicleDto.isAvoidable()) { + continue; + } + // 娌℃湁閬胯涓殑浠诲姟 + if (Cools.isEmpty(jamService.getUnfinishedAvoSegByAvo(blockVehicleDto.getVehicle(), null))) { + return blockVehicleDto.getVehicle(); + } + } + return null; + } + } -- Gitblit v1.9.1