自动化立体仓库 - WMS系统
#
lsh
2024-12-12 c9647257d0b789f94c14977dfa767c47d61cb566
src/main/java/com/zy/asrs/utils/Utils.java
@@ -8,10 +8,12 @@
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.RowLastno;
import com.zy.asrs.service.RowLastnoService;
import com.zy.common.CodeBuilder;
import com.zy.common.model.LocDetlDto;
import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import com.zy.system.service.UserService;
import java.text.DecimalFormat;
import java.util.ArrayList;
@@ -254,26 +256,24 @@
        return false;
    }
    public static int RowCount(Integer whsType, Integer curRow, Integer crnNumber) {
        return LocNecessaryParameters(whsType, curRow, crnNumber)[0];
    public static int RowCount(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
        return LocNecessaryParameters(rowLastno, curRow, crnNumber)[0];
    }
    public static int getCurRow(Integer whsType, Integer curRow, Integer crnNumber) {
        return LocNecessaryParameters(whsType, curRow, crnNumber)[1];
    public static int getCurRow(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
        return LocNecessaryParameters(rowLastno, curRow, crnNumber)[1];
    }
    public static int getCrnNo(Integer whsType, Integer curRow, Integer crnNumber) {
        return LocNecessaryParameters(whsType, curRow, crnNumber)[2];
    public static int getCrnNo(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
        return LocNecessaryParameters(rowLastno, curRow, crnNumber)[2];
    }
    public static int getNearRow(Integer whsType, Integer curRow, Integer crnNumber) {
        return LocNecessaryParameters(whsType, curRow, crnNumber)[3];
    public static int getNearRow(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
        return LocNecessaryParameters(rowLastno, curRow, crnNumber)[3];
    }
    //库位排号分配
    public static int[] LocNecessaryParameters(Integer whsType, Integer curRow, Integer crnNumber) {
        RowLastnoService rowLastnoService = SpringUtils.getBean(RowLastnoService.class);
        RowLastno rowLastno = rowLastnoService.selectById(whsType);
    public static int[] LocNecessaryParameters(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
        switch (rowLastno.getTypeId()) {
            case 1://经典双伸库位
                return LocNecessaryParametersDoubleExtension(rowLastno, curRow, crnNumber); //已完善
@@ -285,6 +285,10 @@
                return LocNecessaryParametersDoubleExtension4(rowLastno, curRow, crnNumber); //未完善
            case 5://双工位单伸库位(4排货架)
                return LocNecessaryParametersDoubleExtension5(rowLastno, curRow, crnNumber); //已完善
            case 6://四向库(牛眼车)eg:光泰四向
                return LocNecessaryParametersDoubleExtension6(rowLastno, curRow, crnNumber); //已完善
            case 7://平库  CTU库
                return LocNecessaryParametersDoubleExtension7(rowLastno, curRow, crnNumber); //已完善
            default:
                return LocNecessaryParametersMove(rowLastno, curRow, crnNumber);//moveCrnNo
        }
@@ -417,8 +421,8 @@
    //经典单双伸库位  左双右单(小双大单)
    public static int[] LocNecessaryParametersDoubleExtension4(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
        int[] necessaryParameters = new int[]{0, 0, 0, 0};
        Integer sRow = rowLastno.getsRow();
        Integer sCrnNo = rowLastno.getsCrnNo();
        Integer sRow = rowLastno.getsRow();//起始排号
        Integer sCrnNo = rowLastno.getsCrnNo();//起始堆垛机号
        necessaryParameters[0] = crnNumber; // 轮询次数
        //满板正常入库
        if (curRow.equals(crnNumber * 3 + sRow - 1)) {
@@ -481,6 +485,73 @@
            } else {
                throw new CoolException("库位排号异常:排号:" + curRow);
            }
        }
        return necessaryParameters;
    }
    //四向库(牛眼\光泰)
    public static int[] LocNecessaryParametersDoubleExtension6(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
        int[] necessaryParameters = new int[]{0, 0, 0, 0};
        Integer sRow = rowLastno.getsRow();//起始排号
        Integer offset = 4;//起始排号
        Integer sCrnNo = rowLastno.getsCrnNo();//起始堆垛机号
        necessaryParameters[0] = crnNumber; // 轮询次数
        curRow = curRow - offset;
        //满板正常入库
        switch (curRow){
            case 1:
                necessaryParameters[1] = 4;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 7;    //nearRow  最浅库位排
                break;
            case 4:
                necessaryParameters[1] = 9;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 12;    //nearRow  最浅库位排
                break;
            case 9:
                necessaryParameters[1] = 14;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 14;    //nearRow  最浅库位排
                break;
            case 14:
                necessaryParameters[1] = 7;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 4;    //nearRow  最浅库位排
                break;
            case 7:
                necessaryParameters[1] = 12;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 9;    //nearRow  最浅库位排
                break;
            case 12:
                necessaryParameters[1] = 1;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
                necessaryParameters[3] = 2;    //nearRow  最浅库位排
                break;
            default:
                throw new CoolException("库位排号异常:排号:" + curRow);
        }
        necessaryParameters[1] = necessaryParameters[1] + offset;
        necessaryParameters[3] = necessaryParameters[3] + offset;
        return necessaryParameters;
    }
    //平库(光泰\CTU)
    public static int[] LocNecessaryParametersDoubleExtension7(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
        int[] necessaryParameters = new int[]{0, 0, 0, 0};
        Integer sRow = rowLastno.getsRow();//起始排号
        Integer sCrnNo = rowLastno.getsCrnNo();//起始堆垛机号
        necessaryParameters[0] = crnNumber; // 轮询次数
        //满板正常入库
        if (curRow.equals(rowLastno.geteRow())){
            necessaryParameters[1] = sRow;    //curRow   最深库位排
            necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
            necessaryParameters[3] = sRow;    //nearRow  最浅库位排
        } else {
            necessaryParameters[1] = curRow + 1;    //curRow   最深库位排
            necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
            necessaryParameters[3] = curRow + 1;    //nearRow  最浅库位排
        }
        return necessaryParameters;
@@ -548,12 +619,12 @@
    // 外侧方向的货位  优先入库方向 ===>> 反之
    public static List<String> getGroupOutLocCrn(Integer curRow, Integer nearRow, String locNo, boolean pakin) {
        List<String> result = new ArrayList<>();
        if (pakin) {
            for (int row = curRow; row <= nearRow; row++) {
        if (pakin){
            for (int row = curRow;row>=nearRow;row--){
                result.add(zerofill(String.valueOf(row), 2) + locNo.substring(2));
            }
        } else {
            for (int row = curRow; row >= curRow; row--) {
        }else {
            for (int row = curRow;row<=nearRow;row++){
                result.add(zerofill(String.valueOf(row), 2) + locNo.substring(2));
            }
        }