自动化立体仓库 - WMS系统
whycq
2024-05-24 d17a7346759fbb432cea1c83de63d29c6a3d330d
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -114,13 +114,13 @@
        wrkMast.setSourceStaNo(dto.getSourceStaNo());
        wrkMast.setStaNo(dto.getStaNo());
        wrkMast.setLocNo(dto.getLocNo());
        wrkMast.setBarcode(param.getBarcode()); // 托盘码
        wrkMast.setBarcode(param.getBarcode()); // 货架码
        wrkMast.setFullPlt("Y"); // 满板:Y
        wrkMast.setPicking("N"); // 拣料
        wrkMast.setExitMk("N"); // 退出
        wrkMast.setEmptyMk("N"); // 空板
        wrkMast.setLinkMis("N");
        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型
        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 货架类型
        wrkMast.setAppeUser(userId);
        wrkMast.setAppeTime(now);
        wrkMast.setModiUser(userId);
@@ -284,6 +284,7 @@
            }
        }
        ArrayList<String> outerLocs = new ArrayList<>();
        //检测是否为浅库位
        boolean sign=false;
        String th = "";
@@ -301,17 +302,32 @@
                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", outerLoc));
                    if (locMast != null) {
                        if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")) {
                            sign = true;
                            th = "库位号:" + locNo + " 浅库位有非空库位!";
                            break;
//                            sign = true;
//                            th = "库位号:" + locNo + " 浅库位有非空库位!";
//                            break;
                            OutLocDto outLocDto = new OutLocDto();
                            outLocDto.setLocNo(locMast.getLocNo());
                            List<LocDetlDto> locDetlDtos1 = new ArrayList<>();
                            for (LocDetl locDetl : locDetlService.selectByLocNo(locMast.getLocNo())) {
                                LocDetlDto locDetlDto = new LocDetlDto();
                                locDetlDto.setLocDetl(locDetl);
                                locDetlDto.setCount(locDetl.getAnfme());
                                locDetlDtos1.add(locDetlDto);
                            }
                            outLocDto.setLocDetlDtos(locDetlDtos1);
                            if (!outerLocs.contains(locMast.getLocNo())) {
                                dtos.add(outLocDto);
                                outerLocs.add(locMast.getLocNo());
                            }
                        }
                    }
                }
            }
        }
        if (sign){
            throw new CoolException("出库失败;"+th);
        }
//        if (sign){
//            throw new CoolException("出库失败;"+th);
//        }
        //**************325、331、333、339站点额外逻辑代码**************
        HashMap<String, Object> tmpMap = new HashMap<>();
@@ -511,26 +527,53 @@
            }
            Mat mat = matService.selectByMatnr(locDto.getMatnr());
            assert mat != null;
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.sync(mat);
            wrkDetl.setZpallet(wrkMast.getBarcode());
            wrkDetl.setIoTime(now);
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setBatch(locDto.getBatch());
            wrkDetl.setOrderNo(locDto.getOrderNo());
            wrkDetl.setAnfme(locDto.getAnfme()); // 数量
            wrkDetl.setAppeTime(now);
            wrkDetl.setAppeUser(userId);
            wrkDetl.setModiTime(now);
            wrkDetl.setModiUser(userId);
            wrkDetl.setSuppCode(locDto.getContainerCode());
            wrkDetl.setThreeCode(locDto.getCsocode());
            wrkDetl.setDeadTime(locDto.getIsoseq());
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作档明细失败");
            if (!BaseController.isJSON(locDto.getOrderNo())) {
                WrkDetl wrkDetl = new WrkDetl();
                wrkDetl.sync(mat);
                wrkDetl.setZpallet(wrkMast.getBarcode());
                wrkDetl.setIoTime(now);
                wrkDetl.setWrkNo(workNo);
                wrkDetl.setBatch(locDto.getBatch());
                wrkDetl.setOrderNo(locDto.getOrderNo());
                wrkDetl.setAnfme(locDto.getAnfme()); // 数量
                wrkDetl.setAppeTime(now);
                wrkDetl.setAppeUser(userId);
                wrkDetl.setModiTime(now);
                wrkDetl.setModiUser(userId);
                wrkDetl.setSuppCode(locDto.getContainerCode());
                wrkDetl.setThreeCode(locDto.getCsocode());
                wrkDetl.setDeadTime(locDto.getIsoseq());
                if (!wrkDetlService.insert(wrkDetl)) {
                    throw new CoolException("保存工作档明细失败");
                }
                //补货单则生成AGV入库通知档
                generateAgvWaitpakin(wrkDetl);
            }else {
                List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                orderDtoList.forEach(orderDto -> {
                    WrkDetl wrkDetl = new WrkDetl();
                    wrkDetl.sync(mat);
                    wrkDetl.setZpallet(wrkMast.getBarcode());
                    wrkDetl.setIoTime(now);
                    wrkDetl.setWrkNo(workNo);
                    wrkDetl.setBatch(locDto.getBatch());
                    wrkDetl.setOrderNo(orderDto.getOrderNo());
                    wrkDetl.setAnfme(orderDto.getAnfme()); // 数量
                    wrkDetl.setAppeTime(now);
                    wrkDetl.setAppeUser(userId);
                    wrkDetl.setModiTime(now);
                    wrkDetl.setModiUser(userId);
                    wrkDetl.setSuppCode(locDto.getContainerCode());
                    wrkDetl.setThreeCode(locDto.getCsocode());
                    wrkDetl.setDeadTime(locDto.getIsoseq());
                    if (!wrkDetlService.insert(wrkDetl)) {
                        throw new CoolException("保存工作档明细失败");
                    }
                    //补货单则生成AGV入库通知档
                    generateAgvWaitpakin(wrkDetl);
                });
            }
            //补货单则生成AGV入库通知档
            generateAgvWaitpakin(wrkDetl);
            // 修改订单明细
            if (!BaseController.isJSON(locDto.getOrderNo())) {
@@ -557,8 +600,9 @@
                        orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
                    }
                    if(locAnfme > orderDetl.getAnfme()){
                        orderAnfme = orderDetl.getAnfme();
                    orderAnfme = orderDetl.getAnfme() - orderDetl.getQty();
                    if(locAnfme > orderAnfme){
                        locAnfme -= orderAnfme;
                    }else {
                        orderAnfme = locAnfme;
@@ -612,7 +656,7 @@
        wrkMast.setExitMk("N"); // 退出
        wrkMast.setEmptyMk("Y"); // 空板
        wrkMast.setLinkMis("N");
        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型
        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 货架类型
        // 操作人员数据
        wrkMast.setAppeUser(userId);
        wrkMast.setAppeTime(new Date());
@@ -799,7 +843,7 @@
        wrkMast.setPicking("N"); // 拣料
        wrkMast.setExitMk("N"); // 退出
        wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 空板
        wrkMast.setBarcode(sourceLoc.getBarcode()); // 托盘码
        wrkMast.setBarcode(sourceLoc.getBarcode()); // 货架码
        wrkMast.setLinkMis("N");
        wrkMast.setAppeUser(userId);
        wrkMast.setAppeTime(now);