自动化立体仓库 - WMS系统
1
zhang
4 天以前 f4a02e646e174cb6d134286d30ac75120bc6e972
1
3个文件已修改
85 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/utils/Utils.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java
@@ -8,17 +8,10 @@
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;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
@@ -123,8 +116,8 @@
     */
    public static String getShallowLoc(SlaveProperties slaveProperties, String deepLoc) {
        int row = getRow(deepLoc);
        boolean deepLocLeft = isDeepLoc(slaveProperties, row);//判断是否为左深库位
        int shallowRow = deepLocLeft? (row + 1) : (row - 1);
        boolean deepLocLeft = isDeepLocLeft(slaveProperties, row);//判断是否为左深库位
        int shallowRow = deepLocLeft ? (row + 1) : (row - 1);
        return zerofill(String.valueOf(shallowRow), 2) + deepLoc.substring(2);
    }
@@ -133,10 +126,28 @@
     */
    public static String getDeepLoc(SlaveProperties slaveProperties, String shallowLoc) {
        int row = getRow(shallowLoc);
        boolean deepLocLeft = isDeepLocLeft(slaveProperties, row-1);//判断是否为左浅库位
        int shallowRow = deepLocLeft? (row - 1) : (row + 1);
        boolean deepLocLeft = isDeepLocLeft(slaveProperties, row - 1);//判断是否为左浅库位
        int shallowRow = deepLocLeft ? (row - 1) : (row + 1);
        return zerofill(String.valueOf(shallowRow), 2) + shallowLoc.substring(2);
    }
    /**
     * 获取 浅库位对应的深库位号,如果没有深库位,则返回为空
     */
    public static String getDeepLoc2(SlaveProperties slaveProperties, String shallowLoc) {
        int row = getRow(shallowLoc);
        boolean deepLocLeft = isDeepLoc(slaveProperties, row);//判断是否为深库位
        if (!deepLocLeft) {
            return null;
        }
        //4,7,11,15,19,23
        if (row == 4 || row == 7 || row == 11 || row == 15 || row == 19 || row == 23) {
            return zerofill(String.valueOf(row + 1), 2) + shallowLoc.substring(2);
        } else {
            return zerofill(String.valueOf(row - 1), 2) + shallowLoc.substring(2);
        }
    }
    /**
     * 获取 深库位排对应的浅库位排
@@ -151,8 +162,8 @@
     * 获取 浅库位排对应的深库位排
     */
    public static Integer getDeepRow(SlaveProperties slaveProperties, Integer shallowRow) {
        boolean deepLocLeft = isDeepLocLeft(slaveProperties, shallowRow-1);//判断是否为左浅库位
        return deepLocLeft? (shallowRow - 1) : (shallowRow + 1);
        boolean deepLocLeft = isDeepLocLeft(slaveProperties, shallowRow - 1);//判断是否为左浅库位
        return deepLocLeft ? (shallowRow - 1) : (shallowRow + 1);
    }
    /**
@@ -464,6 +475,7 @@
        return necessaryParameters;
    }
    //四向库(牛眼\光泰)
    public static int[] LocNecessaryParametersDoubleExtension6(RowLastno rowLastno, Integer curRow, Integer crnNumber) {
        int[] necessaryParameters = new int[]{0, 0, 0, 0};
@@ -473,7 +485,7 @@
        necessaryParameters[0] = crnNumber; // 轮询次数
        curRow = curRow - offset;
        //满板正常入库
        switch (curRow){
        switch (curRow) {
            case 1:
                necessaryParameters[1] = 4;    //curRow   最深库位排
                necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
@@ -519,7 +531,7 @@
        Integer sCrnNo = rowLastno.getsCrnNo();//起始堆垛机号
        necessaryParameters[0] = crnNumber; // 轮询次数
        //满板正常入库
        if (curRow.equals(rowLastno.geteRow())){
        if (curRow.equals(rowLastno.geteRow())) {
            necessaryParameters[1] = sRow;    //curRow   最深库位排
            necessaryParameters[2] = sCrnNo;     //crnNo     堆垛机号
            necessaryParameters[3] = sRow;    //nearRow  最浅库位排
@@ -594,12 +606,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<=nearRow;row++){
        } else {
            for (int row = curRow; row <= nearRow; row++) {
                result.add(zerofill(String.valueOf(row), 2) + locNo.substring(2));
            }
        }
src/main/java/com/zy/common/service/CommonService.java
@@ -235,7 +235,12 @@
                //尝试找1号弯轨堆垛机库位
                crnNo = 1;
                if (basCrnpService.checkSiteError(crnNo, true)) {
                    List<Integer> nearRowList = new ArrayList<Integer>(){{add(4);add(6);add(3);add(1);}};
                    List<Integer> nearRowList = new ArrayList<Integer>() {{
                        add(4);
                        add(6);
                        add(3);
                        add(1);
                    }};
                    for (Integer near : nearRowList) {
                        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                                .eq("row1", near)
@@ -247,7 +252,7 @@
                        int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).le("io_type", 100));
                        if (locMasts.size() - crnCountO <= 2) {
                            log.error(crnNo + "号堆垛机没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
                        }else {
                        } else {
                            nearRow = near;
                            break;
                        }
@@ -261,7 +266,12 @@
                //尝试找1号弯轨堆垛机库位
                crnNo = 1;
                if (basCrnpService.checkSiteError(crnNo, true)) {
                    List<Integer> nearRowList = new ArrayList<Integer>(){{add(4);add(6);add(3);add(1);}};
                    List<Integer> nearRowList = new ArrayList<Integer>() {{
                        add(4);
                        add(6);
                        add(3);
                        add(1);
                    }};
                    for (Integer near : nearRowList) {
                        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                                .eq("row1", near)
@@ -273,7 +283,7 @@
                        int crnCountO = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", crnNo).le("io_type", 100));
                        if (locMasts.size() - crnCountO <= 2) {
                            log.error(crnNo + "号堆垛机没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
                        }else {
                        } else {
                            nearRow = near;
                            break;
                        }
@@ -283,7 +293,7 @@
                if (nearRow == 0) {
                    throw new CoolException("无可用堆垛机");
                }
            }else {
            } else {
                throw new CoolException("无可用堆垛机");
            }
        }
@@ -347,7 +357,7 @@
                                    .eq("loc_no", shallowLoc)
                                    .eq("loc_sts", "O")
                            );
                            if(shallowLocMast != null) {
                            if (shallowLocMast != null) {
                                locMast = shallowLocMast;
                                break;
                            }
@@ -554,9 +564,16 @@
        if (crnNo == 1) {
            configService.updateValue("123CrnSearchList", String.valueOf(0));
        }
        //针对1号堆垛机打的补丁,防止找到库位时,找到最浅库位
        String deepLoc2 = Utils.getDeepLoc2(slaveProperties, locMast.getLocNo());
        if (!Cools.isEmpty(deepLoc2)) {
            LocMast locMastNew = locMastService.selectOne(new EntityWrapper<LocMast>()
                    .eq("loc_no", deepLoc2).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
            if (!Cools.isEmpty(locMastNew)) {
                locMast = locMastNew;
            }
        }
        String locNo = locMast.getLocNo();
        // 生成工作号
        int workNo = getWorkNo(0);
        // 返回dto
src/main/resources/application.yml
@@ -70,7 +70,7 @@
  # 左深库位排号
  doubleLocsLeft: 4,7,11,15,19,23
  # 右深库位排号
  doubleLocsRight: 3,7,10,14,18,22,26
  doubleLocsRight: 3,10,14,18,22,26
# wms参数配置
wms-parameter:
  # 自动补空板功能开关