自动化立体仓库 - WMS系统
zhangc
2025-03-02 e2ed35c5dbda6ff80fddf5f0ae1fe39ad407fb6b
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;
@@ -152,15 +156,15 @@
            List<AgvLocMast> agvLocMasts = new ArrayList<>();
            //不是空板优先找2层
            if (Cools.isEmpty(factory)) {
                wrapper.eq("floor", floor).orderBy("lev1", false);
                wrapper.eq("floor", floor).orderBy("lev1", true);
            } else {
                //B是二厂,G是三厂
                switch (factory) {
                    case "B":
                        wrapper.eq("floor", floor).orderBy("lev1", true);
                        wrapper.eq("floor", floor).orderBy("lev1", false);
                        break;
                    case "G":
                        wrapper.eq("floor", floor).orderBy("lev1", false);
                        wrapper.eq("floor", floor).orderBy("lev1", true);
                        break;
                    default:
                        wrapper.eq("floor", floor).orderBy("lev1", true);
@@ -299,6 +303,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) {