#
luxiaotao1123
2024-12-30 3d7bf12a7d6f139624a2dacd1bd80781d7f658e5
#
6个文件已修改
84 ■■■■■ 已修改文件
zy-acs-flow/src/map/constants.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/constants.js
@@ -1,5 +1,5 @@
export const ANIMATE_DURING_TIME = 300;
export const ANIMATE_DURING_TIME = 600;
export const MAP_DEFAULT_ROTATION = 270;
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java
@@ -33,7 +33,7 @@
@Component
public class MapDataWsScheduler {
    public static final int WEBSOCKET_BROADCAST_INTERVAL = 300;
    public static final int WEBSOCKET_BROADCAST_INTERVAL = 600;
    private ExecutorService singleThreadExecutor;
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
@@ -37,6 +37,8 @@
    private final Map<String, List<String>> adjacencyCodeMap = new HashMap<>();
    private final Map<String, List<int[]>> laneCodeIdxMap = new HashMap<>();
    private boolean initialized = Boolean.FALSE;
    @Autowired
@@ -47,6 +49,10 @@
    private SnowflakeIdWorker snowflakeIdWorker;
    @Autowired
    private ConfigService configService;
    @Autowired
    private MapDataDispatcher mapDataDispatcher;
    // service -------------------------------------------------------
    public Boolean isInitialized() {
        return this.initialized;
@@ -64,13 +70,25 @@
        return null;
    }
    public List<int[]> getLaneCodeIdxList(String codeData) {
        if (Cools.isEmpty(codeData)) {
            return new ArrayList<>();
        }
        List<int[]> list = this.laneCodeIdxMap.get(codeData);
        if (null == list) {
            return new ArrayList<>();
        }
        return list;
    }
    // launcher -------------------------------------------------------
    @PostConstruct
    public void init() {
        Integer lev = MapDataDispatcher.MAP_DEFAULT_LEV;
        String laneDataStr = redis.getValue(RedisConstant.MAP_LANE_DATA, String.valueOf(lev));
        if (!Cools.isEmpty(laneDataStr)) {
            this.lanes = GsonUtils.fromJsonToList(laneDataStr, Lane.class);
            this.initialized = Boolean.TRUE;
        } else {
            StopWatch stopWatch = new StopWatch();
@@ -84,6 +102,8 @@
            redis.setValue(RedisConstant.MAP_LANE_DATA, String.valueOf(lev), GsonUtils.toJson(this.lanes));
        }
        this.generateLaneCodeIdx(null);
        this.initialized = Boolean.TRUE;
//        System.out.println(GsonUtils.toJson(this.lanes));
    }
@@ -104,7 +124,6 @@
        this.generateLaneHash();
        this.initialized = Boolean.TRUE;
        log.info("the lane data initialization has been completed in rcs system.");
    }
