自动化立体仓库 - WMS系统
#
whycq
2024-07-02 228ad4f5ea9b6f0c5af8110072cf00dcb27c4b60
#
3个文件已修改
129 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -59,8 +59,6 @@
    private CommonService commonService;
    @Autowired
    private MatService matService;
    @Autowired
    private BomMatService bomMatService;
    // 商品上架
    @RequestMapping("/mat/onSale/auth")
@@ -120,38 +118,6 @@
        return R.ok("组托成功");
    }
    @RequestMapping("/comb/checkBom")
    @ManagerAuth(memo = "校验Bom")
    public R checkBom(@RequestBody CheckBom checkBom){
        BomMat bomMat = new BomMat();
        // 没有输入bom号正常组托
        if (Cools.isEmpty(checkBom.getBomCode())) {
            return R.ok();
        }
        if (Cools.isEmpty(checkBom.getMatnr())) {
            return R.ok().add(bomMat);
        } else {
            // 检查是否在bom清单内
            bomMat = bomMatService.selectOne(new EntityWrapper<BomMat>().eq("unit_num", checkBom.getBomCode()).eq("element_num", checkBom.getMatnr()));
            if (Cools.isEmpty(bomMat)) {
                throw new CoolException("当前物料" + checkBom.getMatnr() + "不在Bom清单内");
            } else {
                // 检查库存中是否有当前bom的物料
                Double bomQyt = locDetlService.getBomQyt(checkBom.getBomCode(), checkBom.getMatnr());
                if (!Cools.isEmpty(bomQyt)) {
                    bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQyt);
                }
                Double bomQty = wrkDetlService.getBomQty(checkBom.getBomCode(), checkBom.getMatnr());
                if (!Cools.isEmpty(bomQty)) {
                    bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQty);
                }
                // 检查工作档中是否有当前bom的物料
            }
        }
        return R.ok().add(bomMat);
    }
    @RequestMapping("/pack/get/auth")
    @ManagerAuth
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -79,8 +79,6 @@
    private  DocTypeService docTypeService;
    @Autowired
    private MatV2Service matV2Service;
    @Autowired
    private BomMatService bomMatService;
    @Override
    @Transactional
@@ -292,25 +290,6 @@
                    waitPakin.setBrand("组件");
                } else {
                    waitPakin.sync(mat);
                }
                // 校验是否为bom入库  bom入库的数量不能超过库存原有数量
                if (!Cools.isEmpty(param.getBomCode())) {
                    BomMat bomMat = bomMatService.selectOne(new EntityWrapper<BomMat>().eq("unit_num", param.getBomCode()).eq("element_num", detlDto.getMatnr()));
                    Double bomQyt = locDetlService.getBomQyt(param.getBomCode(), detlDto.getMatnr());
                    if (!Cools.isEmpty(bomQyt)) {
                        bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQyt);
                    }
                    Double bomQty = wrkDetlService.getBomQty(param.getBomCode(), detlDto.getMatnr());
                    if (!Cools.isEmpty(bomQty)) {
                        bomMat.setZpalletAnfme(bomMat.getZpalletAnfme() - bomQty);
                    }
                    if (bomMat.getZpalletAnfme() == 0.0D) {
                        throw new CoolException(detlDto.getMatnr() + "当前物料已入最大数量");
                    } else {
                        if (bomMat.getZpalletAnfme() < detlDto.getAnfme()) {
                            throw new CoolException(detlDto.getMatnr() + "当前物料最多可入" + bomMat.getZpalletAnfme() + "件");
                        }
                    }
                }
                waitPakin.setBatch(detlDto.getBatch());
                waitPakin.setZpallet(param.getBarcode());   // 托盘码
src/main/java/com/zy/common/service/CommonService.java
@@ -97,7 +97,8 @@
     */
    @Transactional
    public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int times) {
//        whsType = getWhsType(sourceStaNo, times);
        //whsType = getWhsType(sourceStaNo, times);
        StartupDto startupDto = new StartupDto();
@@ -107,6 +108,7 @@
            throw new CoolException("数据异常,请联系管理员");
        }
        // ===============>>>> 开始执行
        // ===============>>>> 开始执行
        int curRow = rowLastno.getCurrentRow();
        int sRow = rowLastno.getsRow();
@@ -118,14 +120,60 @@
        // 目标库位
        LocMast locMast = null;
        // 靠近摆放规则 --- 同天同规格物料
        if (!Cools.isEmpty(matNos)) {
            List<String> locNos = locDetlService.getSameDetlToday(matNos.get(0), sRow, eRow);
            for (String locNo : locNos) {
                if (Utils.isShallowLoc(slaveProperties, locNo)) {
                    continue;
                }
                String shallowLocNo = Utils.getShallowLoc(slaveProperties, locNo);
                // 检测目标库位是否为空库位
                LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) {
                    if (VersionUtils.locMoveCheckLocType(shallowLoc, locTypeDto)) {
                        if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) {
                            locMast = shallowLoc;
                            crnNo = locMast.getCrnNo();
                            break;
                        }
                    }
                }
            }
        }
        // 靠近摆放规则 --- 空托
        if (staDescId == 10) {
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
            if (locMasts.size() > 0) {
                for (LocMast loc : locMasts) {
                    if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) {
                        continue;
                    }
                    String shallowLocNo = Utils.getShallowLoc(slaveProperties,  loc.getLocNo());
                    // 检测目标库位是否为空库位
                    LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                    if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) {
                        if (shallowLoc.getLocType1()<locTypeDto.getLocType1()){
                            continue;
                        }
                        if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) {
                            locMast = shallowLoc;
                            crnNo = locMast.getCrnNo();
                            break;
                        }
                    }
                }
            }
        }
        // 如果没有相近物料,则按规则轮询货架
        if (null == locMast) {
            Shelves shelves = new Shelves(rowCount, crn_qty);
            int divides = (int) Arith.divides(1, curRow - 1, 2);
            curRow = (int) Arith.remainder(curRow, 2);
            int divides = (int) Arith.divides(1, curRow - 1, 4);
            curRow = (int) Arith.remainder(curRow, 4);
            if (curRow == 0) {
                curRow = 2;
                curRow = 4;
            }
            for (int i = 0; i < shelves.group; i ++) {
                curRow = shelves.start(curRow);
@@ -136,7 +184,7 @@
                crnNo1 = crnNo1 + divides*1;
                if (basCrnpService.checkSiteError(crnNo1, true)) {
                    crnNo = crnNo1;
                    curRow = curRow + divides*2;
                    curRow = curRow + divides*4;
                    break;
                }
            }
@@ -193,9 +241,13 @@
                // 目标库位 ===>> 深库位, 则校验其浅库位是否为 O
                if (null != locMast && Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) {
                    LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, locMast.getLocNo()));
                    if (!shallowLoc.getLocSts().equals("O")) {
                        locMast = null;
                    if (!Cools.isEmpty(shallowLoc)) {
                        if (!shallowLoc.getLocSts().equals("O")) {
                            locMast = null;
                        }
                    }
                }
            }
        }
@@ -209,10 +261,10 @@
            }
            // 轻货物找轻库位为空时,可以去找重库位仓
            if (locTypeDto.getLocType1() == 2) {
                locTypeDto.setLocType1((short) 1);
                return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times);
            }
//            if (locTypeDto.getLocType1() == 1) {
//                locTypeDto.setLocType1((short) 1);
//                return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times);
//            }
            log.error("系统没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
            throw new CoolException("没有空库位");
        }