| | |
| | | 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入库通知档 |
| | | */ |