From 5c79d2221f27d384b97e0808e18d32fd29326dc5 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期五, 15 十一月 2024 14:48:40 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 31 ++++++++++++++++++++++++++----- 1 files changed, 26 insertions(+), 5 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 8a5d41f..6ec43b9 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 @@ -1,6 +1,7 @@ package com.zy.acs.manager.core.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zy.acs.common.utils.GsonUtils; import com.zy.acs.common.utils.RedisSupport; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.SnowflakeIdWorker; @@ -98,6 +99,8 @@ } } } + + // dead lane if (jamService.count(new LambdaQueryWrapper<Jam>() .eq(Jam::getJamAgv, agv.getId()) .eq(Jam::getJamSeg, segment.getId()) @@ -196,14 +199,17 @@ String agvNo = agv.getUuid(); 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<String> blackPath = this.getBlackPathList(unfinishedOriginJamByCurrAgv); // 缁撴灉闆� List<String> pathList = new ArrayList<>(); // 鏃犻殰纰嶈В - List<String> unlockPathList = mapService.checkoutPath(agvNo, startCode, endCode, false); + List<String> unlockPathList = mapService.checkoutPath(agvNo, startCode, endCode, false, blackPath); // 閬胯瑙� - List<String> lockPathList = mapService.checkoutPath(agvNo, startCode, endCode, true); + List<String> lockPathList = mapService.checkoutPath(agvNo, startCode, endCode, true, blackPath); if (!Cools.isEmpty(lockPathList) && // 瀛樺湪閬胯瑙� Math.abs(lockPathList.size() - unlockPathList.size()) <= Arrays.stream(mapDataDispatcher.getCodeMatrix(lev)).mapToInt(row -> row.length).sum() / 10 @@ -246,7 +252,8 @@ Integer maxJamTimeoutFactor = null; // persist jam data - jam = this.createOrUpdateJam(agv, startCode, segment, jam); + ArrayList<String> jamPath = new ArrayList<>(unlockPathList); + jam = this.createOrUpdateJam(agv, startCode, segment, jam, jamPath); // ? has unAvoidable block vehicles if (blockVehicleList.stream().anyMatch(blockVehicleDto -> !blockVehicleDto.isAvoidable())) { @@ -290,7 +297,7 @@ } // notify block vehicle to avoid - if (this.notifyVehicleAvoid(blockAgvNo, blockAgvCode, unlockPathList, agvNo, jam)) { + if (this.notifyVehicleAvoid(blockAgvNo, blockAgvCode, jamPath, agvNo, jam)) { if (jam.getCycleAvo() == 1) { jam.setCycleCode(endCode.getId()); } @@ -465,13 +472,14 @@ return true; } - private Jam createOrUpdateJam(Agv agv, Code startCode, Segment segment, Jam jam) { + private Jam createOrUpdateJam(Agv agv, Code startCode, Segment segment, Jam jam, List<String> jamPath) { if (jam == null) { jam = new Jam(); jam.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); jam.setJamAgv(agv.getId()); jam.setJamCode(startCode.getId()); jam.setJamSeg(segment.getId()); + jam.setJamPath(GsonUtils.toJson(jamPath)); jam.setStartTime(new Date()); jam.setState(JamStateType.RUNNING.toString()); if (!jamService.save(jam)) { @@ -487,4 +495,17 @@ return jam; } + private List<String> getBlackPathList(List<Jam> unfinishedOriginJamByCurrAgv) { + List<String> blackPathList = new ArrayList<>(); + if (!Cools.isEmpty(unfinishedOriginJamByCurrAgv)) { + for (Jam jam : unfinishedOriginJamByCurrAgv) { + if (!Cools.isEmpty(jam.getJamPath())) { + List<String> list = GsonUtils.fromJsonToList(jam.getJamPath(), String.class); + blackPathList.addAll(list); + } + } + } + return blackPathList.stream().distinct().collect(Collectors.toList()); + } + } -- Gitblit v1.9.1