#
vincentlu
2025-01-14 aaa515911eef34e2263ce8baa6f860025fd6060d
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AvoidWaveCalculator.java
@@ -115,8 +115,10 @@
            }
            stopWatch.stop();
            if (stopWatch.getTime() > 100) {
                log.info("滤波函数花费时间为:{}毫秒......", stopWatch.getTime());
            if (stopWatch.getTime() > 0) {
                if (stopWatch.getTime() > 50) {
                    log.info("滤波函数花费时间为:{}毫秒......", stopWatch.getTime());
                }
            }
        }
    }
@@ -177,6 +179,7 @@
    }
    private boolean calcWaveScopeByJava(Integer lev) throws Exception {
        AgvModel agvModel = agvModelService.selectByType(AgvModelType.CTU_BOX_TRANSPORT_AGV.toString());    // can be optimized
        Double avoidDistance = MapDataUtils.getVehicleWaveSafeDistance(agvModel.getDiameter(), MapDataConstant.MAX_DISTANCE_BETWEEN_ADJACENT_AGV_FACTOR);
@@ -185,15 +188,16 @@
        String[][] waveMatrix = mapDataDispatcher.initWaveMatrix(lev);
        // lock path
        long time = 0;
        DynamicNode[][] dynamicMatrix = mapDataDispatcher.getDynamicMatrix(lev);
        for (int i = 0; i < dynamicMatrix.length; i++) {
            for (int j = 0; j < dynamicMatrix[i].length; j++) {
                DynamicNode dynamicNode = dynamicMatrix[i][j];
                String vehicle = dynamicNode.getVehicle();
                if (!DynamicNodeType.ACCESS.val.equals(vehicle) && !DynamicNodeType.BLOCK.val.equals(vehicle)) {
                    long startTime = System.currentTimeMillis();
                    List<NavigateNode> includeList = mapService.getWaveScopeByCode(lev, codeMatrix[i][j], avoidDistance);
                    time += System.currentTimeMillis() - startTime;
                    for (NavigateNode navigateNode : includeList) {
                        String waveNode = waveMatrix[navigateNode.getX()][navigateNode.getY()]; // overlay
                        waveMatrix[navigateNode.getX()][navigateNode.getY()] = MapDataUtils.generateWaveNode(waveNode, vehicle);
@@ -204,7 +208,7 @@
//            mapDataDispatcher.printMatrix(waveMatrix);
        mapDataDispatcher.setWaveMatrix(lev, waveMatrix);
        System.out.println("calcWaveScopeByJava " + time);
        return true;
    }
@@ -241,7 +245,7 @@
            }
            Agv agv = agvService.selectByUuid(agvNo);
            AgvModel agvModel = agvModelService.getById(agv.getAgvModel());
            AgvModel agvModel = agvModelService.getByAgvNo(agvNo);
            Double avoidDistance = MapDataUtils.getVehicleWaveSafeDistance(agvModel.getDiameter(), MapDataConstant.MAX_DISTANCE_BETWEEN_ADJACENT_AGV_FACTOR);
            String[][] waveMatrix = mapDataDispatcher.getWaveMatrix(lev);
@@ -297,7 +301,7 @@
        DynamicNode dynamicNode = dynamicMatrix[codeMatrixIdx[0]][codeMatrixIdx[1]];
        String vehicle = dynamicNode.getVehicle();
        if (vehicle.equals(DynamicNodeType.ACCESS.val)) {
            mapDataDispatcher.modifyDynamicMatrix(null, Utils.singletonList(code.getData()), agv.getUuid());
            mapDataDispatcher.modifyDynamicMatrix(null, Utils.singletonList(codeMatrixIdx), agv.getUuid());
        }
    }