From 7fd4327861ee2b36af01ff526742b0704f713ccc Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 26 十一月 2024 15:00:42 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 25 ++++++++++++++++--------- 1 files changed, 16 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 f57cbd4..acfe085 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 @@ -9,6 +9,7 @@ import com.zy.acs.manager.common.utils.MapDataUtils; import com.zy.acs.manager.core.domain.BlockVehicleDto; import com.zy.acs.manager.core.domain.TaskPosDto; +import com.zy.acs.manager.core.domain.type.BlockSeverityType; import com.zy.acs.manager.core.service.astart.MapDataDispatcher; import com.zy.acs.manager.core.service.astart.RetreatNavigateNode; import com.zy.acs.manager.core.service.astart.WaveNodeType; @@ -199,6 +200,7 @@ String agvNo = agv.getUuid(); Date now = new Date(); Jam jam = jamService.getJam(agv.getId(), startCode.getId(), segment.getId()); + BlockSeverityType blockSeverity = BlockSeverityType.query(null == jam ? null : jam.getDuration()); // judge avoid of jam List<Jam> unfinishedOriginJamByCurrAgv = jamService.getUnfinishedOriginJamByAvo(agv.getId(), startCode.getId(), segment.getId()); List<String> blackPath = this.getBlackPathList(unfinishedOriginJamByCurrAgv); @@ -218,8 +220,18 @@ pathList = lockPathList; } else { + // preview path + List<String> draftPath = new ArrayList<>(unlockPathList); + if (blockSeverity.equals(BlockSeverityType.SEVERE)) { + unlockPathList.remove(endCode.getData()); + blackPath.addAll(unlockPathList); + List<String> newUnlockPathList = mapService.checkoutPath(agvNo, startCode, endCode, false, blackPath, segment); + if (!Cools.isEmpty(newUnlockPathList)) { + draftPath = newUnlockPathList; + } + } // 鍙蛋琛岃矾寰勯泦鍚堣绠� - List<BlockVehicleDto> blockVehicleList = this.slicePathAndReturnBlockVehicleList(lev, unlockPathList, agvNo, pathList); // jamAgvNo may was wave + List<BlockVehicleDto> blockVehicleList = this.slicePathAndReturnBlockVehicleList(lev, draftPath, agvNo, pathList); // jamAgvNo may was wave if (!Cools.isEmpty(pathList)) { @@ -252,8 +264,7 @@ Integer maxJamTimeoutFactor = null; // persist jam data - ArrayList<String> jamPath = new ArrayList<>(unlockPathList); - jam = this.createOrUpdateJam(agv, startCode, segment, jam, jamPath); + jam = this.createOrUpdateJam(agv, startCode, segment, jam, draftPath); // ? has unAvoidable block vehicles if (blockVehicleList.stream().anyMatch(blockVehicleDto -> !blockVehicleDto.isAvoidable())) { @@ -266,15 +277,11 @@ if (!Cools.isEmpty(jam.getAvoAgv()) && BlockVehicleDto.customContain(blockVehicleList, agvService.getById(jam.getAvoAgv()).getUuid())) { - maxJamTimeoutFactor = 10; + maxJamTimeoutFactor = 6; } else { // select optimal block vehicle -// String blockAgvNo = blockVehicleList.stream() -// .filter(BlockVehicleDto::isAvoidable) -// .map(BlockVehicleDto::getVehicle) -// .findFirst().orElse(null); String blockAgvNo = this.checkoutBestSolutionOfBlocks(blockVehicleList); if (Cools.isEmpty(blockAgvNo)) { @@ -306,7 +313,7 @@ } // notify block vehicle to avoid - if (this.notifyVehicleAvoid(blockAgvNo, blockAgvCode, jamPath, agvNo, jam)) { + if (this.notifyVehicleAvoid(blockAgvNo, blockAgvCode, draftPath, agvNo, jam)) { if (jam.getCycleAvo() == 1) { jam.setCycleCode(endCode.getId()); } -- Gitblit v1.9.1