| | |
| | | package com.zy.common.utils; |
| | | |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.asrs.entity.BasDevp; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.service.BasDevpService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.model.NavigateNode; |
| | | |
| | | /** |
| | | * 库位编号和A*算法的xy轴转换工具类 |
| | | */ |
| | |
| | | return newPosition; |
| | | } |
| | | |
| | | //转换行号,实际中最底层可能是第一行,在数组中最底层是最后一行,因此需要进行转换才可以匹配数据 |
| | | public static int covertRow(int row) { |
| | | NavigateMapData mapData = new NavigateMapData(); |
| | | int[][] data = mapData.getData(); |
| | | //实际行数 |
| | | int realRow = data.length - 1; |
| | | return realRow - row; |
| | | //WCS系统库位号转路径算法节点 |
| | | public static NavigateNode locNoToNode(String locNo) { |
| | | int col = Integer.parseInt(locNo.substring(0, 2)); |
| | | int row = Integer.parseInt(locNo.substring(2, 5)); |
| | | int[] newPosition = coverPosition(col,row); |
| | | NavigateNode node = new NavigateNode(col, row); |
| | | node.setZ(Utils.getLev(locNo)); |
| | | return node; |
| | | } |
| | | |
| | | //牛眼坐标转WCS库位号 |
| | | public static String xyzToLocNo(int x, int y, int z) { |
| | | int[] ints = NyXyzToWCSXyz(x, y, z); |
| | | String locNo = Utils.getLocNo(ints[0],ints[1],ints[2]); |
| | | return locNo; |
| | | } |
| | | |
| | | //WCS系统坐标转牛眼坐标 |
| | | public static int[] WCSXyzToNyXyz(int x, int y, int z) { |
| | | //WCS系统Y轴 => 牛眼X轴转换公式 |
| | | int x1 = Math.abs(y - 61) + 11; |
| | | //WCS系统X轴 => 牛眼Y轴转换公式 |
| | | int y1 = x + 10; |
| | | return new int[]{x1, y1, z}; |
| | | } |
| | | |
| | | //牛眼坐标转WCS系统坐标 |
| | | public static int[] NyXyzToWCSXyz(int x, int y, int z) { |
| | | //牛眼X轴 => WCS系统Y轴公式 |
| | | int y1 = Math.abs(x - 11 - 61); |
| | | //牛眼Y轴 => WCS系统X轴公式 |
| | | int x1 = y - 10; |
| | | return new int[]{x1, y1, z}; |
| | | } |
| | | |
| | | //xyz轴转坐标编号 |
| | | public static Short xyToPosition(int x, int y, int z) { |
| | | StringBuffer sb = new StringBuffer(); |
| | | if (x < 10) { |
| | | sb.append("0"); |
| | | } |
| | | sb.append(x); |
| | | |
| | | if (y < 10) { |
| | | sb.append("00"); |
| | | }else if (y < 100) { |
| | | sb.append("0"); |
| | | } |
| | | sb.append(y); |
| | | |
| | | if (z < 10) { |
| | | sb.append("0"); |
| | | } |
| | | sb.append(z); |
| | | String position = sb.toString();//库位号 |
| | | |
| | | //库位号转小车二维码 |
| | | LocMastService locMastService = SpringUtils.getBean(LocMastService.class); |
| | | LocMast locMast = locMastService.queryByLoc(position); |
| | | if (locMast == null) { |
| | | //当前库位号查不到,可能是站点库位号 |
| | | BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class); |
| | | BasDevp basDevp = basDevpService.queryByLocNo(position); |
| | | if (basDevp == null) { |
| | | return null; |
| | | } |
| | | return Short.parseShort(basDevp.getQrCodeValue()); |
| | | } |
| | | return Short.parseShort(locMast.getQrCodeValue()); |
| | | } |
| | | |
| | | public static int[] coverPosition(int col,int row) { |
| | | return new int[]{row, col}; |
| | | return new int[]{col, row}; |
| | | } |
| | | |
| | | } |