From 6c0f15290a4650a26f03e4539e47228870731856 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B3=89=E4=BD=B3?= <1107186916@qq.com> Date: Fri, 30 Oct 2026 22:33:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E9=87=91=E8=9D=B6?= =?UTF-8?q?=E5=86=B2=E9=94=80=E7=8A=B6=E6=80=81=E5=88=97=E5=90=8D=E4=B8=BA?= =?UTF-8?q?kingdee=5Fwrite=5Foff=5Fstatus=E4=B8=8E=E5=AE=9E=E4=BD=93?= =?UTF-8?q?=E9=A9=BC=E5=B3=B0=E6=98=A0=E5=B0=84=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Ž¥入金蝶设计(未推送自动推-已推送冲销后重推新单).md | 6 ++- ...l_settlement_kingdee_writeoff_20261030.sql | 42 ++++++++++++++++--- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/doc/docs/业务流程/2026-10-16-结算调整单接入金蝶设计(未推送自动推-已推送冲销后重推新单).md b/doc/docs/业务流程/2026-10-16-结算调整单接入金蝶设计(未推送自动推-已推送冲销后重推新单).md index 9df66819..9e1b97e4 100644 --- a/doc/docs/业务流程/2026-10-16-结算调整单接入金蝶设计(未推送自动推-已推送冲销后重推新单).md +++ b/doc/docs/业务流程/2026-10-16-结算调整单接入金蝶设计(未推送自动推-已推送冲销后重推新单).md @@ -302,10 +302,12 @@ ALTER TABLE blade_formal_settlement ADD COLUMN adjust_status VARCHAR(32) NULL CO 脚本 `doc/sql/transport/lqj/temp/06_blade_formal_settlement_kingdee_writeoff_20261030.sql`(可重复执行): ```sql -ALTER TABLE blade_formal_settlement ADD COLUMN kingdee_writeoff_status VARCHAR(20) NULL COMMENT '金蝶冲销状态:unwrittenoff-未冲销 writtenoff-已冲销(NULL=未推送金蝶或未校验)'; -ALTER TABLE blade_formal_settlement ADD COLUMN kingdee_writeoff_time datetime NULL COMMENT '金蝶冲销状态确认时间(定时回写/预检回写时间)'; +ALTER TABLE blade_formal_settlement ADD COLUMN kingdee_write_off_status VARCHAR(20) NULL COMMENT '金蝶冲销状态:unwrittenoff-未冲销 writtenoff-已冲销(NULL=未推送金蝶或未校验)'; +ALTER TABLE blade_formal_settlement ADD COLUMN kingdee_write_off_time datetime NULL COMMENT '金蝶冲销状态确认时间(定时回写/预检回写时间)'; ``` +> 列名遵循 MyBatis-Plus 驼峰转下划线默认映射(`kingdeeWriteOffStatus` → `kingdee_write_off_status`),实体无需 `@TableField`;脚本对早期误建的旧列名(`kingdee_writeoff_status`)会先重命名再补缺,可重复执行。 + 实体 `FormalSettlement` 同步加 `kingdeeWriteOffStatus` / `kingdeeWriteOffTime`;`FormalSettlementVO` 继承实体自动带出,无需改 VO。 ### 15.3 三条查询/回写链路 diff --git a/doc/sql/transport/lqj/temp/06_blade_formal_settlement_kingdee_writeoff_20261030.sql b/doc/sql/transport/lqj/temp/06_blade_formal_settlement_kingdee_writeoff_20261030.sql index 69f14db3..34bb320a 100644 --- a/doc/sql/transport/lqj/temp/06_blade_formal_settlement_kingdee_writeoff_20261030.sql +++ b/doc/sql/transport/lqj/temp/06_blade_formal_settlement_kingdee_writeoff_20261030.sql @@ -1,30 +1,60 @@ -- 正式结算单:新增金蝶冲销状态字段 +-- 列名遵循 MyBatis-Plus 驼峰转下划线默认映射(kingdeeWriteOffStatus -> kingdee_write_off_status,kingdeeWriteOffTime -> kingdee_write_off_time); +-- 若存在早期脚本误建的旧列名 kingdee_writeoff_status / kingdee_writeoff_time 则先重命名,否则按缺失新增 -- 结算单列表展示金蝶侧旧应付/应收单冲销状态:定时任务按 A102-4/A302-4 hadwrittenoff 批量回写, -- 选单预检/重推闸门实时查询后顺带回写;NULL=未推送金蝶或尚未校验,unwrittenoff-未冲销,writtenoff-已冲销(部分冲销视同已冲销) --- 以下结构升级支持重复执行 +-- ==================== kingdee_write_off_status ==================== +-- 旧列名重命名(早期脚本版本,不存在则跳过) +SET @old_col := ( + SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'blade_formal_settlement' + AND COLUMN_NAME = 'kingdee_writeoff_status' +); +SET @ddl_sql = IF(@old_col = 1, + 'ALTER TABLE `blade_formal_settlement` CHANGE COLUMN `kingdee_writeoff_status` `kingdee_write_off_status` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶冲销状态:unwrittenoff-未冲销 writtenoff-已冲销(NULL=未推送金蝶或未校验)''', + 'SELECT 1'); +PREPARE ddl_stmt FROM @ddl_sql; +EXECUTE ddl_stmt; +DEALLOCATE PREPARE ddl_stmt; + +-- 缺失则新增(支持重复执行) SET @ddl_sql = ( SELECT IF(COUNT(*) = 0, - 'ALTER TABLE `blade_formal_settlement` ADD COLUMN `kingdee_writeoff_status` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶冲销状态:unwrittenoff-未冲销 writtenoff-已冲销(NULL=未推送金蝶或未校验)'' AFTER `kingdee_fail_reason`', + 'ALTER TABLE `blade_formal_settlement` ADD COLUMN `kingdee_write_off_status` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ''金蝶冲销状态:unwrittenoff-未冲销 writtenoff-已冲销(NULL=未推送金蝶或未校验)'' AFTER `kingdee_fail_reason`', 'SELECT 1') FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'blade_formal_settlement' - AND COLUMN_NAME = 'kingdee_writeoff_status' + AND COLUMN_NAME = 'kingdee_write_off_status' ); PREPARE ddl_stmt FROM @ddl_sql; EXECUTE ddl_stmt; DEALLOCATE PREPARE ddl_stmt; --- 以下结构升级支持重复执行 +-- ==================== kingdee_write_off_time ==================== +-- 旧列名重命名(早期脚本版本,不存在则跳过) +SET @old_col := ( + SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'blade_formal_settlement' + AND COLUMN_NAME = 'kingdee_writeoff_time' +); +SET @ddl_sql = IF(@old_col = 1, + 'ALTER TABLE `blade_formal_settlement` CHANGE COLUMN `kingdee_writeoff_time` `kingdee_write_off_time` datetime DEFAULT NULL COMMENT ''金蝶冲销状态确认时间(定时回写/预检回写时间)''', + 'SELECT 1'); +PREPARE ddl_stmt FROM @ddl_sql; +EXECUTE ddl_stmt; +DEALLOCATE PREPARE ddl_stmt; + +-- 缺失则新增(支持重复执行) SET @ddl_sql = ( SELECT IF(COUNT(*) = 0, - 'ALTER TABLE `blade_formal_settlement` ADD COLUMN `kingdee_writeoff_time` datetime DEFAULT NULL COMMENT ''金蝶冲销状态确认时间(定时回写/预检回写时间)'' AFTER `kingdee_writeoff_status`', + 'ALTER TABLE `blade_formal_settlement` ADD COLUMN `kingdee_write_off_time` datetime DEFAULT NULL COMMENT ''金蝶冲销状态确认时间(定时回写/预检回写时间)'' AFTER `kingdee_write_off_status`', 'SELECT 1') FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'blade_formal_settlement' - AND COLUMN_NAME = 'kingdee_writeoff_time' + AND COLUMN_NAME = 'kingdee_write_off_time' ); PREPARE ddl_stmt FROM @ddl_sql; EXECUTE ddl_stmt;