自动化立体仓库 - WMS系统
zwl
2025-09-08 b5f5d11e518ac4ef7eafb4c5c5f3e9c710c55e38
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -157,8 +157,7 @@
    @Override
    @Transactional
    public void startupFullTakeStore(StockOutParam param, Long userId) {
        // 目标站点状态检测
        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
        String agvStaNo = param.getOutSite();
        // 获取库位明细
        List<LocDetlDto> locDetlDtos = new ArrayList<>();
        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
@@ -168,8 +167,9 @@
            }
        }
        if (!locDetlDtos.isEmpty()) {
            // 启动出库开始 101.出库
            stockOut(staNo, locDetlDtos, null, userId);
            stockOut(null, locDetlDtos, null, userId,agvStaNo);
        } else {
            throw new CoolException("库存不存在");
        }
@@ -177,7 +177,7 @@
    @Override
    @Transactional
    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) {
    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId,String agvStaNo) {
        Date now = new Date();
        // 合并同类项
        Set<String> locNos = new HashSet<>();
@@ -215,8 +215,15 @@
            if(!locMast.getLocSts().equals("F")){
                throw new CoolException(dto.getLocNo()+"托盘非在库状态");
            }
            Integer outSta = 0;
            if(locMast.getCrnNo()==1){
                outSta = 105;
            }else if(locMast.getCrnNo()==2){
                outSta = 103;
            }else if(locMast.getCrnNo()==3){
                outSta = 101;
            }
            Integer outSta = staNo.getDevNo();
            //2号堆垛机全板出库站指定为204站,拣料站指定为202
//            if(locMast.getCrnNo()==2){
//                outSta = ioType == 101 ? 204 : 202;
@@ -247,6 +254,7 @@
            wrkMast.setAppeTime(now);
            wrkMast.setModiUser(userId);
            wrkMast.setModiTime(now);
            wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo);
            if (!wrkMastService.insert(wrkMast)) {
                throw new CoolException("保存工作档失败,出库库位号:"+dto.getLocNo());
            }
@@ -285,7 +293,7 @@
    @Override
    @Transactional
    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId,String agvStaNo) {
        Date now = new Date();
        List<LocDto> locDtos = taskDto.getLocDtos();
        for (LocDto locDto : locDtos) {
@@ -297,7 +305,16 @@
        LocMast locMast = locMastService.selectById(taskDto.getLocNo());
        // 获取路径
        int ioType = taskDto.isAll() ? 101 : 103;
        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
        Integer outSta = 0;
        if(locMast.getCrnNo()==1){
            outSta = 106;
        }else if(locMast.getCrnNo()==2){
            outSta = 104;
        }else if(locMast.getCrnNo()==3){
            outSta = 102;
        }
        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(),outSta);
        // 生成工作号
        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
        // 生成工作档
@@ -321,6 +338,7 @@
        wrkMast.setAppeTime(now);
        wrkMast.setModiUser(userId);
        wrkMast.setModiTime(now);
        wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo);
        if (!wrkMastService.insert(wrkMast)) {
            throw new CoolException("保存工作档失败,出库库位号:"+taskDto.getLocNo());
        }
@@ -493,8 +511,7 @@
    @Override
    @Transactional
    public void locCheckOut(StockOutParam param, Long userId) {
        // 目标站点状态检测
        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
        // 获取库位明细
        List<LocDetlDto> locDetlDtos = new ArrayList<>();
        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
@@ -505,7 +522,7 @@
        }
        if (!locDetlDtos.isEmpty()) {
            // 启动出库开始 107.盘点出库
            stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
            stockOut(null, locDetlDtos, IoWorkType.CHECK_OUT, userId,null);
        } else {
            throw new CoolException("库位物料不存在");
        }