diff --git a/src/main/java/com/gaotao/modules/inspection/service/impl/QualifiedStorageServiceImpl.java b/src/main/java/com/gaotao/modules/inspection/service/impl/QualifiedStorageServiceImpl.java index 78fa8f66..39247878 100644 --- a/src/main/java/com/gaotao/modules/inspection/service/impl/QualifiedStorageServiceImpl.java +++ b/src/main/java/com/gaotao/modules/inspection/service/impl/QualifiedStorageServiceImpl.java @@ -265,6 +265,21 @@ public class QualifiedStorageServiceImpl implements QualifiedStorageService { return R.error("部分HandlingUnit不存在或站点不匹配"); } + // 扫描时已按接收行物料拦过一次,但已扫列表可能残留上一行的 HU。 + // 确认入库会把全部数量记到当前接收行物料并调用 IFS,提交前必须再逐个核对,不匹配则整单拒绝。 + if (StringUtils.isBlank(partNo)) { + return R.error("接收记录物料编码不能为空"); + } + List mismatchedHuList = handlingUnits.stream() + .filter(hu -> !partNo.equals(hu.getPartNo())) + .map(hu -> hu.getUnitId() + "(" + hu.getPartNo() + ")") + .collect(Collectors.toList()); + if (!mismatchedHuList.isEmpty()) { + log.warn("检验合格入库物料不匹配,site={},receiptSequence={},期望物料={},不匹配HU={}", + site, receiptSequence, partNo, mismatchedHuList); + return R.error("HandlingUnit物料编码不匹配,期望: " + partNo + ",不匹配: " + String.join(",", mismatchedHuList)); + } + // 计算HandlingUnit总数量 BigDecimal totalScannedQty = handlingUnits.stream() .map(hu -> hu.getQty() != null ? hu.getQty() : BigDecimal.ZERO)