自动化立体仓库 - WMS系统
#
LSH
2023-10-23 1afefd5977ab7e664814debc071891f74ac46e54
src/main/java/com/zy/asrs/utils/Utils.java
@@ -2,6 +2,7 @@
import com.core.common.Arith;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.common.properties.SlaveProperties;
import java.text.DecimalFormat;
@@ -60,6 +61,29 @@
    }
    /**
     * 判断是否为左深库位
     */
    public static boolean isDeepLocLeft(SlaveProperties slaveProperties, Integer row){
        if (slaveProperties.isDoubleDeep()) {
            return slaveProperties.getDoubleLocsLeft().contains(row);
        } else {
            return false;
        }
    }
    /**
     * 判断是否为右深库位
     */
    public static boolean isDeepLocRight(SlaveProperties slaveProperties, Integer row){
        if (slaveProperties.isDoubleDeep()) {
            return slaveProperties.getDoubleLocsRight().contains(row);
        } else {
            return false;
        }
    }
    /**
     * 判断是否为浅库位
     */
    public static boolean isShallowLoc(SlaveProperties slaveProperties, String locNo){
@@ -88,14 +112,7 @@
    public static String getShallowLoc(SlaveProperties slaveProperties, String deepLoc) {
        int row = getRow(deepLoc);
        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount());
        int shallowRow ;
        if (row == 15 || row == 9) {
            shallowRow = row + 1;
        } else if (row == 12 || row==18) {
            shallowRow = row - 1;
        } else {
            throw new RuntimeException(row + "不是浅库位,系统繁忙");
        }
        int shallowRow = remainder == 1 ? (row + 1) : (row - 1);
        return zerofill(String.valueOf(shallowRow), 2) + deepLoc.substring(2);
    }
@@ -114,12 +131,12 @@
        int row = getRow(shallowLoc);
        int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount());
        int targetRow;
        if (row == 10 || row == 16) {
        if (remainder == 2) {
            targetRow = row - 1;
        } else if (row == 11 || row == 17) {
        } else if (remainder == 3) {
            targetRow = row + 1;
        } else {
            throw new RuntimeException(row + "不是浅库位排,系统繁忙");
            throw new RuntimeException(shallowLoc + "不是浅库位,系统繁忙");
        }
        return zerofill(String.valueOf(targetRow), 2) + shallowLoc.substring(2);
    }
@@ -130,9 +147,9 @@
    public static Integer getDeepRow(SlaveProperties slaveProperties, Integer shallowRow) {
        int remainder = (int) Arith.remainder(shallowRow, slaveProperties.getGroupCount());
        int targetRow;
        if (shallowRow == 10 || shallowRow == 16) {
        if (remainder == 2) {
            targetRow = shallowRow - 1;
        } else if (shallowRow == 11 || shallowRow == 17) {
        } else if (remainder == 3) {
            targetRow = shallowRow + 1;
        } else {
            throw new RuntimeException(shallowRow + "不是浅库位排,系统繁忙");
@@ -179,4 +196,71 @@
        System.out.println(deepRow);
    }
    public static boolean BooleanWhsTypeSta(Integer whsType){
        if (whsType==1){
            return true;
        }
        return false;
    }
    public static boolean BooleanWhsTypeSta(Integer whsType, Integer staDescId){
        if (whsType==1 && staDescId!=11 && staDescId!=111){
            return true;
        }
        return false;
    }
    public static int RowCount(Integer whsType,Integer curRow,Integer crnNumber){
        return LocNecessaryParameters(whsType, curRow,crnNumber)[0];
    }
    public static int getCurRow(Integer whsType,Integer curRow,Integer crnNumber){
        return LocNecessaryParameters(whsType, curRow,crnNumber)[1];
    }
    public static int getCrnNo(Integer whsType,Integer curRow,Integer crnNumber){
        return LocNecessaryParameters(whsType, curRow,crnNumber)[2];
    }
    public static int getNearRow(Integer whsType,Integer curRow,Integer crnNumber){
        return LocNecessaryParameters(whsType, curRow,crnNumber)[3];
    }
    //库位排号分配
    public static int[] LocNecessaryParameters(Integer whsType,Integer curRow,Integer crnNumber){
        return LocNecessaryParametersDoubleExtension(whsType, curRow,crnNumber);
    }
    //经典双伸库位
    public static int[] LocNecessaryParametersDoubleExtension(Integer whsType,Integer curRow,Integer crnNumber){
        int[] necessaryParameters=new int[]{0,0,0,0};
        if (BooleanWhsTypeSta(whsType)){
            necessaryParameters[0] = crnNumber;
            //满板正常入库
            if (curRow.equals(crnNumber*4)){
                necessaryParameters[1] = 1;    //curRow   最深库位排
                necessaryParameters[2] = 1;     //crnNo     堆垛机号
                necessaryParameters[3] = 2;    //nearRow  最浅库位排
            }else if (curRow.equals(crnNumber*4-3)){
                necessaryParameters[1] = 4;    //curRow   最深库位排
                necessaryParameters[2] = 1;     //crnNo     堆垛机号
                necessaryParameters[3] = 3;    //nearRow  最浅库位排
            }else {
                curRow=curRow+4;
                if (curRow<1 || curRow > (crnNumber*4)){
                    throw new CoolException("库位排号异常:排号:"+curRow);
                }
                if ((curRow-1)%4==0){
                    necessaryParameters[1] = curRow;    //curRow   最深库位排
                    necessaryParameters[2] = (curRow+3)/4;     //crnNo     堆垛机号
                    necessaryParameters[3] = curRow+1;    //nearRow  最浅库位排
                }else if (curRow%4==0){
                    necessaryParameters[1] = curRow;    //curRow   最深库位排
                    necessaryParameters[2] = curRow/4;     //crnNo     堆垛机号
                    necessaryParameters[3] = curRow-1;    //nearRow  最浅库位排
                }else {
                    throw new CoolException("库位排号异常:排号:"+curRow);
                }
            }
        }
        return necessaryParameters;
    }
}