自动化立体仓库 - WMS系统
lty
2025-05-22 5c6693c727d37f2c64c7ecded5a7d96b28eacf2e
src/main/java/com/zy/common/web/WcsController.java
@@ -53,6 +53,12 @@
    @Autowired
    private StaDescService staDescService;
    @Autowired
    private OrderService orderService;
    @Autowired
    private OrderDetlService orderDetlService;
    @PostMapping("/pakin/loc/v1")
    @ResponseBody
@@ -78,15 +84,24 @@
                return R.parse(CodeRes.NO_COMB_700);
            }
            int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
            if (countLoc > 0) {
                return R.error("库存条码数据已存在");
            }
            int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()));
            if (countLoc > 0 || countWrk > 0) {
                return R.error(CodeRes.EXIST_500);
            if (countWrk > 0) {
                return R.error("工作档已存在");
            }
        }
        if (Cools.isEmpty(param.getLocType1())) {
            return R.error("高低检测信号不能为空");
        }
        try {
            // 延迟 3 秒再检测
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 源站点状态检测
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
        sourceStaNo.setLocType1(param.getLocType1());
@@ -96,7 +111,7 @@
        switch (param.getIoType()) {
            case 1://满托盘入库
                assert waitPakins != null;
                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins);
                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(),param.getWeight(), locTypeDto, waitPakins);
                break;
            case 10://空托盘入库
                dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode());
@@ -312,13 +327,13 @@
     * 全板入库
     */
    @Transactional
    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) {
    public StartupDto startupFullPutStore(Integer devpNo, String barcode,Double weight, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) {
        // 源站点状态检测
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
        // 检索库位
        List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
        List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
        StartupDto dto = commonService.getLocNo(1, 1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto);
        StartupDto dto = commonService.getLocNo(2, 1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto);
        int workNo = dto.getWorkNo();
        Date now = new Date();
        // 生成工作档
@@ -338,6 +353,7 @@
        wrkMast.setExitMk("N"); // 退出
        wrkMast.setEmptyMk("N"); // 空板
        wrkMast.setLinkMis("Y");
        wrkMast.setScWeight(weight);
        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型
        // 操作人员数据
        wrkMast.setAppeTime(now);
@@ -350,10 +366,28 @@
        waitPakins.forEach(waitPakin -> {
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.sync(waitPakin);
            wrkDetl.setWeight(wrkMast.getScWeight());
            wrkDetl.setWrkNo(wrkMast.getWrkNo());
            wrkDetl.setIoTime(wrkMast.getIoTime());
            wrkDetl.setAppeTime(now);
            wrkDetl.setModiTime(now);
            if (!Cools.isEmpty(waitPakin.getOrderNo())) {
                Order order = orderService.selectByNo(waitPakin.getOrderNo());
                if (order != null) {
                    OrderDetl orderDetl = orderDetlService.selectItem(waitPakin);
                    wrkDetl.setBatch(orderDetl.getBatch());
                    wrkDetl.setProType(orderDetl.getProType());
                    wrkDetl.setSPgNO(orderDetl.getSPgNO());
                    wrkDetl.setOutOrderNo(orderDetl.getOutOrderNo());
//                    wrkDetl.setLuHao(orderDetl.getLuHao());
                    wrkDetl.setSupp(orderDetl.getSupp());
                    wrkDetl.setSuppCode(orderDetl.getSuppCode());
                    wrkDetl.setPacking(orderDetl.getPacking());
                    wrkDetl.setColor(orderDetl.getColor());
                    wrkDetl.setWareId(orderDetl.getWareId());
                    wrkDetl.setWareName(orderDetl.getWareName());
                }
            }
            if (!wrkDetlService.insert(wrkDetl)) {
                throw new CoolException("保存工作明细失败");
            }
@@ -362,6 +396,7 @@
        Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
                .eq("zpallet", barcode);
        WaitPakin setParam = new WaitPakin();
        setParam.setWeight(weight);//将整托重量记入通知档
        setParam.setLocNo(dto.getLocNo());
        setParam.setIoStatus("Y");
        setParam.setModiTime(now);