chore: 金蝶票池镜像读回切SQL(可用过滤两列+认领索引幂等脚本)与全票池同步Nacos配置键
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user