Files
workspace/code/fms/fms-api/tools/migration
2026-08-02 22:05:44 +08:00
..
2026-07-30 17:30:13 +08:00
2026-08-02 22:05:44 +08:00
2026-08-02 22:05:44 +08:00
2026-08-02 22:05:44 +08:00
2026-08-02 22:05:44 +08:00

FieldNameSync — 模块字段配置迁移工具

从旧库 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> 的字段配置。

  1. 进入 fms-api/tools/migration/ 目录
  2. 用 JDK 21 编译:javac -cp "mssql-jdbc 驱动 jar 路径" FieldNameSync.java
  3. 运行:java -cp ".;驱动 jar 路径" FieldNameSync <viewName>
  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 条)