|
|
|
@ -265,6 +265,21 @@ public class QualifiedStorageServiceImpl implements QualifiedStorageService { |
|
|
|
return R.error("部分HandlingUnit不存在或站点不匹配"); |
|
|
|
} |
|
|
|
|
|
|
|
// 扫描时已按接收行物料拦过一次,但已扫列表可能残留上一行的 HU。 |
|
|
|
// 确认入库会把全部数量记到当前接收行物料并调用 IFS,提交前必须再逐个核对,不匹配则整单拒绝。 |
|
|
|
if (StringUtils.isBlank(partNo)) { |
|
|
|
return R.error("接收记录物料编码不能为空"); |
|
|
|
} |
|
|
|
List<String> 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) |
|
|
|
|