主题
工程变更监管 · 数据库设计文档
字段中文含义参考 2026-11-02 开发库、生产库只读回读的字段注释及原有业务资料;历史物理结构、核验日期和设计差异仍以各表原记录为准。
文档版本:1.00 | 最近核对日期:2026-09-10
1. 设计范围与核验状态
| 项目 | 内容 |
|---|---|
| 模块名称 | 工程变更监管;施工单位发起流程 |
| 设计数据库 | 逻辑类型:可迁移;物理类型:DM8(以 MCP 实测为准) |
| 数据库交付基线 | 业务表和索引已通过项目 MCP 写入开发库;施工单位流程定义以 engineering_change_construction.json 通过项目 MCP 导入 |
| 实体/Mapper 来源 | business.engineeringchange.domain / mapper(开发中) |
| MCP 结构核验 | 已通过项目 MCP 执行迁移并回读核验 |
| 总体状态 | 设计中;物理字段、索引、字典和流程依赖已核对;办理预览不落库 |
2. 实体关系
text
biz_engineering_change 1 ── N biz_engineering_change_class_log两表通过 change_id 逻辑关联,不建立数据库外键,避免跨版本迁移阻断;主表逻辑删除不物理删除,类别日志只追加,保留原预计金额/类别与最终金额/类别快照。origin_type 继续表示四类发起页面;申请人首次填写的“系统设备公司/分公司”属于同一发起单位归属变量,由流程实例和首节点快照保存,不另行拆成流程定义或业务分类。
2.1 开发库遗留分表说明
当前代码与本次交付模型只使用 BIZ_ENGINEERING_CHANGE(业务主表)和 BIZ_ENGINEERING_CHANGE_CLASS_LOG(分类判定日志)。开发库中曾存在的 BIZ_ENGINEERING_CHANGE_DSGN、BIZ_ENGINEERING_CHANGE_OWNER、BIZ_ENGINEERING_CHANGE_SUPERVISION 是历史/并行开发遗留表;当前工程变更 Entity、Mapper、Service 均没有对这三张表的读写引用,它们不属于当前四类页面的运行时分表模型。
这三张遗留表的 CHANGE_NO 长度、可空性,以及 CHANGE_SCOPE、附件、总包标志、逻辑删除字段的类型/可空性与主表不一致,说明它们来自另一版字段模型,不能继续作为当前主流程的补字段依据。当前模型由 ORIGIN_TYPE 区分四类发起单位,类别历史由分类日志记录,不再按发起单位拆四张业务表。经项目 DM8 MCP 核对,三张遗留表删除前均为 0 条数据,且未发现外键、视图依赖、触发器或同义词引用;已于 2026-09-05 从开发库删除。其他环境如仍存在同名表,必须先完成依赖审计和可恢复备份后再单独迁移清理。
3. 全量字段矩阵
3.1 biz_engineering_change(工程变更主表)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | id | 主键 | BIGINT | BIGINT | — | 否 | — | PK | 平台生成 | 是 | 已核对(代码) |
| 2 | bid_id | 所属标段ID | BIGINT | BIGINT | — | 可 | NULL | IDX | 三轨标段选择器 | 是 | 已核对(MCP) |
| 3 | site_id | 所属工点ID | BIGINT | BIGINT | — | 可 | NULL | IDX | 三轨工点选择器 | 是 | 已核对(MCP) |
| 4 | unit_project_id | 单位工程ID | BIGINT | BIGINT | — | 可 | NULL | IDX | 三轨单位工程级联选择器 | 是 | 已核对(MCP) |
| 5 | line_id | 所属线路ID | BIGINT | BIGINT | — | 可 | NULL | IDX | 空间线路外键 | 是 | 已核对(MCP) |
| 6 | project_name_snapshot | 实际工程名称快照 | VARCHAR | VARCHAR | 2000 | 否 | — | — | 以单位工程路径为初始值,允许发起人自由删改并补充具体变更事项 | 是 | 已核对(代码) |
| 7 | project_path_snapshot | 单位工程名称/路径快照 | VARCHAR | VARCHAR | 2000 | 否 | — | — | 选择单位工程后保存完整路径 | 是 | 已核对(代码) |
| 5 | line_name | 线路名称快照 | VARCHAR | VARCHAR | 500 | 可 | NULL | IDX | 提交时快照 | 否 | 设计中 |
| 6 | origin_type | 发起单位类型 | VARCHAR | VARCHAR | 32 | 否 | CONSTRUCTION | IDX | 页面固定值 | 是 | 设计中 |
| 7 | change_title | 变更标题 | VARCHAR | VARCHAR | 300 | 否 | — | — | 由实际工程名称生成 | 是 | 已核对(代码) |
| 8 | change_reason | 历史变更原因(兼容) | CLOB | CLOB | — | 可 | NULL | — | 仅保留存量数据兼容,新表单不再输入 | 否 | 已核对(MCP) |
| 9 | change_scope | 工程变更内容、原因(含合理性及可行性分析) | CLOB | CLOB | — | 可 | NULL | — | 发起表单统一输入;提交时必填 | 是 | 已核对(MCP) |
| 10 | estimated_amount | 预计变更金额 | DECIMAL | DECIMAL | 18,2 | 否 | — | IDX | 万元,正增负减 | 是 | 设计中 |
| 11 | contract_amount | 合同金额(万元) | DECIMAL | DECIMAL | 18,2 | 可 | NULL | — | 仅施工单位发起时输入并在提交时必填;其他发起类型不采集 | 是 | 已核对(MCP) |
| 12 | changed_contract_amount | 变更后合同金额(万元) | DECIMAL | DECIMAL | 18,2 | 可 | NULL | — | 仅施工单位发起时输入并在提交时必填;其他发起类型不采集 | 是 | 已核对(MCP) |
| 13 | duration_impact_days | 工期影响(天) | INTEGER | INTEGER | — | 可 | NULL | — | 发起表单输入;提交时必填,可正可负 | 是 | 已核对(MCP) |
| 14 | estimated_class | 预计变更类别 | CHAR | VARCHAR | 8 | 可 | NULL | IDX | 申请人填写预计类别;服务端提交时校验,不用于选择流程定义;草稿允许为空 | 是 | 已核对(MCP:Y) |
| 15 | consulting_amount | 造价咨询估价金额 | DECIMAL | DECIMAL | 18,2 | 可 | NULL | — | 造价咨询估价节点正式写入 | 是 | 已核对(MCP) |
| 16 | determined_class | 系统判定正式类别 | CHAR | VARCHAR | 8 | 可 | NULL | IDX | 按造价咨询估价金额由服务端自动判定 | 是 | 已核对(MCP) |
| 17 | affiliation_type | 发起单位归属 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | 申请人首次选择 SYSTEM_DEVICE/BRANCH | 是 | 已核对(MCP) |
| 18 | final_amount | 最终核量核价金额 | DECIMAL | DECIMAL | 18,2 | 可 | NULL | — | 核量核价阶段写入 | 是 | 设计中 |
| 19 | final_class | 最终变更类别/结果 | CHAR | VARCHAR | 8 | 可 | NULL | IDX | 最终核量核价阶段记录最终结果;不触发补审 | 是 | 设计中 |
| 20 | has_general_contractor | 是否有总包 | CHAR | CHAR | 1 | 否 | 0 | — | 表单输入 | 是 | 设计中 |
| 21 | document_name | 业务文书名称(内部兼容) | VARCHAR | VARCHAR | 200 | 否 | 《工程洽商及技术核定签证表》 | — | 保留历史默认值;界面附件统一使用“附件” | 否 | 已核对(MCP) |
| 22 | document_attachment | 发起附件 JSON | CLOB | CLOB | — | 可 | NULL | — | 平台文件组件,允许上传多个附件 | 是 | 已核对(MCP) |
| 23 | site_survey_attachment | 现场踏勘附件 JSON | CLOB | CLOB | — | 可 | NULL | — | 平台文件组件 | 否 | 设计中 |
| 24 | design_change_attachment | 设计变更/施工图附件 JSON | CLOB | CLOB | — | 可 | NULL | — | 平台文件组件 | 否 | 设计中 |
| 25 | node_record_json | 正式节点动态字段快照 JSON | CLOB | CLOB | — | 可 | NULL | — | 同意/退回时由流程事件回写;预览不写入 | 是 | 设计中 |
| 26 | approval_status | 审批状态 | VARCHAR | VARCHAR | 32 | 否 | draft | IDX | 平台业务状态 | 是 | 设计中 |
| 27 | supplement_status | 补充审批状态(历史兼容字段) | VARCHAR | VARCHAR | 32 | 否 | none | IDX | 保留兼容;最终核量核价不触发补审 | 否 | 已确认不使用 |
| 28 | instance_id | 流程实例 ID | VARCHAR | VARCHAR | 64 | 可 | NULL | IDX | 启动流程后回写 | 否 | 设计中 |
| 29 | archive_status | 归档状态 | VARCHAR | VARCHAR | 32 | 否 | pending | IDX | 模块内归档/待同步 | 否 | 设计中 |
| 30 | create_dept | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity | 否 | 设计中 |
| 31 | create_by | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity | 否 | 设计中 |
| 32 | create_time | 创建时间 | TIMESTAMP | TIMESTAMP(0) | — | 可 | NULL | — | BaseEntity | 否 | 设计中 |
| 33 | update_by | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity | 否 | 设计中 |
| 34 | update_time | 更新时间 | TIMESTAMP | TIMESTAMP(0) | — | 可 | NULL | — | BaseEntity | 否 | 设计中 |
| 35 | del_flag | 逻辑删除 | CHAR | CHAR | 1 | 否 | 0 | IDX | @TableLogic | 否 | 设计中 |
| 36 | change_no | 变更编号 | VARCHAR | VARCHAR | 32 | 可 | NULL | — | 前端按当前时间生成 yyyyMMddHHmmssSSS,保存后作为单据编号 | 是 | 已核对(MCP) |
| 37 | construct_unit_name | 施工单位 | VARCHAR | VARCHAR | 300 | 可 | NULL | — | 发起人填写并保存快照 | 是 | 已核对(MCP) |
| 38 | design_unit_name | 设计单位 | VARCHAR | VARCHAR | 300 | 可 | NULL | — | 发起人填写并保存快照 | 是 | 已核对(MCP) |
| 39 | supervision_unit_name | 监理单位 | VARCHAR | VARCHAR | 300 | 可 | NULL | — | 发起人填写并保存快照 | 是 | 已核对(MCP) |
| 40 | original_drawing_no | 原施工图号 | VARCHAR | VARCHAR | 300 | 可 | NULL | — | 发起人填写;选填,留空不影响提交 | 是 | 已核对(MCP) |
| 41 | application_date | 申请日期 | DATE | DATE | — | 可 | NULL | — | 发起人填写;流程表单按年月日展示 | 是 | 已核对(MCP) |
| 42 | original_investment | 原估算投资(万元) | DECIMAL | DECIMAL | 18,2 | 可 | NULL | — | 发起人填写;提交时校验两位小数 | 是 | 已核对(MCP) |
| 43 | sub_unit_project_name | 分部(子分部)工程名称 | VARCHAR | VARCHAR | 2000 | 可 | NULL | — | 施工单位发起人手动填写并保存名称快照;施工单位提交时必填 | 是 | 已核对(MCP:43 列) |
| 44 | process_overview | 流程概述 | CLOB | CLOB | — | 可 | NULL | — | 分公司负责人、设计部经办人在领导审批前填写;后填节点覆盖前值 | 是 | 已核对(MCP:44 列) |
3.2 biz_engineering_change_class_log(分类判定日志)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度/精度 | 可空 | 默认值 | 主键/外键/唯一/索引 | 来源或生成规则 | 核心 | 核验状态/证据 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | id | 主键 | BIGINT | BIGINT | — | 否 | — | PK | 平台生成 | 是 | 设计中 |
| 2 | change_id | 变更主表 ID | BIGINT | BIGINT | — | 否 | — | IDX;逻辑外键 | 主表 ID | 是 | 设计中 |
| 3 | amount_stage | 金额阶段 | VARCHAR | VARCHAR | 16 | 否 | — | IDX | ESTIMATE/CLASSIFICATION/FINAL;不使用 SUPPLEMENT | 是 | 设计中 |
| 4 | amount | 记录金额 | DECIMAL | DECIMAL | 18,2 | 否 | — | — | 对应阶段金额 | 是 | 设计中 |
| 5 | change_class | 记录类别 | VARCHAR | VARCHAR | 8 | 否 | — | IDX | 服务端根据估价/分类阶段变量记录 I/II/III/IV | 是 | 设计中 |
| 6 | reason | 判定说明 | VARCHAR | VARCHAR | 1000 | 可 | NULL | — | 金额/类别判定说明,不用于补审 | 否 | 设计中 |
| 7 | create_dept | 创建部门 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity | 否 | 设计中 |
| 8 | create_by | 创建人 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity | 否 | 设计中 |
| 9 | create_time | 创建时间 | TIMESTAMP | TIMESTAMP(0) | — | 可 | NULL | IDX | BaseEntity | 否 | 设计中 |
| 10 | update_by | 更新人 | BIGINT | BIGINT | — | 可 | NULL | — | BaseEntity | 否 | 已核对(MCP) |
| 11 | update_time | 更新时间 | TIMESTAMP | TIMESTAMP(0) | — | 可 | NULL | — | BaseEntity | 否 | 已核对(MCP) |
| 12 | del_flag | 逻辑删除 | CHAR | CHAR | 1 | 否 | 0 | — | 只追加日志兼容逻辑删除 | 否 | 已核对(MCP) |
4. 约束、索引与字典
| 类型 | 名称/表达式 | 作用 | 设计/物理差异 | 核验状态 |
|---|---|---|---|---|
| PK | pk_biz_engineering_change | 主表唯一 | 与脚本一致 | 已核对 |
| PK | pk_biz_engineering_change_class_log | 日志唯一 | 与脚本一致 | 已核对 |
| IDX | idx_eng_change_project/status/class/origin | 台账检索与数据范围 | 6 个索引已存在 | 已核对 |
| 字典 | engineering_change_class | I/II/III/IV | 已建立 4 条 | 已核对 |
| 字典 | engineering_change_affiliation | 系统设备公司/分公司 | 已建立 2 条 | 已核对(MCP) |
| 字典 | engineering_change_origin | 四类发起单位 | 已建立 4 条 | 已核对 |
5. 设计字段与实际字段差异
| 表 | 差异字段 | 差异类型 | 设计值 | 实际值 | 处理方式 | 状态 |
|---|---|---|---|---|---|---|
biz_engineering_change | estimated_class 可空、consulting_amount、determined_class、affiliation_type、contract_amount、changed_contract_amount、duration_impact_days、change_no、construct_unit_name、design_unit_name、supervision_unit_name、original_drawing_no、application_date、original_investment | 基线表补充 | 见字段矩阵 | 已按 DM8 MCP 回读(42 个字段) | 已通过 MCP 补列并纳入交付数据库;发起页从系统参建单位选择单位,并填写原图号、申请日期、原估算投资及前端时间编号 | 已核对 |
biz_engineering_change | sub_unit_project_name | 本次需求新增字段 | VARCHAR(2000),可空 | 已通过 DM8 MCP 新增并回读 | 施工单位发起页手动填写;服务端施工单位提交流程时校验非空;三类参建单位继续保存名称快照 | 已核对 |
biz_engineering_change_class_log | update_by、update_time | 基线表遗漏 BaseEntity 审计字段 | 见字段矩阵 | 已按 DM8 MCP 回读(12 个字段) | 已通过 MCP 补齐并纳入交付数据库,避免 MyBatis-Plus 插入时列不存在 | 已核对 |
6. 迁移与兼容说明
首版基线表、索引和字典已通过项目 MCP 写入并纳入交付数据库;2026-08-30 的施工单位字段变更已通过项目 DM8 MCP 执行并回读核验,草稿类别字段已放宽为可空,补齐正式估价/类别/归属字段。2026-08-31 通过项目 DM8 MCP 新增合同金额、变更后合同金额和工期影响三列;2026-09-01 再新增 change_no、参建单位、原施工图号、申请日期和原估算投资七列并回读为 42 个字段,以上新增字段对草稿保持可空,正式提交时由服务端校验;其中 original_drawing_no 自 2026-09-17 起调整为选填,正式提交时不再要求非空(本列结构无变化,属服务端校验口径调整)。2026-09-10 通过项目 DM8 MCP 新增 sub_unit_project_name VARCHAR(2000) 并回读为 43 个字段;本次 DDL 未修改既有 5 条记录,新字段均为空,草稿保持可空,施工单位正式提交时由服务端校验。change_reason 保留存量兼容,新表单统一写入 change_scope。同日,在开发库按确认范围清空施工单位工程变更台账、分类日志、流程实例、待办、历史任务及旧流程定义,再导入最新的 engineering_change_construction 主流程 V1;回读为 1 条已发布且启用的定义、90 个节点、105 条 FLOW_SKIP 连线,施工单位业务表、分类日志、流程实例、待办及历史待办均为 0 条。其他发起单位流程不受影响。流程坐标采用横向优先、必要时折返的多行布局,四向锚点连线不得穿过无关节点。approval_config 不落库,办理人通过 Warm-Flow 标准变量和任务弹窗传递,避免保存个人审批配置快照。办理弹窗中的 预览 只改变当前页面的只读表单显示,不新增草稿表、不写入正式业务字段、不生成流程记录;只有 同意 或 退回 才正式写入节点数据。节点附件统一使用 Warm-Flow 流程附件,表单默认不渲染空附件区域;节点正式办理上传附件后,才在对应节点卡片底部显示并支持预览。发起页只展示到工期影响,使用通用附件入口且不展示具体文书名称,历史节点专属附件字段不再兼容。2026-10-23 通过项目 DM8 MCP 新增 process_overview CLOB 可空列并回读为 44 列,未回填既有 4 条记录;合同金额两列仍可空,服务端改为仅施工单位提交时校验。生产库于 2026-10-24 通过同一纳管入口新增该列并回读为 44 列,既有 2 条记录未回填;生产发布包 20261024-gis 已包含本批前后端。