#
vincentlu
2 天以前 7ce12b33107fb33941df7e1589bf1a6716539377
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
@@ -300,7 +300,7 @@
        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);
        List<String> blackPath = this.getBlackPathList(agvNo, unfinishedOriginJamByCurrAgv);
        // 结果集
        List<String> pathList = new ArrayList<>();
@@ -652,17 +652,23 @@
        }
    }
    private List<String> getBlackPathList(List<Jam> unfinishedOriginJamByCurrAgv) {
    private List<String> getBlackPathList(String agvNo, List<Jam> unfinishedOriginJamByCurrAgv) {
        List<String> blackPathList = new ArrayList<>();
        Integer lev = MapDataDispatcher.MAP_DEFAULT_LEV;
        if (!Cools.isEmpty(unfinishedOriginJamByCurrAgv)) {
        if (Cools.isEmpty(unfinishedOriginJamByCurrAgv)) {
            return blackPathList;
        }
        AgvModel agvModel = agvModelService.getByAgvNo(agvNo);
        double bufferRadius = MapDataUtils.buildFootprint(agvModel).maxExtent();
            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 = mapService.queryCodeListFromDynamicNode(lev, jamAgv.getUuid());
                String jamAgvNo = agvService.getAgvNo(jam.getJamAgv());
                List<String> jamDynamicNodes = mapService.queryCodeListFromDynamicNode(lev, jamAgvNo);
                    // jamDynamicNodes has sorted
                    String firstCodeNode = jamDynamicNodes.stream().findFirst().orElse(null);
@@ -672,10 +678,8 @@
                            list = new ArrayList<>(list.subList(idx, list.size()));
                            // the wave of first node
                            Double avoidDistance = MapDataUtils.getVehicleWaveSafeDistance(
                                    agvModelService.getByAgvId(jamAgv.getId()).getDiameter(),
                                    MapDataConstant.MAX_DISTANCE_BETWEEN_ADJACENT_AGV_FACTOR
                            );
                        AgvModel jamAgvModel = agvModelService.getByAgvNo(jamAgvNo);
                        Double avoidDistance = MapDataUtils.buildFootprint(jamAgvModel).maxExtent() + bufferRadius;
                            List<String> waveCodeList = mapService.getWaveScopeByCode(lev, firstCodeNode, avoidDistance)
                                    .stream().map(NavigateNode::getCodeData).distinct().collect(Collectors.toList());
                            list.addAll(waveCodeList);
@@ -688,7 +692,7 @@
                    blackPathList.addAll(list);
                }
            }
        }
        return blackPathList.stream().distinct().collect(Collectors.toList());
    }