工厂管理 + 初始化数据方案
📄 创建: 段晋明 2026-08-02
https://doc.xpku.com/raw/others/sessions/2026-07-13-factory-init.md
总体思路
在 bams 模块新增 工厂管理 功能,建厂完成后通过 SQL 模板表 + 逐条执行 的方式自动初始化工厂的业务配置数据。
核心表设计
sys_factory_init_sql — SQL 初始化模板表
| 字段 |
类型 |
说明 |
| id |
bigint |
主键 |
| sql_name |
varchar(100) |
SQL 描述名称 |
| sql_content |
text |
SQL 内容,支持占位符 {corpCode} {factoryName} {factoryId} |
| module |
varchar(50) |
所属模块:MES / EMS / COMMON |
| sort_order |
int |
执行顺序 |
| is_enabled |
tinyint |
是否启用 |
| remark |
varchar(500) |
备注 |
sys_factory_init_log — 工厂初始化执行日志表
| 字段 |
类型 |
说明 |
| id |
bigint |
主键 |
| factory_id |
bigint |
关联 bd_corp.id |
| sql_id |
bigint |
关联 sys_factory_init_sql.id |
| executed_sql |
text |
实际执行的 SQL(占位符已替换) |
| exec_status |
varchar(20) |
SUCCESS / FAILED |
| error_msg |
text |
失败错误信息 |
| exec_duration_ms |
bigint |
执行耗时 |
| exec_time |
datetime |
执行时间 |
占位符变量
| 占位符 |
来源 |
| {corpCode} |
bd_corp.corp_code |
| {corpName} |
bd_corp.corp_name |
| {shortName} |
bd_corp.short_name |
| {factoryId} |
bd_corp.id |
| {parentCorpCode} |
上级 bd_corp.corp_code |
API 设计
- POST /bd/factory/init/{factoryId} — 初始化工厂
- GET /bd/factory/init/status/{factoryId} — 查询初始化状态
- POST /bd/factory/init/retry/{logId} — 重试失败SQL
- POST /bd/factory/init/sql/saveOrUpdate — 管理SQL模板
- POST /bd/factory/init/sql/list — 分页查询SQL模板
- POST /bd/factory/init/sql/delete/{id} — 删除SQL模板
执行流程
- 校验工厂是否存在、是否已初始化
- 查询 sys_factory_init_sql WHERE is_enabled=1 ORDER BY sort_order
- 逐条替换占位符 → 执行 → 记录日志
- 返回汇总:成功/失败条数
待确认
- 自动触发 vs 手动触发
- 重复初始化策略(覆盖/跳过)
- 失败策略(继续/终止)
- 具体要初始化哪些 MES 配置数据
代码位置规划
- Entity: bams-sdk/bams-pojo/.../pojo/sys/
- Mapper: bams/bams-bd-mapper/.../mapper/bd/
- Service: bams/bams-bd-service/.../service/bd/
- Controller: bams/bams-bd/.../controller/bd/
- 迁移SQL: bams/bams-bd/src/main/resources/db/migration/