自动化立体仓库 - WMS系统
#
whycq
2024-06-12 ce4a6c80a379cd46acd59c8aff9212ad8d399825
src/main/java/com/zy/asrs/controller/OutController.java
@@ -164,6 +164,51 @@
        }
        return R.ok();
    }
    @PostMapping("/process/out/pakout/auth")
    @ManagerAuth(memo = "加工出库")
    @Transactional
    @Synchronized
    public synchronized R processPakout(@RequestBody List<LocDto> locDtos) throws InterruptedException {
        //判断是否可以生成出库工作档
        boolean lack = true;
        for (LocDto locDto : locDtos) {
            //如果AGV出库站为空 和 四项库出库站为空 并且 有库存的情况下 则返回
            if (Cools.isEmpty(locDto.getStaNo()) && Cools.isEmpty(locDto.getAgvStaNo()) &&!locDto.isLack()) {
                return R.error(locDto.getLocNo()+"库位请选择出库站");
            }
            AgvLocMast agvLocMast = agvLocMastService.selectById(locDto.getLocNo());
            List<String> staNoList = agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(),agvLocMast.getFloor());
            if(!staNoList.contains(locDto.getAgvStaNo())){
                return R.error(locDto.getAgvStaNo()+"该站点已有出库任务,无法选择该站点出库");
            }
        }
        //如果所有库都没有库存,则返回
        for (LocDto locDto : locDtos) {
            if (!locDto.isLack()) {
                lack = false;
                break;
            }
        }
        if (lack) {
            return R.error("库存不足");
        }
        Thread.sleep(500L);
        // 订单预校验  ===>> 1.订单状态; 2.订单带出数量
        List<OrderDto> orderDtos = orderPreVerification(locDtos);
        List<TaskDto> taskDtos = new ArrayList<>();
        List<TaskDto> agvTaskDtos = new ArrayList<>();
        generateTaskDto(locDtos,taskDtos,agvTaskDtos);
        //生成AGV出库任务
        agvWorkService.processOut(agvTaskDtos, getUserId());
        return R.ok();
    }
    /**