跳转至

工厂管理 + 初始化数据方案

📄 创建: 段晋明 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模板

执行流程

  1. 校验工厂是否存在、是否已初始化
  2. 查询 sys_factory_init_sql WHERE is_enabled=1 ORDER BY sort_order
  3. 逐条替换占位符 → 执行 → 记录日志
  4. 返回汇总:成功/失败条数

待确认

  1. 自动触发 vs 手动触发
  2. 重复初始化策略(覆盖/跳过)
  3. 失败策略(继续/终止)
  4. 具体要初始化哪些 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/