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; /** * 库位编号和A*算法的xy轴转换工具类 */ public class NavigatePositionConvert { //坐标编号转xy轴 public static int[] positionToXY(String position) { int col = Integer.parseInt(position.substring(0, 2)); int row = Integer.parseInt(position.substring(2, 5)); int[] newPosition = coverPosition(col,row); //返回x和y // return new int[]{row, col}; return newPosition; } //xy轴转坐标编号 public static Short xyToPosition(int x, int y) { StringBuffer sb = new StringBuffer(); sb.append(x); if (x < 10) { sb.append("00"); } else if (x < 100) { sb.append("0"); } sb.append(y); return Short.parseShort(sb.toString()); } //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 covertRow(int row) { NavigateMapData mapData = new NavigateMapData(); int[][] data = mapData.getData(); //实际行数 int realRow = data.length - 1; return realRow - row; } public static int[] coverPosition(int col,int row) { return new int[]{col, row}; } }