feat: 付款记录落库金蝶付款处理单内码

This commit is contained in:
刘泉佳
2026-11-04 16:00:23 +08:00
parent fbee521ff4
commit 75f3380322
3 changed files with 25 additions and 0 deletions
@@ -40,4 +40,6 @@ public class PaymentApplicationRecord extends TenantEntity {
private String paymentNo;
private String voucherJson;
private String kingdeeBillNo;
/** 金蝶付款处理单id(cas_paybill.id,A103-4 回写,应付单 preentry 预付抵扣取数用) */
private String kingdeeBillId;
}
@@ -1146,6 +1146,8 @@ public class PaymentApplicationServiceImpl extends BaseServiceImpl<PaymentApplic
}
record.setPaidDate(this.parseKingdeeDate(payBill.getPaydate()));
record.setKingdeeBillNo(billNo);
// 金蝶付款处理单内码(cas_paybill.id)落库:财务应付单 preentry 预付抵扣(y_billid)取数用
record.setKingdeeBillId(payBill.getId() == null ? null : String.valueOf(payBill.getId()));
// 付款处理单查询结果整体留档(凭证号、银行流水、电子回单等信息),便于追溯
record.setVoucherJson(JsonUtil.toJson(payBill));
if (isNew) {
@@ -0,0 +1,21 @@
-- 付款记录表:金蝶付款处理单内码(cas_paybill.id)落库
-- 用途:财务应付单(A102-2)preentry 预付信息分录 y_billid 取数;A103-4 回写付款记录时同步写入
-- 幂等可重复执行:逐列查 information_schema,已存在则跳过;存量数据从 voucher_json 回填(仅填空值)
-- ① 列 kingdee_bill_id
SET @ddl = (SELECT IF(
(SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'blade_payment_application_record' AND COLUMN_NAME = 'kingdee_bill_id') = 0,
'ALTER TABLE `blade_payment_application_record` ADD COLUMN `kingdee_bill_id` varchar(64) DEFAULT NULL COMMENT ''金蝶付款处理单id(cas_paybill.id,A103-4回写,应付单preentry预付抵扣取数用)'' AFTER `kingdee_bill_no`',
'SELECT 1'));
PREPARE stmt FROM @ddl;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- ② 存量回填:从 A103-4 留档报文 voucher_json 提取付款处理单 id(仅填空值,天然可重复执行)
UPDATE `blade_payment_application_record`
SET `kingdee_bill_id` = JSON_UNQUOTE(JSON_EXTRACT(`voucher_json`, '$.id'))
WHERE `kingdee_bill_id` IS NULL
AND `voucher_json` IS NOT NULL
AND JSON_VALID(`voucher_json`)
AND JSON_EXTRACT(`voucher_json`, '$.id') IS NOT NULL;