Files
workspace/code/fms/fms-api/tools/migration/README.md
T
2026-08-02 22:05:44 +08:00

114 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 添加列:
```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 工具同步视图 `<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 条) |