自动化立体仓库 - WMS系统
lty
2025-01-04 c23c5d3adeac7dca6cc10e4fe96b8d0693a06d16
src/main/java/com/zy/common/web/WcsController.java
@@ -67,13 +67,13 @@
    public synchronized Re getLocNo(@RequestBody SearchLocParam param) {
        log.info("收到WCS入库接口请求====>>入参:{}", param);
        if (Cools.isEmpty(param.getCargoHeight())) {
            return Re.error("入出库类型不能为空");
            return Re.error("高低库类型不能为空");
        }
        if (Cools.isEmpty(param.getFromPort())) {
            return Re.error("源站编号不能为空");
        }
        List<WaitPakin> waitPakins = null;
        if (param.getFromPort().equals("100")) {
        if (param.getFromPort().equals("101")) {
            //有空板出库时禁止入库
            int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type",110).eq("sta_no",100).notIn("wrk_sts",7));
@@ -81,11 +81,11 @@
                return Re.error("有空板出库到100站时时禁止入库");
            }
            if (Cools.isEmpty(param.getBarCode())) {
            if (Cools.isEmpty(param.getBarCode()) && param.getIoType() != 10) {
                return Re.error("条码不能为空");
            }
            waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarCode()));
            if (Cools.isEmpty(waitPakins)) {
            if (Cools.isEmpty(waitPakins) && param.getIoType() != 10) {
                WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarCode());
                if (wrkMast != null && wrkMast.getIoType() == 103) {
                    return Re.parse(CodeRes.PICK_600);
@@ -99,7 +99,7 @@
            }
        }else {
            //有满板出库时禁止空板入库
            int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no",200).andNew().eq("io_type",101).or().eq("io_type",110));
            int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("sta_no",100).andNew().eq("io_type",101).or().eq("io_type",110));
            if(wrkCount > 0){
                return Re.error("有满板出库时禁止空板入库");
            }
@@ -119,12 +119,12 @@
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        StartupDto dto = null;
        switch (param.getFromPort()) {
            case "100"://满托盘入库
        switch (param.getIoType()) {
            case 1://满托盘入库
                assert waitPakins != null;
                dto = startupFullPutStore(Integer.valueOf(param.getFromPort()), param.getBarCode(), locTypeDto, waitPakins);
                break;
            case "200"://空托盘入库
            case 10://空托盘入库
                dto = emptyPlateIn(Integer.valueOf(param.getFromPort()), locTypeDto, param.getBarCode());
                break;
            default:
@@ -195,6 +195,9 @@
        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, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto);
        if(dto == null){
            throw new CoolException("没有检索到空库位");
        }
        int workNo = dto.getWorkNo();
        Date now = new Date();
        // 生成工作档
@@ -339,7 +342,28 @@
         * 完成,8-任务结束
         */
        if (statusParam.getTaskStatus()==0){
            wrkMast.setWrkSts(1L);//1.已接收
            //拣料和盘点再入库判断
            if((wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) && wrkMast.getWrkSts() == 14){
                Date now = new Date();
                wrkMast.setIoTime(now);
                wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57
                wrkMast.setWrkSts(1L);//1.已接收
                wrkMast.setSourceStaNo(101); // 源站
                wrkMast.setStaNo(null); // 目标站
                wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 目标库位 = 出库时的源库位
                wrkMast.setSourceLocNo(""); // 源库位清空
                wrkMast.setModiTime(now);
                // 修改库位状态 Q.拣料/盘点/并板再入库
                LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
                locMast.setLocSts("Q");
                locMast.setModiTime(new Date());
                if (!locMastService.updateById(locMast)) {
                    throw new CoolException("修改库位状态失败");
                }
            }else{
                wrkMast.setWrkSts(1L);//1.已接收
            }
        }else if (statusParam.getTaskStatus()==1){
            wrkMast.setWrkSts(2L);//2.任务开始
        }else if (statusParam.getTaskStatus()==2){
@@ -347,11 +371,12 @@
        }else if (statusParam.getTaskStatus()==3){
            wrkMast.setWrkSts(6L);//6.任务中断
        } else if (statusParam.getTaskStatus()==4 || statusParam.getTaskStatus()==8){
//            wrkMast.setWrkSts(7L);//6.放货完成
            if(wrkMast.getIoType()==1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 11){
            if(wrkMast.getIoType()==1 || wrkMast.getIoType() == 10 || wrkMast.getIoType() == 11 || wrkMast.getIoType() == 53 ||wrkMast.getIoType() == 57){
                wrkMast.setWrkSts(4L);//4.入库完成
            }else if (wrkMast.getIoType()==101 || wrkMast.getIoType()==110){
            }else if (wrkMast.getIoType()==103 || wrkMast.getIoType()==107){
                wrkMast.setWrkSts(14L);//14.已出库未确认
            }else if (wrkMast.getIoType()==101 || wrkMast.getIoType()==110){
                wrkMast.setWrkSts(7L);//7.出库完成
            }
        }
        wrkMastService.updateById(wrkMast);