fix: 无流水分录收款单以收款单号兜底作明细流水号入库

This commit is contained in:
刘泉佳
2026-10-29 14:37:28 +08:00
parent 0eba3f6573
commit b72f05cc22
@@ -516,7 +516,9 @@ public class ReceiptFlowServiceImpl extends BaseServiceImpl<KingdeeReceiptFlowMa
}
/**
* 单张收款单展开为流水行并做批内校验(无分录/缺流水号/金额非法跳过,批内流水号重复拦截)
* 单张收款单展开为流水行并做批内校验(金额非法跳过,批内流水号重复拦截)。
* 明细流水号优先级:bei_detailid > bei_bankdetailno > 收款单号 billno 兜底
* (无流水分录的单如手工收款单也入库,但认领后 C104-2 将定位不到合规流水,C107-1 落失败标记)。
*
* @return 跳过条数
*/
@@ -524,14 +526,14 @@ public class ReceiptFlowServiceImpl extends BaseServiceImpl<KingdeeReceiptFlowMa
int skipped = 0;
List<BfiRecBillFlowVO> flowEntries = recBill.getInfoentry();
if (Func.isEmpty(flowEntries)) {
log.warn("收款流水同步跳过:收款单[{}]无流水分录", recBill.getBillno());
return 1;
flowEntries = List.of(new BfiRecBillFlowVO());
}
for (BfiRecBillFlowVO flowEntry : flowEntries) {
// 明细流水号优先级:bei_detailid > bei_bankdetailno
String detailSerialNo = firstNonBlank(flowEntry.getBeiDetailid(), flowEntry.getBeiBankdetailno());
// 明细流水号优先级:bei_detailid > bei_bankdetailno > 收款单号兜底
String detailSerialNo = firstNonBlank(flowEntry.getBeiDetailid(), flowEntry.getBeiBankdetailno(),
recBill.getBillno());
if (Func.isEmpty(detailSerialNo)) {
log.warn("收款流水同步跳过:收款单[{}]流水分录缺少明细流水号", recBill.getBillno());
log.warn("收款流水同步跳过:收款单[{}]缺少明细流水号", recBill.getBillno());
skipped++;
continue;
}