4.1 KiB
4.1 KiB
FieldNameSync — 模块字段配置迁移工具
状态:面向 V1 表结构的历史工具。 本工具操作
s_module_field/s_module_field_list/s_module_field_edit,与《FMS新系统核心表结构设计V2》的s_field/s_module_schema不兼容,仅作历史参考;V2 的字段迁移需按新结构重写。
从旧库 G3HY2025.dbo.s_columnLib 同步字段配置到新库 FMS。
同步的三项内容
| 序号 | 旧库来源 | 新库目标 | 说明 |
|---|---|---|---|
| 1 | col_Caption |
s_module_field.b_name |
字段中文名称 |
| 2 | col_Visible |
s_module_field_list.b_visible |
列表是否显示(1=显示, 0=隐藏) |
| 3 | col_edit |
s_module_field_edit.b_visible |
编辑表单是否显示(1=显示, 0=隐藏) |
匹配规则
通过视图名和字段名关联新旧库:
旧库 s_columnLib.col_TableName = 新库 s_module.b_viewtable
旧库 s_columnLib.col_FieldName = 新库 s_module_field.b_field
- 旧库字段匹配不上的,对应配置不做修改(保留原值)
- 列表配置或编辑配置记录不存在时,自动插入新记录
前置条件
1. JDK 21
工具使用 Java 文本块语法("""),需要 JDK 21+ 编译。
2. mssql-jdbc 驱动
确保本地 Maven 仓库存在驱动 jar:
%USERPROFILE%\.m2\repository\com\microsoft\sqlserver\mssql-jdbc\13.4.0.jre11\mssql-jdbc-13.4.0.jre11.jar
如果不存在,从项目根目录 fms-api/ 执行 mvnw dependency:resolve 下载。
3. 数据库连接
工具硬编码连接 118.89.70.199:1433,数据库 FMS,直连新旧两库(同一实例)。
4. 新库已有 s_module_field_edit.b_visible 列
如果报 Invalid column name 'b_visible',执行以下 SQL 添加列:
ALTER TABLE dbo.s_module_field_edit ADD b_visible int NOT NULL DEFAULT 1;
5. 模块已在 s_module 中注册
目标模块的 b_viewtable 必须已在 s_module 表中配置,且已有 s_module_field 记录。
编译和运行
# 进入迁移工具目录
cd fms-api/tools/migration
# 设置 JDK 21
export JAVA_HOME=/path/to/jdk-21 # Linux/Mac
set JAVA_HOME=D:\devtool\jdk\jdk-21 # Windows
# 编译(源文件含中文注释,需指定 UTF-8 编码)
javac -encoding UTF-8 -cp "%USERPROFILE%\.m2\repository\com\microsoft\sqlserver\mssql-jdbc\13.4.0.jre11\mssql-jdbc-13.4.0.jre11.jar" FieldNameSync.java
# 运行(参数为 s_module.b_viewtable 的值;本例模块注册的是表名 b_port,非视图名 v_b_port)
java -cp ".;%USERPROFILE%\.m2\repository\com\microsoft\sqlserver\mssql-jdbc\13.4.0.jre11\mssql-jdbc-13.4.0.jre11.jar" FieldNameSync b_port
输出示例
=== 同步前 ===
b_field b_name list edit
------------------------------------------------------------------
b_id 系统编号 显示 显示
b_name 公司全称 显示 显示
...
=== 1) 字段名称 (col_Caption → b_name) ===
更新: 47 条
=== 2) 列表显示 (col_Visible → s_module_field_list.b_visible) ===
更新已有: 50 条
新增: 0 条
=== 3) 编辑显示 (col_edit → s_module_field_edit.b_visible) ===
更新已有: 44 条
新增: 0 条
=== 事务已提交 ===
用 AI 助手调用
如果通过 AI 助手(如 CodeBuddy)执行,告诉 AI 以下步骤即可:
帮我用 FieldNameSync 工具同步视图
<viewName>的字段配置。
- 进入
fms-api/tools/migration/目录- 用 JDK 21 编译:
javac -cp "mssql-jdbc 驱动 jar 路径" FieldNameSync.java- 运行:
java -cp ".;驱动 jar 路径" FieldNameSync <viewName>- 运行完毕后删除
FieldNameSync.class文件
已有同步记录
| 视图名 | 同步日期 | 字段数 | 备注 |
|---|---|---|---|
v_b_othercompany |
2026-07-30 | 50 | 已同步 |
v_b_contact |
2026-07-30 | 36 | 已同步 |
b_port |
2026-08-01 | 13 | 已同步(s_module.b_viewtable='b_port' 表名,非 v_b_port;更新字段名 8 条,列表/编辑显示各 8 条) |