#
luxiaotao1123
2024-11-01 ce7ab380174cbffbe61efac1594ac5846eff83aa
#
1个文件已修改
97 ■■■■■ 已修改文件
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
@@ -173,103 +173,6 @@
        mapDataDispatcher.modifyDynamicMatrix(lev, pathList, agvNo);
    }
    public synchronized void unlockPath(String agvNo, List<String> nodeList) {
        try {
            StopWatch stopWatch = new StopWatch();
            stopWatch.start();
            if (Cools.isEmpty(agvNo, nodeList)) {
                return;
            }
            List<String> pathList = actionService.getPathListByAgv(agvNo).stream().distinct().collect(Collectors.toList());
            List<String> inTrace = new ArrayList<>();
            Set<String> outsideTrace = new HashSet<>();
            if (Cools.isEmpty(pathList)) {
                outsideTrace.addAll(nodeList);
            } else {
                int size = nodeList.size();
                for (String code : pathList) {
                    Iterator<String> iterator = nodeList.iterator();
                    while (iterator.hasNext()) {
                        String next = iterator.next();
                        if (next.equals(code)) {
                            if (!inTrace.contains(next)) {
                                inTrace.add(next);
                            }
                            iterator.remove();
                        }
                    }
                }
                assert inTrace.size() + nodeList.size() <= size;
                if (!Cools.isEmpty(nodeList)) {
                    outsideTrace.addAll(nodeList);
                }
                if (!Cools.isEmpty(inTrace)) {
                    String last = inTrace.get(inTrace.size() - 1);
                    int idx = pathList.indexOf(last);
                    inTrace = pathList.subList(0, idx + 1);
                }
            }
            List<String> resetCodeList = new ArrayList<>();
            Integer lev = null;
            DynamicNode[][] dynamicMatrix = mapDataDispatcher.getDynamicMatrix(lev);
            for (String code : inTrace) {
                int[] node = mapDataDispatcher.getCodeMatrixIdx(lev, code);
                DynamicNode dynamicNode = dynamicMatrix[node[0]][node[1]];
                if (dynamicNode.getVehicle().equals(agvNo)) {
                    resetCodeList.add(code);
                }
            }
            for (String code : outsideTrace) {
                int[] node = mapDataDispatcher.getCodeMatrixIdx(lev, code);
                DynamicNode dynamicNode = dynamicMatrix[node[0]][node[1]];
                if (dynamicNode.getVehicle().equals(agvNo)) {
                    resetCodeList.add(code);
                }
            }
            if (!Cools.isEmpty(resetCodeList)) {
                mapDataDispatcher.clearDynamicMatrixByCodeList(lev, resetCodeList);
            }
            stopWatch.stop();
            if (stopWatch.getTime() > 50) {
                log.info("解锁路径函数花费时间为:{}毫秒......", stopWatch.getTime());
            }
        } catch (Exception e) {
            log.error("TrafficService.unlockPath", e);
        }
    }
    public synchronized void unlockPath(String agvNo, String codeData) {
        try {
            StopWatch stopWatch = new StopWatch();