自动化立体仓库 - WMS系统
zhangc
2025-03-03 24bc9aa5888c7b98cf0a7d1bf05ec6c5624d3719
src/main/java/com/zy/common/service/AgvCommonService.java
@@ -128,7 +128,11 @@
//                locMast = locUtils.getLocNoRuleByFloor(type, floor, isEmpty, 2);
//            } else {
//                //不动这个逻辑
            locMast = getLocNoRule(type, floor, isEmpty, isCurrLev);
            if (type == 6) {
                locMast = locUtils.getLocNoRuleByFloor(type, floor);
            } else {
                locMast = getLocNoRule(type, floor, isEmpty, isCurrLev);
            }
//            }
            if (locMast != null) {
                return locMast;
@@ -144,7 +148,7 @@
    /**
     * 库位规则查找
     */
    public AgvLocMast getLocByLocRule(int type, int floor, String factory) {
    public synchronized AgvLocMast getLocByLocRule(int type, int floor, String factory, boolean flag) {
        try {
            EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
@@ -157,7 +161,7 @@
                //B是二厂,G是三厂
                switch (factory) {
                    case "B":
                        wrapper.eq("floor", floor).orderBy("lev1", false);
                        wrapper.eq("floor", floor).orderBy("lev1", false).orderBy("row1", flag);
                        break;
                    case "G":
                        wrapper.eq("floor", floor).orderBy("lev1", true);
@@ -179,6 +183,8 @@
        } catch (Exception e) {
            throw new CoolException("搜索库位时,未找到可入库库位。");
        }
    }
    /**
@@ -223,6 +229,28 @@
            return null;
        } catch (Exception e) {
            throw new CoolException("搜索库位时,未找到可入库库位。");
        }
    }
    /*
库位规则查找
 */
    public AgvLocMast getLocByFloor(int type, int floor) {
        try {
            EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
            wrapper.eq("loc_sts", "O").eq("loc_type1", type);
            wrapper.eq("floor", floor).orderBy("lev1", false);
            List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(wrapper);
            for (AgvLocMast agvLocMast : agvLocMasts) {
                AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo()));
                if (agvLocMast1.getLocSts().equals("O")) {
                    return agvLocMast1;
                }
            }
            return null;
        } catch (Exception e) {
            return null;
        }
    }
@@ -299,6 +327,24 @@
        throw new CoolException("搜索库位时,楼层出错。");
    }
    public AgvLocMast getLocNoOnXiSuer(int type, int floor) {
        EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>();
        wrapper.eq("loc_sts", "O").eq("loc_type1", type);
        wrapper.eq("floor", floor).orderBy("lev1", false);
        List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(wrapper);
        if (Cools.isEmpty(agvLocMasts)) {
            return null;
        } else {
            for (AgvLocMast agvLocMast : agvLocMasts) {
                AgvLocMast agvLocMast1 = agvLocMastService.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_no", agvLocMast.getLocNo()));
                if (agvLocMast1.getLocSts().equals("O")) {
                    return agvLocMast1;
                }
            }
        }
        return null;
    }
    //随机取一个货位
    private AgvLocMast getLocNoRule(int type, int floor, boolean isEmpty, boolean isCurrLev) {