fix: 修正金蝶冲销状态列名为kingdee_write_off_status与实体驼峰映射一致

This commit is contained in:
刘泉佳
2026-10-30 22:33:34 +08:00
parent 7017109444
commit 6c0f15290a
2 changed files with 40 additions and 8 deletions
@@ -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 三条查询/回写链路
@@ -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;