自动化立体仓库 - WCS系统
Junjie
2024-11-22 6d2ef705c639016784abbd30401a7e7d7a72b6ec
#读取地图文件优化
2个文件已修改
253 ■■■■■ 已修改文件
src/main/java/com/zy/common/utils/NavigateMapData.java 250 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/enums/RedisKeyType.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/NavigateMapData.java
@@ -11,6 +11,7 @@
import com.zy.common.model.enums.NavigationMapType;
import com.zy.core.enums.RedisKeyType;
import com.zy.core.enums.ShuttleTaskModeType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;
@@ -24,6 +25,9 @@
 */
@Component
public class NavigateMapData {
    @Autowired
    private RedisUtil redisUtil;
    private Integer lev;//地图楼层
@@ -41,51 +45,72 @@
    public int[][] getData(Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
        try {
            String mapFilename = "map_" + lev + ".json";
            ClassPathResource classPathResource = new ClassPathResource(mapFilename);
            InputStream inputStream = classPathResource.getInputStream();
            byte[] buffer = new byte[inputStream.available()];
            inputStream.read(buffer);
            File file = File.createTempFile("prefix","suffix");
            try (OutputStream outStream = new FileOutputStream(file)) {
                outStream.write(buffer);
            Object object = redisUtil.get(RedisKeyType.BASIC_MAP.key + lev);
            if (object == null) {
                return null;
            }
            StringBuffer stringBuffer = new StringBuffer();
            if (file.isFile() && file.exists()) {
                InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK");
                BufferedReader br = new BufferedReader(isr);
                String lineTxt = null;
                while ((lineTxt = br.readLine()) != null) {
                    stringBuffer.append(lineTxt);
            //解析json地图数据
            ArrayList arrayList = JSON.parseObject(object.toString(), ArrayList.class);
            List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
            int[][] map = new int[lists.size()][];
            int j = 0;
            for (List<MapNode> list : lists) {
                int[] tmp = new int[list.size()];
                int i = 0;
                for (MapNode mapNode : list) {
                    //将数据添加进二维数组
                    tmp[i++] = mapNode.getValue();
                }
                br.close();
                //解析json地图数据
                ArrayList arrayList = JSON.parseObject(stringBuffer.toString(), ArrayList.class);
                List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
                int[][] map = new int[lists.size()][];
                int j = 0;
                for (List<MapNode> list : lists) {
                    int[] tmp = new int[list.size()];
                    int i = 0;
                    for (MapNode mapNode : list) {
                        //将数据添加进二维数组
                        tmp[i++] = mapNode.getValue();
                    }
                    //数据添加进一维数组
                    map[j++] = tmp;
                }
                if (!file.delete()) {
                    System.out.println("临时文件删除失败");
                }
                return map;
            } else {
                System.out.println("文件不存在!");
                //数据添加进一维数组
                map[j++] = tmp;
            }
        } catch (IOException ioException) {
            ioException.printStackTrace();
//            String mapFilename = "map_" + lev + ".json";
//            ClassPathResource classPathResource = new ClassPathResource(mapFilename);
//            InputStream inputStream = classPathResource.getInputStream();
//            byte[] buffer = new byte[inputStream.available()];
//            inputStream.read(buffer);
//            File file = File.createTempFile("prefix","suffix");
//            try (OutputStream outStream = new FileOutputStream(file)) {
//                outStream.write(buffer);
//            }
//
//            StringBuffer stringBuffer = new StringBuffer();
//            if (file.isFile() && file.exists()) {
//                InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK");
//                BufferedReader br = new BufferedReader(isr);
//                String lineTxt = null;
//                while ((lineTxt = br.readLine()) != null) {
//                    stringBuffer.append(lineTxt);
//                }
//                br.close();
//
//                //解析json地图数据
//                ArrayList arrayList = JSON.parseObject(stringBuffer.toString(), ArrayList.class);
//                List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
//                int[][] map = new int[lists.size()][];
//                int j = 0;
//                for (List<MapNode> list : lists) {
//                    int[] tmp = new int[list.size()];
//                    int i = 0;
//                    for (MapNode mapNode : list) {
//                        //将数据添加进二维数组
//                        tmp[i++] = mapNode.getValue();
//                    }
//                    //数据添加进一维数组
//                    map[j++] = tmp;
//                }
//
//                if (!file.delete()) {
//                    System.out.println("临时文件删除失败");
//                }
//                return map;
//            } else {
//                System.out.println("文件不存在!");
//            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
@@ -129,40 +154,51 @@
    //获取JSON格式数据
    public List<List<MapNode>> getJsonData(Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
        try {
            String mapFilename = "map_" + lev + ".json";
            ClassPathResource classPathResource = new ClassPathResource(mapFilename);
            InputStream inputStream = classPathResource.getInputStream();
            byte[] buffer = new byte[inputStream.available()];
            inputStream.read(buffer);
            File file = File.createTempFile("prefix","suffix");
            try (OutputStream outStream = new FileOutputStream(file)) {
                outStream.write(buffer);
            Object object = redisUtil.get(RedisKeyType.BASIC_MAP.key + lev);
            if (object == null) {
                return null;
            }
            StringBuffer stringBuffer = new StringBuffer();
            if (file.isFile() && file.exists()) {
                InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK");
                BufferedReader br = new BufferedReader(isr);
                String lineTxt = null;
                while ((lineTxt = br.readLine()) != null) {
                    stringBuffer.append(lineTxt);
                }
                br.close();
            //解析json地图数据
            ArrayList arrayList = JSON.parseObject(object.toString(), ArrayList.class);
            List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
            return lists;
                //解析json地图数据
                ArrayList arrayList = JSON.parseObject(stringBuffer.toString(), ArrayList.class);
                List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
                if (!file.delete()) {
                    System.out.println("临时文件删除失败");
                }
                return lists;
            } else {
                System.out.println("文件不存在!");
            }
        } catch (IOException ioException) {
            ioException.printStackTrace();
//            String mapFilename = "map_" + lev + ".json";
//            ClassPathResource classPathResource = new ClassPathResource(mapFilename);
//            InputStream inputStream = classPathResource.getInputStream();
//            byte[] buffer = new byte[inputStream.available()];
//            inputStream.read(buffer);
//            File file = File.createTempFile("prefix","suffix");
//            try (OutputStream outStream = new FileOutputStream(file)) {
//                outStream.write(buffer);
//            }
//
//            StringBuffer stringBuffer = new StringBuffer();
//            if (file.isFile() && file.exists()) {
//                InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK");
//                BufferedReader br = new BufferedReader(isr);
//                String lineTxt = null;
//                while ((lineTxt = br.readLine()) != null) {
//                    stringBuffer.append(lineTxt);
//                }
//                br.close();
//
//                //解析json地图数据
//                ArrayList arrayList = JSON.parseObject(stringBuffer.toString(), ArrayList.class);
//                List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
//
//                if (!file.delete()) {
//                    System.out.println("临时文件删除失败");
//                }
//
//                return lists;
//            } else {
//                System.out.println("文件不存在!");
//            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
@@ -170,40 +206,50 @@
    //获取JSON格式数据
    public List<List<MapNode>> getJsonData(Integer lev, Integer mapType, List<int[]> whitePoints, List<int[]> shuttlePoints) {
        try {
            String mapFilename = "map_" + lev + ".json";
            ClassPathResource classPathResource = new ClassPathResource(mapFilename);
            InputStream inputStream = classPathResource.getInputStream();
            byte[] buffer = new byte[inputStream.available()];
            inputStream.read(buffer);
            File file = File.createTempFile("prefix","suffix");
            try (OutputStream outStream = new FileOutputStream(file)) {
                outStream.write(buffer);
            Object object = redisUtil.get(RedisKeyType.BASIC_MAP.key + lev);
            if (object == null) {
                return null;
            }
            StringBuffer stringBuffer = new StringBuffer();
            if (file.isFile() && file.exists()) {
                InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK");
                BufferedReader br = new BufferedReader(isr);
                String lineTxt = null;
                while ((lineTxt = br.readLine()) != null) {
                    stringBuffer.append(lineTxt);
                }
                br.close();
            //解析json地图数据
            ArrayList arrayList = JSON.parseObject(object.toString(), ArrayList.class);
            List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
            return lists;
                //解析json地图数据
                ArrayList arrayList = JSON.parseObject(stringBuffer.toString(), ArrayList.class);
                List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
                if (!file.delete()) {
                    System.out.println("临时文件删除失败");
                }
                return lists;
            } else {
                System.out.println("文件不存在!");
            }
        } catch (IOException ioException) {
            ioException.printStackTrace();
//            String mapFilename = "map_" + lev + ".json";
//            ClassPathResource classPathResource = new ClassPathResource(mapFilename);
//            InputStream inputStream = classPathResource.getInputStream();
//            byte[] buffer = new byte[inputStream.available()];
//            inputStream.read(buffer);
//            File file = File.createTempFile("prefix","suffix");
//            try (OutputStream outStream = new FileOutputStream(file)) {
//                outStream.write(buffer);
//            }
//
//            StringBuffer stringBuffer = new StringBuffer();
//            if (file.isFile() && file.exists()) {
//                InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK");
//                BufferedReader br = new BufferedReader(isr);
//                String lineTxt = null;
//                while ((lineTxt = br.readLine()) != null) {
//                    stringBuffer.append(lineTxt);
//                }
//                br.close();
//
//                //解析json地图数据
//                ArrayList arrayList = JSON.parseObject(stringBuffer.toString(), ArrayList.class);
//                List<List<MapNode>> lists = filterMap(mapType, arrayList, lev, whitePoints, shuttlePoints);//过滤地图数据
//
//                if (!file.delete()) {
//                    System.out.println("临时文件删除失败");
//                }
//
//                return lists;
//            } else {
//                System.out.println("文件不存在!");
//            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
src/main/java/com/zy/core/enums/RedisKeyType.java
@@ -4,7 +4,8 @@
    SHUTTLE("shuttle_wrk_no_"),
    LIFT("lift_wrk_no_"),
    MAP("realtimeBasMap_")
    MAP("realtimeBasMap_"),
    BASIC_MAP("basicMap_"),
    ;
    public String key;