feat: 付款记录回写金蝶电子回单文件名并支持凭证A801-2下载

This commit is contained in:
刘泉佳
2026-11-06 17:39:26 +08:00
parent 9f1b295c2f
commit f12cff1789
6 changed files with 174 additions and 0 deletions
@@ -0,0 +1,27 @@
-- 付款记录表:付款凭证文件名落库(付款凭证下载 A801-2 用)
-- 背景:A103-4 付款处理查询返回 isgetreceipt(true=金蝶已有电子回单),
-- 回单文件名取 bankcheckentity.awrp_receiptno.uploadfilename(即 A801-2 文件下载键),
-- 前端按付款记录 voucherFileName 判定是否展示凭证下载,调用
-- GET /payment-application/record/download-voucher?recordId= 流式回源下载
-- 幂等可重复执行:逐列查 information_schema,已存在则跳过;存量数据从 voucher_json 回填(仅填空值)
-- ① 列 voucher_file_name
SET @ddl = (SELECT IF(
(SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'blade_payment_application_record' AND COLUMN_NAME = 'voucher_file_name') = 0,
'ALTER TABLE `blade_payment_application_record` ADD COLUMN `voucher_file_name` varchar(128) DEFAULT NULL COMMENT ''付款凭证文件名(A103-4 bankcheckentity.awrp_receiptno.uploadfilename,A801-2下载键)'' AFTER `kingdee_bill_id`',
'SELECT 1'));
PREPARE stmt FROM @ddl;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- ② 存量回填:从 A103-4 留档报文 voucher_json 提取电子回单文件名(仅填空值,天然可重复执行)
-- 仅回填 isgetreceipt=true 且回单文件名非空的记录
UPDATE `blade_payment_application_record`
SET `voucher_file_name` = JSON_UNQUOTE(JSON_EXTRACT(`voucher_json`, '$.bankcheckentity[0].awrp_receiptno[0].uploadfilename'))
WHERE `voucher_file_name` IS NULL
AND `voucher_json` IS NOT NULL
AND JSON_VALID(`voucher_json`)
AND JSON_EXTRACT(`voucher_json`, '$.isgetreceipt') = TRUE
AND JSON_EXTRACT(`voucher_json`, '$.bankcheckentity[0].awrp_receiptno[0].uploadfilename') IS NOT NULL
AND JSON_UNQUOTE(JSON_EXTRACT(`voucher_json`, '$.bankcheckentity[0].awrp_receiptno[0].uploadfilename')) <> '';