自动化立体仓库 - WMS系统
zyx
2023-10-18 080fdceed464c56f43633e85daeaf929d40496af
src/main/java/com/zy/asrs/controller/OutController.java
@@ -53,6 +53,8 @@
    private ManLocDetlService manLocDetlService;
    @Autowired
    private ManPakOutService manPakOutService;
    @Autowired
    private DocTypeService docTypeService;
    @Autowired
    private AgvLocDetlService agvLocDetlService;
@@ -69,28 +71,75 @@
    @ManagerAuth
    public R pakoutPreview(@RequestBody List<Long> ids) {
//        Order order = orderService.selectById(ids.get(0));
//
//        DocType docType = docTypeService.selectById(order.getDocType());
//
//        if("人工补货单".equals(docType.getDocName())){
//            List<OrderDetl> orderDetlList = orderDetlService.selectBatchIds(ids);
//            //返回给前端的库位以及站点信息
//            List<LocDto> locDtoList = new ArrayList<>();
//
//            for (OrderDetl orderDetl : orderDetlList) {
//
//                double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
//                if (issued <= 0.0D) { continue; }
//
//                //从平库寻找
//                //issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
//
//                //先找AGV的库存,如果返回的issued大于0,则去四项库找
//                //issued = agvLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
//
//                //从四项库的库存里面找,
//                issued = locDetlService.queryStockAndSetLocDto1(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
//
//                if (issued > 0) {
//                    LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
//                    locDto.setLack(Boolean.TRUE);
//                    locDtoList.add(locDto);
//                }
//            }
//            return R.ok().add(locDtoList);
//        }
        List<OrderDetl> orderDetlList = orderDetlService.selectBatchIds(ids);
        //返回给前端的库位以及站点信息
        List<LocDto> locDtoList = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetlList) {
            double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
            if (issued <= 0.0D) { continue; }
            Order order = orderService.selectByNo(orderDetl.getOrderNo());
            DocType docType = docTypeService.selectById(order.getDocType());
            if("人工补货单".equals(docType.getDocName())){
                if (issued <= 0.0D) { continue; }
                issued = locDetlService.queryStockAndSetLocDto1(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                if (issued > 0) {
                    LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
                    locDto.setLack(Boolean.TRUE);
                    locDtoList.add(locDto);
                }
            }else {
                //double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
                if (issued <= 0.0D) { continue; }
            //从平库寻找
            issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                //从平库寻找
                issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
            //先找AGV的库存,如果返回的issued大于0,则去四项库找
            issued = agvLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                //先找AGV的库存,如果返回的issued大于0,则去四项库找
                issued = agvLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
            //从四项库的库存里面找,
            issued = locDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
                //从四项库的库存里面找,
                issued = locDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
            if (issued > 0) {
                LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
                locDto.setLack(Boolean.TRUE);
                locDtoList.add(locDto);
                if (issued > 0) {
                    LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
                    locDto.setLack(Boolean.TRUE);
                    locDtoList.add(locDto);
                }
            }
        }
        return R.ok().add(locDtoList);
@@ -132,7 +181,7 @@
        agvWorkService.stockOutWrkMast(agvTaskDtos, getUserId());
        // 生成出库任务
        List<String> excludeLocNos = taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList());
        taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList());
        for (TaskDto taskDto : taskDtos) {
            BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
            workService.stockOut(staNo, taskDto, getUserId());
@@ -434,13 +483,14 @@
        }else{
            manPakOut.setUuid(manPakOutExist.getUuid());
        }
        try{
            if (!manPakOutService.insert(manPakOut)){
                return R.error("添加拣货明细失败,请联系管理员");
            }
        }catch (Exception e){
            return R.error("添加拣货明细失败,请联系管理员");
        }
        manPakOutService.insert(manPakOut);
//        try{
//            if (!manPakOutService.insert(manPakOut)){
//                return R.error("添加拣货明细失败,请联系管理员");
//            }
//        }catch (Exception e){
//            return R.error("添加拣货明细失败,请联系管理员");
//        }
        return R.ok();
    }