# 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 添加列: ```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` 记录。 ## 编译和运行 ```bash # 进入迁移工具目录 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 工具同步视图 `` 的字段配置。 > > 1. 进入 `fms-api/tools/migration/` 目录 > 2. 用 JDK 21 编译:`javac -cp "mssql-jdbc 驱动 jar 路径" FieldNameSync.java` > 3. 运行:`java -cp ".;驱动 jar 路径" FieldNameSync ` > 4. 运行完毕后删除 `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 条) |