|  |  | 
 |  |  |                 dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(), 2); | 
 |  |  |                 break; | 
 |  |  |             case 103:// 拣料入库 | 
 |  |  |                 dto = pickWrkIn(param.getWrkNo(), param.getIoType(), param.getSourceStaNo(), locTypeDto, 2); | 
 |  |  |                 break; | 
 |  |  |             case 104:// 并板入库 | 
 |  |  |             case 107:// 盘点入库 | 
 |  |  |                 dto = pickWrkPlateIn(param.getWrkNo(), param.getIoType(), param.getSourceStaNo(), locTypeDto, 2); | 
 |  |  | 
 |  |  |         return dto; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Transactional | 
 |  |  |     public StartupDto pickWrkIn(Integer wrkNo, Integer ioType, Integer devpNo, LocTypeDto locTypeDto, Integer version) { | 
 |  |  |         WrkMast wrkMast = wrkMastService.selectOfPick(wrkNo, ioType); | 
 |  |  |         if (Cools.isEmpty(wrkMast)) { | 
 |  |  |             log.error("{}任务【ioType = {}】已过期!!!", wrkNo, ioType); | 
 |  |  |             throw new CoolException(CodeRes.NONE_MAST_800); | 
 |  |  |         } | 
 |  |  |         List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); | 
 |  |  |         if (Cools.isEmpty(wrkDetls)) { | 
 |  |  |             throw new CoolException(CodeRes.NONE_DETL_900); | 
 |  |  |         } | 
 |  |  |         // 检索库位 | 
 |  |  |         List<String> matnrList = wrkDetls.stream().map(WrkDetl::getMatnr).distinct().collect(Collectors.toList()); | 
 |  |  |         if (ioType == 103) {//拣料任务 | 
 |  |  |             if (devpNo == 325 || devpNo == 331 || devpNo == 333 || devpNo == 339) { | 
 |  |  |                 devpNo = 341; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         StartupDto dto = commonService.getShuttleLocNo( ioType - 50, devpNo, matnrList, locTypeDto);//获取库位 | 
 |  |  |  | 
 |  |  |         // 更新目标库位状态 | 
 |  |  |         LocMast locMast = locMastService.selectById(dto.getLocNo()); | 
 |  |  |         if (locMast.getLocSts().equals("O")) { | 
 |  |  |             locMast.setLocSts("Q"); // Q.拣料再入库 | 
 |  |  |             locMast.setModiTime(new Date()); | 
 |  |  |             if (!locMastService.updateById(locMast)) { | 
 |  |  |                 throw new CoolException("改变库位状态失败"); | 
 |  |  |             } | 
 |  |  |         } else { | 
 |  |  |             throw new CoolException(dto.getLocNo() + "目标库位已被占用"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         List<LocDetl> locDetls = locDetlService.selectByLocNo(wrkMast.getSourceLocNo()); | 
 |  |  |         if (locDetls.isEmpty()) { | 
 |  |  |             throw new CoolException("库存明细不存在"); | 
 |  |  |         } | 
 |  |  |         Date now = new Date(); | 
 |  |  |         for (LocDetl locDetl : locDetls) { | 
 |  |  |             locDetl.setLocNo(dto.getLocNo());//修改目标库位 | 
 |  |  |             locDetl.setAppeTime(now); | 
 |  |  |             locDetl.setModiTime(now); | 
 |  |  |             if (!locDetlService.insert(locDetl)) { | 
 |  |  |                 throw new CoolException("库存明细更新失败"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         //清空源库位数据 | 
 |  |  |         LocMast locMast1 = locMastService.selectByLoc(wrkMast.getSourceLocNo()); | 
 |  |  |         if (locMast1.getLocSts().equals("P")) { | 
 |  |  |             locMast1.setLocSts("O"); // 清空库位 | 
 |  |  |             locMast1.setModiTime(new Date()); | 
 |  |  |             if (!locMastService.updateById(locMast1)) { | 
 |  |  |                 throw new CoolException("改变库位状态失败"); | 
 |  |  |             } | 
 |  |  |         }else { | 
 |  |  |             throw new CoolException("源库位状态异常"); | 
 |  |  |         } | 
 |  |  |         return dto; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /* | 
 |  |  |     四项库往AGV补货,生成AGV入库通知档 | 
 |  |  |      */ |