diff --git a/doc/sql/transport/blade_kingdee_attachment_sync_20260924.sql b/doc/sql/transport/blade_kingdee_attachment_sync_20260924.sql index 06e56137..aa6a3e58 100644 --- a/doc/sql/transport/blade_kingdee_attachment_sync_20260924.sql +++ b/doc/sql/transport/blade_kingdee_attachment_sync_20260924.sql @@ -1,40 +1,32 @@ --- 金蝶附件同步(A902 附件上传到指定单据) --- 新增附件同步表 blade_kingdee_attachment_sync:单附件行级同步状态(幂等键 attachment_key,成功终态跳过); --- 单据表补列星瀚单据内码(A902 定位目标单据的 billPkId): --- blade_formal_settlement.kingdee_bill_id 正式结算(应付 A102-2 / 应收 A302-2 保存响应返回) --- blade_invoice_receipt.kingdee_received_invoice_id 收票单内码(A303-2 保存响应 / A801-3 预检回填) --- blade_invoice_application.kingdee_bill_id 开票申请单内码(A303-1 保存响应 / A303-4 预检回填) --- 以下结构升级支持重复执行 - --- ① blade_kingdee_attachment_sync 建表 +-- ① blade_kingdee_attachment_sync 建表【修复索引超长问题】 SET @ddl_sql = ( - SELECT IF(COUNT(*) = 0, - 'CREATE TABLE `blade_kingdee_attachment_sync` ( - `id` bigint NOT NULL COMMENT ''主键'', - `tenant_id` varchar(12) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''租户ID'', - `biz_type` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT ''业务单据类型(pay_application/formal_settlement_ap/formal_settlement_ar/invoice_receipt/invoice_application)'', - `biz_id` bigint NOT NULL COMMENT ''业务单据id'', - `attachment_key` varchar(768) COLLATE utf8mb4_general_ci NOT NULL COMMENT ''附件幂等键(用户附件=附件url;发票文件=A801-2的path)'', - `attachment_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''附件名称(展示/排查用)'', - `kingdee_path` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶侧文件路径(A902 返回 data.path)'', - `sync_status` tinyint NOT NULL DEFAULT 0 COMMENT ''同步状态:1 成功 / 0 失败'', - `fail_reason` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''失败原因(超限/下载失败/金蝶报错)'', - `sync_time` datetime DEFAULT NULL COMMENT ''最近上传时间'', - `create_user` bigint DEFAULT NULL COMMENT ''创建人'', - `create_dept` bigint DEFAULT NULL COMMENT ''创建部门'', - `create_time` datetime DEFAULT NULL COMMENT ''创建时间'', - `update_user` bigint DEFAULT NULL COMMENT ''修改人'', - `update_time` datetime DEFAULT NULL COMMENT ''修改时间'', - `status` int DEFAULT NULL COMMENT ''业务状态'', - `is_deleted` int DEFAULT 0 COMMENT ''是否已删除'', - PRIMARY KEY (`id`), - UNIQUE KEY `uk_biz_attachment` (`biz_type`,`biz_id`,`attachment_key`), - KEY `idx_biz_type_biz_id` (`biz_type`,`biz_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=''金蝶附件同步表(A902)''', - 'SELECT 1') - FROM information_schema.TABLES - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'blade_kingdee_attachment_sync' + SELECT IF(COUNT(*) = 0, + 'CREATE TABLE `blade_kingdee_attachment_sync` ( + `id` bigint NOT NULL COMMENT ''主键'', + `tenant_id` varchar(12) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''租户ID'', + `biz_type` varchar(32) COLLATE utf8mb4_general_ci NOT NULL COMMENT ''业务单据类型(pay_application/formal_settlement_ap/formal_settlement_ar/invoice_receipt/invoice_application)'', + `biz_id` bigint NOT NULL COMMENT ''业务单据id'', + `attachment_key` varchar(768) COLLATE utf8mb4_general_ci NOT NULL COMMENT ''附件幂等键(用户附件=附件url;发票文件=A801-2的path)'', + `attachment_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''附件名称(展示/排查用)'', + `kingdee_path` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶侧文件路径(A902 返回 data.path)'', + `sync_status` tinyint NOT NULL DEFAULT 0 COMMENT ''同步状态:1 成功 / 0 失败'', + `fail_reason` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''失败原因(超限/下载失败/金蝶报错)'', + `sync_time` datetime DEFAULT NULL COMMENT ''最近上传时间'', + `create_user` bigint DEFAULT NULL COMMENT ''创建人'', + `create_dept` bigint DEFAULT NULL COMMENT ''创建部门'', + `create_time` datetime DEFAULT NULL COMMENT ''创建时间'', + `update_user` bigint DEFAULT NULL COMMENT ''修改人'', + `update_time` datetime DEFAULT NULL COMMENT ''修改时间'', + `status` int DEFAULT NULL COMMENT ''业务状态'', + `is_deleted` int DEFAULT 0 COMMENT ''是否已删除'', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_biz_attachment` (`biz_type`,`biz_id`,`attachment_key`(256)), + KEY `idx_biz_type_biz_id` (`biz_type`,`biz_id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=''金蝶附件同步表(A902)''', + 'SELECT 1') + FROM information_schema.TABLES + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'blade_kingdee_attachment_sync' ); PREPARE ddl_stmt FROM @ddl_sql; EXECUTE ddl_stmt; @@ -42,13 +34,13 @@ DEALLOCATE PREPARE ddl_stmt; -- ② blade_formal_settlement.kingdee_bill_id SET @ddl_sql = ( - SELECT IF(COUNT(*) = 0, - 'ALTER TABLE `blade_formal_settlement` ADD COLUMN `kingdee_bill_id` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶单据id(星瀚内部主键,A902 附件上传定位用)'' AFTER `kingdee_bill_no`', - 'SELECT 1') - FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'blade_formal_settlement' - AND COLUMN_NAME = 'kingdee_bill_id' + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE `blade_formal_settlement` ADD COLUMN `kingdee_bill_id` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶单据id(星瀚内部主键,A902 附件上传定位用)'' AFTER `kingdee_bill_no`', + 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'blade_formal_settlement' + AND COLUMN_NAME = 'kingdee_bill_id' ); PREPARE ddl_stmt FROM @ddl_sql; EXECUTE ddl_stmt; @@ -56,13 +48,13 @@ DEALLOCATE PREPARE ddl_stmt; -- ③ blade_invoice_receipt.kingdee_received_invoice_id SET @ddl_sql = ( - SELECT IF(COUNT(*) = 0, - 'ALTER TABLE `blade_invoice_receipt` ADD COLUMN `kingdee_received_invoice_id` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶收票单id(星瀚内部主键,A902 附件上传定位用)'' AFTER `kingdee_received_invoice_no`', - 'SELECT 1') - FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'blade_invoice_receipt' - AND COLUMN_NAME = 'kingdee_received_invoice_id' + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE `blade_invoice_receipt` ADD COLUMN `kingdee_received_invoice_id` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶收票单id(星瀚内部主键,A902 附件上传定位用)'' AFTER `kingdee_received_invoice_no`', + 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'blade_invoice_receipt' + AND COLUMN_NAME = 'kingdee_received_invoice_id' ); PREPARE ddl_stmt FROM @ddl_sql; EXECUTE ddl_stmt; @@ -70,13 +62,13 @@ DEALLOCATE PREPARE ddl_stmt; -- ④ blade_invoice_application.kingdee_bill_id SET @ddl_sql = ( - SELECT IF(COUNT(*) = 0, - 'ALTER TABLE `blade_invoice_application` ADD COLUMN `kingdee_bill_id` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶开票申请单id(星瀚内部主键,A902 附件上传定位用)'' AFTER `kingdee_bill_no`', - 'SELECT 1') - FROM information_schema.COLUMNS - WHERE TABLE_SCHEMA = DATABASE() - AND TABLE_NAME = 'blade_invoice_application' - AND COLUMN_NAME = 'kingdee_bill_id' + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE `blade_invoice_application` ADD COLUMN `kingdee_bill_id` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶开票申请单id(星瀚内部主键,A902 附件上传定位用)'' AFTER `kingdee_bill_no`', + 'SELECT 1') + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'blade_invoice_application' + AND COLUMN_NAME = 'kingdee_bill_id' ); PREPARE ddl_stmt FROM @ddl_sql; EXECUTE ddl_stmt;