#
Junjie
2 天以前 73ce8bebcc5d14f3fb62a19ee677abfcdfc776b4
src/main/java/com/zy/common/utils/NavigateMapData.java
@@ -35,14 +35,14 @@
    @Autowired
    private BasMapService basMapService;
    public int[][] getData(Integer lev, Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
    public int[][] getData(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
        try {
            BasMap basMap = basMapService.selectLatestMap(lev);
            String originData = basMap.getOriginData();
            //解析json地图数据
            ArrayList arrayList = JSON.parseObject(originData, ArrayList.class);
            List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
            List<List<MapNode>> lists = filterMap(mapTypes, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
            int[][] map = new int[lists.size()][];
            int j = 0;
            for (List<MapNode> list : lists) {
@@ -66,7 +66,7 @@
    /**
     * 尝试从redis获取数据
     */
    public int[][] getDataFromRedis(Integer lev, Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
    public int[][] getDataFromRedis(Integer lev, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
        RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
        Object o = redisUtil.get(RedisKeyType.MAP.key + lev);
        if (o == null) {
@@ -74,15 +74,15 @@
        }
        BasMap basMap = JSON.parseObject(o.toString(), BasMap.class);
        return this.getDataFormString(lev, basMap.getData(), mapType, whitePoints, shuttlePoints);
        return this.getDataFormString(lev, basMap.getData(), mapTypes, whitePoints, shuttlePoints);
    }
    /**
     * 从List数据中获取地图
     */
    public int[][] getDataFormString(Integer lev, String data, Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
    public int[][] getDataFormString(Integer lev, String data, List<NavigationMapType> mapTypes, List<int[]> whitePoints, List<int[]> shuttlePoints) {
        ArrayList arrayList = JSON.parseObject(data, ArrayList.class);
        List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
        List<List<MapNode>> lists = filterMap(mapTypes, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
        int[][] map = new int[lists.size()][];
        int j = 0;
        for (List<MapNode> list : lists) {
@@ -139,18 +139,30 @@
     * @param whitePoints 白名单节点,不需要被过滤
     * @param shuttlePoints 穿梭车节点,需要加载进地图
     */
    public List<List<MapNode>> filterMap(Integer mapType, List arrayList, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) {
    public List<List<MapNode>> filterMap(List<NavigationMapType> mapTypes, List arrayList, Integer lev, List<int[]> whitePoints, List<int[]> shuttlePoints) {
        //重建数据格式
        List<List<MapNode>> lists = rebuildData(arrayList);
        List<NavigationMapType> locMapType = new ArrayList<>();
        locMapType.add(NavigationMapType.NONE);
        locMapType.add(NavigationMapType.DFX);
        locMapType.add(NavigationMapType.NORMAL);
        for (NavigationMapType mapType : mapTypes) {
            if(locMapType.contains(mapType)) {
        //载入库位信息
        lists = loadLocMast(mapType, lists, lev, whitePoints);
                lists = loadLocMast(mapType.id, lists, lev, whitePoints);
            }
            if (mapType.equals(NavigationMapType.SHUTTLE)) {
        //加载车辆
        lists = loadShuttle(lists, shuttlePoints);
            }
            if (mapType.equals(NavigationMapType.SHUTTLE)) {
        //加载货叉提升机点位
        lists = loadForkLift(lists, mapType, lev);
                lists = loadForkLift(lists, lev);
            }
        }
        //加载白名单节点
        lists = loadWhite(lists, lev, whitePoints);
@@ -283,7 +295,7 @@
    }
    //加载货叉提升机点位
    public List<List<MapNode>> loadForkLift(List<List<MapNode>> lists, Integer mapType, Integer lev) {
    public List<List<MapNode>> loadForkLift(List<List<MapNode>> lists, Integer lev) {
        try {
            //加载货叉提升机放货点位数据
            List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>()
@@ -304,16 +316,16 @@
                    List<MapNode> list = lists.get(row);
                    MapNode mapNode = list.get(bay);
                    if (mapType == NavigationMapType.DFX.id) {
                        //车辆有货
                        if (staProtocol.getHasTray() != null && staProtocol.getHasTray()) {
                            mapNode.setValue(MapNodeType.DISABLE.id);
                        }
                    } else {
                        if (staProtocol.getHasCar() != null && staProtocol.getHasCar()) {
                            mapNode.setValue(MapNodeType.CAR.id);
                        }
                    }
//                    if (mapType == NavigationMapType.DFX.id) {
//                        //车辆有货
//                        if (staProtocol.getHasTray() != null && staProtocol.getHasTray()) {
//                            mapNode.setValue(MapNodeType.DISABLE.id);
//                        }
//                    } else {
//                        if (staProtocol.getHasCar() != null && staProtocol.getHasCar()) {
//                            mapNode.setValue(MapNodeType.CAR.id);
//                        }
//                    }
                    //更新list
                    list.set(bay, mapNode);