自动化立体仓库 - WMS系统
#
whycq
2024-08-02 e97bfb5567d95dea572f84a84db9c4151b884656
src/main/java/com/zy/asrs/controller/OutController.java
@@ -13,6 +13,7 @@
import com.zy.common.model.OrderMergeVo;
import com.zy.common.model.TaskDto;
import com.zy.common.web.BaseController;
import lombok.Synchronized;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -83,7 +84,7 @@
                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 locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued,orderDetl.getProcessSts());
                    locDto.setLack(Boolean.TRUE);
                    locDtoList.add(locDto);
                }
@@ -100,7 +101,7 @@
                //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 locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued,orderDetl.getProcessSts());
                    locDto.setLack(Boolean.TRUE);
                    locDtoList.add(locDto);
                }
@@ -115,6 +116,7 @@
    @PostMapping("/out/pakout/auth")
    @ManagerAuth(memo = "订单出库")
    @Transactional
    @Synchronized
    public synchronized R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException {
        //判断是否可以生成出库工作档
@@ -129,7 +131,7 @@
            List<String> staNoList = agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(),agvLocMast.getFloor());
            if(!staNoList.contains(locDto.getAgvStaNo())){
                return R.error(locDto.getStaNo()+"该站点已有出库任务,无法选择该站点出库");
                return R.error(locDto.getAgvStaNo()+"该站点已有出库任务,无法选择该站点出库");
            }
        }
        //如果所有库都没有库存,则返回
@@ -162,6 +164,52 @@
        }
        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();
    }
    /**