From 0dc6c9457a7ef068711bb3201ef400b8cc72e931 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Mon, 5 Oct 2026 17:51:54 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E9=87=91=E8=9D=B6=E7=A5=A8=E6=B1=A0?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E8=AF=BB=E5=9B=9E=E5=88=87SQL=EF=BC=88?= =?UTF-8?q?=E5=8F=AF=E7=94=A8=E8=BF=87=E6=BB=A4=E4=B8=A4=E5=88=97+?= =?UTF-8?q?=E8=AE=A4=E9=A2=86=E7=B4=A2=E5=BC=95=E5=B9=82=E7=AD=89=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=EF=BC=89=E4=B8=8E=E5=85=A8=E7=A5=A8=E6=B1=A0=E5=90=8C?= =?UTF-8?q?=E6=AD=A5Nacos=E9=85=8D=E7=BD=AE=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/nacos/third-party-api.yaml | 10 ++++ ...ingdee_invoice_pool_available_20261005.sql | 46 +++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 doc/sql/transport/blade_kingdee_invoice_pool_available_20261005.sql diff --git a/doc/nacos/third-party-api.yaml b/doc/nacos/third-party-api.yaml index 49834717..96c4fa23 100644 --- a/doc/nacos/third-party-api.yaml +++ b/doc/nacos/third-party-api.yaml @@ -73,3 +73,13 @@ thirdParty: # single-flight 分布式锁租约秒数,须大于最坏一轮耗时(逐认领人远程查公告+逐条推送), # 进程异常退出时锁在租约到期后自动释放 lockLeaseSeconds: ${BFI_RECEIPT_CLAIM_PUSH_LOCK_LEASE_SECONDS:1800} + # 金蝶全票池发票定时同步(A801-1 窗口拉取+镜像 upsert,选票统一查本地) + invoiceReceipt: + # 同步任务开关,默认关闭(上线先手动 POST /invoice-receipt/sync-invoice-pool 跑一次全窗口铺底) + syncEnabled: ${BFI_INVOICE_RECEIPT_SYNC_ENABLED:false} + # 调度 cron,默认每30分钟 + cron: ${BFI_INVOICE_RECEIPT_CRON:0 */30 * * * ?} + # 增量窗口天数(按票池更新时间滚动) + incrementDays: ${BFI_INVOICE_RECEIPT_INCREMENT_DAYS:30} + # single-flight 分布式锁租约秒数,须大于最坏一轮耗时;进程异常退出时锁在租约到期后自动释放 + lockLeaseSeconds: ${BFI_INVOICE_RECEIPT_LOCK_LEASE_SECONDS:1800} diff --git a/doc/sql/transport/blade_kingdee_invoice_pool_available_20261005.sql b/doc/sql/transport/blade_kingdee_invoice_pool_available_20261005.sql new file mode 100644 index 00000000..98a36137 --- /dev/null +++ b/doc/sql/transport/blade_kingdee_invoice_pool_available_20261005.sql @@ -0,0 +1,46 @@ +-- 金蝶票池选票回切镜像读:镜像表新增可用过滤列 + 认领过滤索引 +-- available_amount 剩余可用金额(A801-1 availableAmount,金蝶可用税额口径,选票本地过滤 >0) +-- amount_use_status 金额使用状态(A801-1 amountUseStatus,'0' 未使用可选 / '2' 全部使用) +-- 由定时同步(InvoiceReceiptKingdeeSyncTask)/ 手动同步端点 / 票号回源 / 收票保存重查 统一按 tenant_id + invoice_no upsert 回填; +-- 存量存根行两列为 NULL,不参与选票(可用过滤为 NULL 排除),随增量窗口同步自然回填 +-- 认领过滤 EXISTS 子查询补 (tenant_id, invoice_no) 索引,避免统一查询全表扫 + +-- 以下结构升级支持重复执行 +SET @ddl_sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE `blade_kingdee_invoice_pool` ADD COLUMN `available_amount` decimal(18,2) DEFAULT NULL COMMENT ''剩余可用金额(A801-1 availableAmount,金蝶可用税额口径)'' AFTER `source_updated_time`', + 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'blade_kingdee_invoice_pool' + AND COLUMN_NAME = 'available_amount' +); +PREPARE ddl_stmt FROM @ddl_sql; +EXECUTE ddl_stmt; +DEALLOCATE PREPARE ddl_stmt; + +SET @ddl_sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE `blade_kingdee_invoice_pool` ADD COLUMN `amount_use_status` varchar(8) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金额使用状态(0 未使用 / 2 全部使用)'' AFTER `available_amount`', + 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'blade_kingdee_invoice_pool' + AND COLUMN_NAME = 'amount_use_status' +); +PREPARE ddl_stmt FROM @ddl_sql; +EXECUTE ddl_stmt; +DEALLOCATE PREPARE ddl_stmt; + +SET @idx_sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE `blade_formal_settlement_invoice` ADD INDEX `idx_settlement_invoice_no` (`tenant_id`, `invoice_no`)', + 'SELECT 1') + FROM information_schema.STATISTICS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'blade_formal_settlement_invoice' + AND INDEX_NAME = 'idx_settlement_invoice_no' +); +PREPARE idx_stmt FROM @idx_sql; +EXECUTE idx_stmt; +DEALLOCATE PREPARE idx_stmt;