@@ -327,4 +346,19 @@
        return sb.toString();
    }
    public void generateLaneCodeIdx(Integer lev) {
        log.info("There is initializing Lane CodeIdxMap......");
        long l = System.currentTimeMillis();
        if (Cools.isEmpty(this.lanes)) {
            return;
        }
        for (Lane lane : this.lanes) {
            List<int[]> codeIdxList = new ArrayList<>();
            for (String code : lane.getCodes()) {
                int[] codeMatrixIdx = mapDataDispatcher.getCodeMatrixIdx(lev, code);
                codeIdxList.add(codeMatrixIdx);
                this.laneCodeIdxMap.put(code, codeIdxList);
            }
        }
    }
}
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
@@ -212,7 +212,7 @@
            for (int i = 0; i < dynamicMatrix.length; i++) {
                for (int j = 0; j < dynamicMatrix[i].length; j++) {
                    if (i == codeMatrixIdx[0] && j == codeMatrixIdx[1]) { continue; }
//                    if (i == codeMatrixIdx[0] && j == codeMatrixIdx[1]) { continue; }
                    DynamicNode node = dynamicMatrix[i][j];
                    if (node.getVehicle().equals(agvNo)) {
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/RetreatNavigateService.java
@@ -124,29 +124,26 @@
                // lane
                if (pointOfTurn) {
                    Lane lane = laneService.search(node.getCodeData());
                    if (null != lane) {
                    List<int[]> laneCodeIdxList = laneService.getLaneCodeIdxList(node.getCodeData());
                    if (!Cools.isEmpty(laneCodeIdxList)) {
                        Set<String> lanVehicleSet = new HashSet<>();
                        for (String laneCodeData : lane.getCodes()) {
                        for (int[] codeMatrixIdx : laneCodeIdxList) {
                            // overlap with sponsor
                            String laneCodeData = codeMatrix[codeMatrixIdx[0]][codeMatrixIdx[1]];
                            if (avoidPathList.contains(laneCodeData)) {
                                lanVehicleSet.add(sponsor);
                            }
                            int[] laneCodeMatrixIdx = mapDataDispatcher.getCodeMatrixIdx(null, laneCodeData);
                            // scan dynamicMatrix or WaveMatrix
                            DynamicNode laneDynamicNode = dynamicMatrix[laneCodeMatrixIdx[0]][laneCodeMatrixIdx[1]];
                            DynamicNode laneDynamicNode = dynamicMatrix[codeMatrixIdx[0]][codeMatrixIdx[1]];
                            String laneVehicle = laneDynamicNode.getVehicle();
                            assert !laneVehicle.equals(DynamicNodeType.BLOCK.val);
                            if (!laneVehicle.equals(DynamicNodeType.ACCESS.val)) {
                                if (!laneVehicle.equals(agvNo)) {
                                    lanVehicleSet.add(laneVehicle);
//                                    redis.setObject(RedisConstant.AGV_TO_STANDBY_FLAG, laneVehicle, true, 30);
                                }
                            }
                        }
                        if (lanVehicleSet.size() + 1 > maxAgvCountInLane) {
                            phaseSecond = false;    // there is a running way
                            continue;
@@ -155,6 +152,7 @@
                            weight += WEIGHT_CALC_FACTOR * 2;
                        }
                    }
                }
                Code code = codeService.selectByData(node.getCodeData());
@@ -224,24 +222,20 @@
                        for (RetreatNavigateNode node : neighborNodes) {
                            // lane
                            Lane lane = laneService.search(node.getCodeData());
                            if (null != lane) {
                            List<int[]> laneCodeIdxList = laneService.getLaneCodeIdxList(node.getCodeData());
                            if (!Cools.isEmpty(laneCodeIdxList)) {
                                Set<String> lanVehicleSet = new HashSet<>();
                                for (String laneCodeData : lane.getCodes()) {
                                    int[] laneCodeMatrixIdx = mapDataDispatcher.getCodeMatrixIdx(null, laneCodeData);
                                    // scan dynamicMatrix or WaveMatrix
                                    DynamicNode laneDynamicNode = dynamicMatrix[laneCodeMatrixIdx[0]][laneCodeMatrixIdx[1]];
                                for (int[] codeMatrixIdx : laneCodeIdxList) {
                                    DynamicNode laneDynamicNode = dynamicMatrix[codeMatrixIdx[0]][codeMatrixIdx[1]];
                                    String laneVehicle = laneDynamicNode.getVehicle();
                                    assert !laneVehicle.equals(DynamicNodeType.BLOCK.val);
                                    if (!laneVehicle.equals(DynamicNodeType.ACCESS.val)) {
                                        if (!laneVehicle.equals(agvNo)) {
                                            lanVehicleSet.add(laneVehicle);
//                                            redis.setObject(RedisConstant.AGV_TO_STANDBY_FLAG, laneVehicle, true, 30);
                                        }
                                    }
                                }
                                if (lanVehicleSet.size() + 1 > maxAgvCountInLane) {
                                    continue;
                                }
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/astart/AStarNavigateService.java
@@ -121,30 +121,24 @@
                }
                // 单巷道车辆容载数量
                Lane lane = laneService.search(node.getCodeData());
                if (null != lane) {
                List<int[]> laneCodeIdxList = laneService.getLaneCodeIdxList(node.getCodeData());
                if (!Cools.isEmpty(laneCodeIdxList)) {
                    Set<String> lanVehicleSet = new HashSet<>();
                    List<String> laneCodes = lane.getCodes();
                    for (String laneCodeData : laneCodes) {
                        int[] laneCodeMatrixIdx = mapDataDispatcher.getCodeMatrixIdx(null, laneCodeData);
                        // scan dynamicMatrix or WaveMatrix
                        DynamicNode laneDynamicNode = dynamicMatrix[laneCodeMatrixIdx[0]][laneCodeMatrixIdx[1]];
                    for (int[] codeMatrixIdx : laneCodeIdxList) {
                        DynamicNode laneDynamicNode = dynamicMatrix[codeMatrixIdx[0]][codeMatrixIdx[1]];
                        String laneVehicle = laneDynamicNode.getVehicle();
                        assert !laneVehicle.equals(DynamicNodeType.BLOCK.val);
                        if (!laneVehicle.equals(DynamicNodeType.ACCESS.val)) {
                            if (!laneVehicle.equals(agvNo)) {
                                lanVehicleSet.add(laneVehicle);
//                                redis.setObject(RedisConstant.AGV_TO_STANDBY_FLAG, laneVehicle, true, 30);
                            }
                        }
                    }
                    if (lanVehicleSet.size() + 1 > maxAgvCountInLane) {
                        continue;
                    }
                }
                //找到目标结点就返回
                if (isEndNode) {