chen.lin
5 天以前 d59c216b0bbcd95e8b68cd0875406abbdbee5c9f
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -755,16 +755,11 @@
                        .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()