From c514b7d8ad8a3f89b81c949e265446b4f09a4bb5 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 20 十一月 2024 16:46:30 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 83 ++++++++++++++++++++++++++--------------- 1 files changed, 52 insertions(+), 31 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 7729fe5..f57cbd4 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 @@ -276,46 +276,53 @@ // .map(BlockVehicleDto::getVehicle) // .findFirst().orElse(null); String blockAgvNo = this.checkoutBestSolutionOfBlocks(blockVehicleList); + if (Cools.isEmpty(blockAgvNo)) { - // block vehicle info - Agv blockAgv = agvService.selectByUuid(blockAgvNo); - String blockAgvCode = codeService.getById(agvDetailService.selectByAgvId(blockAgv.getId()).getRecentCode()).getData(); + maxJamTimeoutFactor = 2; - do { + } else { - // 闃诲杞﹁締姝e湪鍘熷湴浣滀笟锛岀瓑寰� ===>> 瓒呰繃绛夊緟鏃堕棿锛岀粫璺� - List<Segment> runningSegList = segmentService.getByAgvAndState(blockAgv.getId(), SegmentStateType.RUNNING.toString()); - if (!Cools.isEmpty(runningSegList)) { - maxJamTimeoutFactor = 1; - break; - } + // block vehicle info + Agv blockAgv = agvService.selectByUuid(blockAgvNo); + String blockAgvCode = codeService.getById(agvDetailService.selectByAgvId(blockAgv.getId()).getRecentCode()).getData(); - // 鍒ゆ柇涓嬩釜浠诲姟鏄惁涓哄師鍦颁换鍔★紝濡傛灉鏄垯绛夊緟 ===>> 瓒呰繃绛夊緟鏃堕棿锛岀粫璺紱濡傛灉涓嶆槸锛岃闃诲杞﹁締閬胯 - List<Segment> waitingSegList = segmentService.getJustWaitingSeg(blockAgv.getId()); - if (null != waitingSegList - && waitingSegList.stream().anyMatch( - waitingSeg -> waitingSeg.getEndNode().equals(codeService.selectByData(blockAgvCode).getId()) - )) { - maxJamTimeoutFactor = 1; - break; - } + do { - // notify block vehicle to avoid - if (this.notifyVehicleAvoid(blockAgvNo, blockAgvCode, jamPath, agvNo, jam)) { - if (jam.getCycleAvo() == 1) { - jam.setCycleCode(endCode.getId()); + // 闃诲杞﹁締姝e湪鍘熷湴浣滀笟锛岀瓑寰� ===>> 瓒呰繃绛夊緟鏃堕棿锛岀粫璺� + List<Segment> runningSegList = segmentService.getByAgvAndState(blockAgv.getId(), SegmentStateType.RUNNING.toString()); + if (!Cools.isEmpty(runningSegList)) { + maxJamTimeoutFactor = 1; + break; } - jam.setAvoAgv(blockAgv.getId()); - jam.setNotifyTime(new Date()); - if (!jamService.updateById(jam)) { - throw new CoolException(jam.getUuid() + "-jam failed to update锛侊紒锛�"); + + // 鍒ゆ柇涓嬩釜浠诲姟鏄惁涓哄師鍦颁换鍔★紝濡傛灉鏄垯绛夊緟 ===>> 瓒呰繃绛夊緟鏃堕棿锛岀粫璺紱濡傛灉涓嶆槸锛岃闃诲杞﹁締閬胯 + List<Segment> waitingSegList = segmentService.getJustWaitingSeg(blockAgv.getId()); + if (null != waitingSegList + && waitingSegList.stream().anyMatch( + waitingSeg -> waitingSeg.getEndNode().equals(codeService.selectByData(blockAgvCode).getId()) + )) { + maxJamTimeoutFactor = 1; + break; } - } else { - maxJamTimeoutFactor = 1; - } + // notify block vehicle to avoid + if (this.notifyVehicleAvoid(blockAgvNo, blockAgvCode, jamPath, agvNo, jam)) { + if (jam.getCycleAvo() == 1) { + jam.setCycleCode(endCode.getId()); + } + jam.setAvoAgv(blockAgv.getId()); + jam.setNotifyTime(new Date()); + if (!jamService.updateById(jam)) { + throw new CoolException(jam.getUuid() + "-jam failed to update锛侊紒锛�"); + } + } else { - } while (false); + maxJamTimeoutFactor = 1; + } + + } while (false); + } + } } @@ -508,7 +515,21 @@ if (!Cools.isEmpty(unfinishedOriginJamByCurrAgv)) { for (Jam jam : unfinishedOriginJamByCurrAgv) { if (!Cools.isEmpty(jam.getJamPath())) { + List<String> list = GsonUtils.fromJsonToList(jam.getJamPath(), String.class); + + Agv jamAgv = agvService.getById(jam.getJamAgv()); + List<String> jamDynamicNodes = mapDataDispatcher.queryCodeListFromDynamicNode(null, jamAgv.getUuid()); + // jamDynamicNodes has sorted + String firstCodeNode = jamDynamicNodes.stream().findFirst().orElse(null); + + if (!Cools.isEmpty(firstCodeNode)) { + int idx = list.indexOf(firstCodeNode); + if (idx != -1) { + list = new ArrayList<>(list.subList(idx, list.size())); + } + } + blackPathList.addAll(list); } } -- Gitblit v1.9.1