| | |
| | | .findFirst() |
| | | .orElse(null); |
| | | |
| | | // 严格匹配未找到时:再按「同单号+同物料」宽松匹配,避免原明细 fields_index 为空而分配带票号导致重复创建一条 |
| | | // 严格匹配未找到时:按「同单号+同物料+有剩余」匹配,不按批次,避免出库不检查批次时选到不同批次库位却自动新增一条出库单明细 |
| | | if (Objects.isNull(orderItem)) { |
| | | LambdaQueryWrapper<WkOrderItem> relaxedWrapper = new LambdaQueryWrapper<WkOrderItem>() |
| | | .eq(WkOrderItem::getOrderId, outId) |
| | | .eq(WkOrderItem::getMatnrId, locItem.getMatnrId()); |
| | | if (StringUtils.isNotBlank(locItem.getSplrBatch())) { |
| | | relaxedWrapper.eq(WkOrderItem::getSplrBatch, locItem.getSplrBatch()); |
| | | } else if (StringUtils.isNotBlank(locItem.getBatch())) { |
| | | relaxedWrapper.and(w -> w.eq(WkOrderItem::getBatch, locItem.getBatch()).or().eq(WkOrderItem::getSplrBatch, locItem.getBatch())); |
| | | } |
| | | orderItem = outStockItemService.list(relaxedWrapper).stream() |
| | | .filter(o -> o.getAnfme() != null && o.getWorkQty() != null && o.getAnfme().compareTo(o.getWorkQty()) > 0) |
| | | .findFirst() |
| | |
| | | if (issued.compareTo(ISSUED_TOLERANCE) <= 0) { |
| | | continue; |
| | | } |
| | | // 出库分配不按批次过滤,仅按物料编码查库位,便于正常检测到可出库库存 |
| | | List<LocItem> locItems = new ArrayList<>(); |
| | | if (WaveRuleType.Efficiency_First.type.equals(waveRule.getType())) { |
| | | locItems = LocManageUtil.getEfficiencyFirstItemList(wkOrderItem.getMatnrCode(), wkOrderItem.getSplrBatch(), wkOrderItem.getAnfme()); |
| | | locItems = LocManageUtil.getEfficiencyFirstItemList(wkOrderItem.getMatnrCode(), null, wkOrderItem.getAnfme()); |
| | | } else if (WaveRuleType.First_In_First_Out.type.equals(waveRule.getType())) { |
| | | locItems = LocManageUtil.getFirstInFirstOutItemList(wkOrderItem.getMatnrCode(), wkOrderItem.getSplrBatch(), wkOrderItem.getAnfme()); |
| | | locItems = LocManageUtil.getFirstInFirstOutItemList(wkOrderItem.getMatnrCode(), null, wkOrderItem.getAnfme()); |
| | | } else { |
| | | locItems = LocManageUtil.getFirstInFirstOutItemList(wkOrderItem.getMatnrCode(), wkOrderItem.getSplrBatch(), wkOrderItem.getAnfme()); |
| | | locItems = LocManageUtil.getFirstInFirstOutItemList(wkOrderItem.getMatnrCode(), null, wkOrderItem.getAnfme()); |
| | | } |
| | | for (LocItem locItem : locItems) { |
| | | Loc loc = locService.getById(locItem.getLocId()); |