自动化立体仓库 - WMS系统
#
whycq
2024-06-13 2f328c198aa83fa274c91fa70cf955abbe336c07
src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -99,7 +99,7 @@
            wrkMast.setMk(isConveyor ? "Y" : "N");
            //生成工作档明细
            agvWaitPakinList.forEach(wp -> {
                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime());
                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime(),wp.getProcessSts());
            });
            //更新源站点信息
            updateAgvBasDevp(agvBasDevp,"R");
@@ -151,7 +151,8 @@
                            now,
                            userId,
                            locDto.getCsocode(),
                            locDto.getIsoseq());
                            locDto.getIsoseq(),
                            locDto.getProcessSts());
                }else {
                    List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                    orderDtoList.forEach(orderDto -> {
@@ -165,7 +166,8 @@
                                now,
                                userId,
                                locDto.getCsocode(),
                                locDto.getIsoseq());
                                locDto.getIsoseq(),
                                locDto.getProcessSts());
                    });
                }
@@ -180,6 +182,80 @@
            //更新目标站点状态
            //locSts = ioType == 101 ? "S" : "Q";
            updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo),"S");
        });
    }
    /*
    加工出库
     */
    @Transactional
    public void processOut(List<TaskDto> agvTaskDtos, Long userId) {
        Date now = new Date();
        agvTaskDtos.forEach(taskDto -> {
            List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectByTaskDto(taskDto);
            //AgvLocDetl agvLocDetl = agvLocDetlService.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", taskDto.getLocNo()));
            //工作档所需参数
            long wrkSts = 21L;
            String sourceLocNo = taskDto.getLocNo();
            String targetLocNo = taskDto.getAgvStaNo();
            //String barcode = agvLocDetls.get(0).getSuppCode();
            String containerCode = taskDto.getLocDtos().get(0).getContainerCode();
            //判断是否全板出库
            int ioType = 107;
            //生成工作档
            AgvWrkMast wrkMast = createWrkMast(ioType,wrkSts,sourceLocNo,targetLocNo,containerCode,now,userId,Short.valueOf(containerCode.substring(0,2)));
            //生成工作档明细
            taskDto.getLocDtos().forEach(locDto -> {
                if (!BaseController.isJSON(locDto.getOrderNo())) {
                    //明细档所需参数
                    createWrkDetlReWrite(locDto.getMatnr(),
                            wrkMast.getWrkNo(),
                            locDto.getOrderNo(),
                            locDto.getBatch(),
                            locDto.getAnfme(),
                            locDto.getContainerCode(),
                            now,
                            userId,
                            locDto.getCsocode(),
                            locDto.getIsoseq(),
                            locDto.getProcessSts());
                }else {
                    List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                    orderDtoList.forEach(orderDto -> {
                        //明细档所需参数
                        createWrkDetlReWrite(locDto.getMatnr(),
                                wrkMast.getWrkNo(),
                                orderDto.getOrderNo(),
                                locDto.getBatch(),
                                orderDto.getAnfme(),
                                locDto.getContainerCode(),
                                now,
                                userId,
                                locDto.getCsocode(),
                                locDto.getIsoseq(),
                                locDto.getProcessSts());
                    });
                }
                //修改订单信息
                modifyOrderDetl(locDto, userId);
            });
//            //修改订单信息
//            modifyOrderDetl(taskDto.getLocDtos().get(0), userId);
            //更新源站点信息
            String locSts = "R";
            updateAgvLocMast(agvLocMastService.selectById(sourceLocNo),locSts);
            //更新目标站点状态
            //locSts = ioType == 101 ? "S" : "Q";
            updateAgvBasDevp(agvBasDevpService.selectById(targetLocNo),"S",Short.valueOf(containerCode.substring(0,2)),containerCode);
        });
    }
@@ -243,7 +319,7 @@
        List<TaskDto> taskDtos = new ArrayList<>();
        param.getLocDetls().forEach(locDetl -> {
            LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode());
            LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode(), locDetl.getProcessSts());
            TaskDto taskDto = new TaskDto(locDetl.getLocNo(),station,locDto);
            if(TaskDto.has(taskDtos,taskDto)){
                TaskDto.find(taskDtos,taskDto).getLocDtos().add(locDto);
@@ -277,7 +353,8 @@
                        now,
                        userId,
                        locDto.getCsocode(),
                        locDto.getIsoseq());
                        locDto.getIsoseq(),
                        locDto.getProcessSts());
            });
            updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()),"P");
            //更新目标站点状态
@@ -308,7 +385,7 @@
        //生成移库工作档
        AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,getContainerTypeByloc(sourceLocNo));
        //生成工作党明细
        createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime());
        createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime(),sourceLocDetl.getProcessSts());
        //修改目标库位状态
        updateAgvLocMast(targetLocMast,"S");
        //修改原库位状态
@@ -362,6 +439,8 @@
            locType = 4;
        } else if (containerType == 20 && agvBasDevp.getFloor() == 3) {
            locType = 2;
        } else if (containerType == 30) {
            locType = 3;
        } else {
            locType = agvBasDevp.getLocType1();
        }
@@ -385,8 +464,10 @@
        if(!Cools.isEmpty(agvWaitPakinList)){
            AtomicBoolean isCurrLev = new AtomicBoolean(false);
            agvWaitPakinList.forEach(agvWaitPakin -> {
                if (agvWaitPakin.getProcessSts() == 1) {
                    isCurrLev.set(true);
                if (!Cools.isEmpty(agvWaitPakin.getProcessSts())) {
                    if (agvWaitPakin.getProcessSts() == 1) {
                        isCurrLev.set(true);
                    }
                }
            });
            if (isCurrLev.get()) {
@@ -800,6 +881,7 @@
                        }
                    }else {
                        agvLocMastService.updateLocStsByLocNo(locNo,"D",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue());
                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",null);
                    }
                } else if (wrkMast.getIoType() == 113) {