| | |
| | | // 检索库位 |
| | | LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); |
| | | List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList()); |
| | | StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto); |
| | | StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto,0); |
| | | // 生成工作号 |
| | | int workNo = dto.getWorkNo(); |
| | | // 生成工作档 |
| | |
| | | |
| | | List<StockOutParam.LocDetl> stockOutParamLocDetlSort = Utils.getStockOutParamLocDetlSort(param.getLocDetls()); |
| | | boolean sign = true; |
| | | boolean isfull = false; // 是否够数量 |
| | | Double isOut = 0.0; |
| | | List<String> locNoWeighting = new ArrayList<>(); |
| | | for (StockOutParam.LocDetl locDetl : stockOutParamLocDetlSort) { |
| | | if (Cools.isEmpty(locNoWeighting)){ |
| | |
| | | for (String locNo : groupOuterSingleLoc) { |
| | | //每个库位的库位明细 |
| | | if(locs.contains(locNo)) continue; |
| | | LocMast mast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locNo)); |
| | | if (mast.getLocSts().equals("P") || mast.getLocSts().equals("Q")){ |
| | | throw new CoolException("当前库位的浅库位状态为" + mast.getLocSts() + "暂不支持出库!"); |
| | | } |
| | | for (LocDetl detl : locDetlService.selectByLocNo(locNo)) { |
| | | if (!detl.getMatnr().equals(locDetl.getMatnr())) { |
| | | //不是相同物料 |
| | |
| | | } |
| | | continue; |
| | | } |
| | | locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), detl.getAnfme())); |
| | | if (!param.getOutSite().equals(214) && !param.getOutSite().equals(114)){ |
| | | if (detl.getAnfme() >= locDetl.getCount()) { |
| | | locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), locDetl.getCount())); |
| | | isOut = locDetl.getCount(); |
| | | isfull = true; |
| | | break; |
| | | } else { |
| | | locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), detl.getAnfme())); |
| | | isOut = detl.getAnfme(); |
| | | } |
| | | } else { |
| | | //强制不是相同物料 |
| | | locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), detl.getAnfme())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | locDetls.add(locDetl); |
| | | if (!isfull) { |
| | | |
| | | locDetls.add(new StockOutParam.LocDetl(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getCount() - isOut)); |
| | | // locDetls.add(locDetl); |
| | | } |
| | | } |
| | | //出库时,如果当前库位组有相同的物料,则先出外侧物料 6.30日 注释 |
| | | //for (StockOutParam.LocDetl locDetl : param.getLocDetls()) { |
| | |
| | | Date now = new Date(); |
| | | // 合并同类项 |
| | | Set<String> locNos = new HashSet<>(); |
| | | ArrayList<String> locNos2 = new ArrayList<String>(); |
| | | List<OutLocDto> dtos = new ArrayList<>(); |
| | | for (LocDetlDto locDetlDto : locDetlDtos) { |
| | | String locNo = locDetlDto.getLocDetl().getLocNo(); |
| | | if (locNos.contains(locNo)) { |
| | | for (OutLocDto dto : dtos) { |
| | | if (dto.getLocNo().equals(locNo)) { |
| | | dto.getLocDetlDtos().add(locDetlDto); |
| | | break; |
| | | locNos2.add(locNo); |
| | | //if (locNos.contains(locNo)) { |
| | | //for (OutLocDto dto : dtos) { |
| | | // if (dto.getLocNo().equals(locNo)) { |
| | | // dto.getLocDetlDtos().add(locDetlDto); |
| | | // break; |
| | | // } |
| | | //} |
| | | //} else { |
| | | //locNos.add(locNo); |
| | | |
| | | //dtos.add(new OutLocDto(locNo, locDetlDto)); |
| | | //} |
| | | } |
| | | List<String> innermostSideLoc = Utils.getInnermostSideLoc(locNos2, true); |
| | | System.out.println(innermostSideLoc); |
| | | for (LocDetlDto locDetlDto : locDetlDtos) { |
| | | String locNo = locDetlDto.getLocDetl().getLocNo(); |
| | | if(innermostSideLoc.contains(locNo)) { |
| | | if (locNos.contains(locNo)) { |
| | | for (OutLocDto dto : dtos) { |
| | | if (dto.getLocNo().equals(locNo)) { |
| | | dto.getLocDetlDtos().add(locDetlDto); |
| | | break; |
| | | } |
| | | } |
| | | } else { |
| | | locNos.add(locNo); |
| | | dtos.add(new OutLocDto(locNo, locDetlDto)); |
| | | } |
| | | } else { |
| | | locNos.add(locNo); |
| | | dtos.add(new OutLocDto(locNo, locDetlDto)); |
| | | //dtos.add(new OutLocDto(locNo,locDetlDto)); |
| | | } |
| | | } |
| | | |
| | | Integer ioType = null; |
| | | List<String> excludeLocNos = dtos.stream().map(OutLocDto::getLocNo).distinct().collect(Collectors.toList()); |
| | | // 生成工作档 |
| | |
| | | if (locNos.contains(locNo)) { |
| | | for (OutLocDto dto : dtos) { |
| | | if (dto.getLocNo().equals(locNo)) { |
| | | dto.getLocDetlDtos().add(locDetlDto); |
| | | break; |
| | | boolean signDto = false; |
| | | for (LocDetlDto locDetlDto1 : dto.getLocDetlDtos()){ |
| | | if (locDetlDto1.getLocDetl().getBatch().equals(locDetlDto.getLocDetl().getBatch()) |
| | | && locDetlDto1.getLocDetl().getMatnr().equals(locDetlDto.getLocDetl().getMatnr()) |
| | | && locDetlDto1.getLocDetl().getLocNo().equals(locDetlDto.getLocDetl().getLocNo())){ |
| | | signDto = true; |
| | | } |
| | | } |
| | | if (!signDto){ |
| | | dto.getLocDetlDtos().add(locDetlDto); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | //-----------------2023.5.31上架区域版本兼容代码----------------------- |
| | | //判断当前库位组是否均为同一种物料,如不是,则认定需要执行兼容代码 |
| | | //需要将待出库库位前侧库位(不包含最外侧高频库位)执行101全板出库 |
| | |
| | | } |
| | | WaitPakin waitPakin = new WaitPakin(); |
| | | waitPakin.sync(mat); |
| | | waitPakin.setBatch(""); |
| | | //waitPakin.setBatch(""); |
| | | waitPakin.setZpallet(locDetl.getZpallet()); // 托盘码 |
| | | waitPakin.setIoStatus("N"); // 入出状态 |
| | | waitPakin.setAnfme(locDetl.getAnfme()); // 数量 |
| | |
| | | // throw new CoolException("只能存在一笔盘点任务"); |
| | | // } |
| | | } |
| | | if (ioType!=101){ |
| | | if (basDevp==114 || basDevp==214){ |
| | | throw new CoolException("2楼只允许全板出库,请选择全部物料"); |
| | | } |
| | | } |
| | | |
| | | assert ioType != null; |
| | | // 获取库位 |
| | | LocMast locMast = locMastService.selectById(dto.getLocNo()); |
| | |
| | | // } |
| | | //} |
| | | if (ioType == 101) { |
| | | if (staNo.getDevNo()==300){ |
| | | if (basDevp==300){ |
| | | if(locMast.getCrnNo() == 1) { |
| | | staNo.setDevNo(100); |
| | | } else { |
| | | staNo.setDevNo(200); |
| | | } |
| | | |
| | | } else if (basDevp == 114){ |
| | | if (!dto.isSign()){ |
| | | staNo.setDevNo(100); |
| | | } else { |
| | | staNo.setDevNo(basDevp); |
| | | } |
| | | } else if (basDevp == 214){ |
| | | if (!dto.isSign()){ |
| | | staNo.setDevNo(200); |
| | | } else { |
| | | staNo.setDevNo(basDevp); |
| | | } |
| | | } else { |
| | | if(locMast.getCrnNo() == 1) { |
| | | staNo.setDevNo(100); |
| | | } else { |
| | | staNo.setDevNo(200); |
| | | } |
| | | } |
| | | } else { |
| | | staNo.setDevNo(basDevp); |
| | |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); |
| | | // 检索库位 |
| | | LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); |
| | | StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto); |
| | | StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto,0); |
| | | int workNo = dto.getWorkNo(); |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |