-- ① 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`(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; 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' ); PREPARE ddl_stmt FROM @ddl_sql; EXECUTE ddl_stmt; 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' ); PREPARE ddl_stmt FROM @ddl_sql; EXECUTE ddl_stmt; 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' ); PREPARE ddl_stmt FROM @ddl_sql; EXECUTE ddl_stmt; DEALLOCATE PREPARE ddl_stmt;