自动化立体仓库 - WMS系统
zhangc
2024-12-27 499ee6d6eb0e0c38cdc23ebe3c320f46dd498d0a
添加isEmpty参数优化库位查找逻辑
3个文件已修改
20 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/LocUtils.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/AgvCommonService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -103,7 +103,7 @@
            List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("supp_code", agvBasDevp.getBarcode()));
            //检索库位,选择合适的库位
            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(), agvBasDevp.getFloor(), false, false);
            AgvLocMast agvLocMast = agvCommonService.getLocNo(agvBasDevp.getLocType1(), agvBasDevp.getFloor(), false, false,null);
            //生成工作档
            AgvWrkMast wrkMast = createWrkMast(1, 201L, agvBasDevp.getDevNo(), agvLocMast.getLocNo(), agvBasDevp.getBarcode(), now, userId, agvBasDevp.getLocType2(), agvLocMast.getPltType());
            //标记是否为输送线入库
src/main/java/com/zy/asrs/utils/LocUtils.java
@@ -24,20 +24,24 @@
     * @param factory
     * @return
     */
    public   AgvLocMast getLocNoRuleByFactory(int type, String factory) {
    public   AgvLocMast getLocNoRuleByFactory(int type, boolean isEmpty, String factory) {
        if (Cools.isEmpty(factory)) {
            throw new CoolException("搜索库位时,订单类型错误");
        }
        try {
            EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
            wrapper.eq("loc_sts", "O").eq("loc_type1", type);
            List<AgvLocMast> agvLocMasts = new ArrayList<>();
            if (factory.equalsIgnoreCase(AsrsConstants.ERCHANG)) {
                wrapper.orderBy("lev1", false);
                if (isEmpty) {
                    wrapper.orderBy("lev1", true);
                }else {
                    wrapper.orderBy("lev1", false);
                }
            } else if (factory.equalsIgnoreCase(AsrsConstants.SANCHANG)) {
                wrapper.orderBy("lev1", true);
            }
            agvLocMasts = agvLocMastService.selectList(wrapper);
            List<AgvLocMast>   agvLocMasts = agvLocMastService.selectList(wrapper);
            for (AgvLocMast agvLocMast : agvLocMasts) {
                AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo()));
@@ -57,7 +61,7 @@
     * @param floor
     * @return
     */
    public AgvLocMast getLocNoRuleByFloor(int type, Integer floor, Integer lev1) {
    public AgvLocMast getLocNoRuleByFloor(int type, Integer floor, boolean isEmpty, Integer lev1) {
        try {
            EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
            wrapper.eq("loc_sts", "O").eq("loc_type1", type).eq("floor", floor).eq("lev1", lev1);
src/main/java/com/zy/common/service/AgvCommonService.java
@@ -122,10 +122,10 @@
            // 箱壳入库
            if (type == 3) {
                //优先入库吸塑1楼,在2楼
                locMast = locUtils.getLocNoRuleByFactory(type, factory);
                locMast = locUtils.getLocNoRuleByFactory(type,isEmpty ,factory);
            } else if (type == 6) {
                //半成品箱壳入库,入到吸塑2楼的370个库位里
                locMast = locUtils.getLocNoRuleByFloor(type, floor, 2);
                locMast = locUtils.getLocNoRuleByFloor(type, floor, isEmpty,2);
            } else {
                //不动这个逻辑
                locMast = getLocNoRule(type, floor, isEmpty, isCurrLev);