主题
工程手续办理 · 数据库设计文档
字段中文含义参考 2026-11-02 开发库、生产库只读回读的字段注释及原有业务资料;历史物理结构、核验日期和设计差异仍以各表原记录为准。
文档版本:1.00 | 最近核对日期:2026-10-15
进展说明:7 张业务表结构已通过 MCP 核验;本轮(2026-10-15)录单入口改造复用既有字段(
SITE_ID、BID_ID、BID_CATEGORY语义按入口区分:土建单元=工点+责任标段,机电单元=标段),未执行 DDL/DML,表结构、字段和约束完全保持兼容。
1. 设计范围与核验状态
| 项目 | 内容 |
|---|---|
| 模块名称 | 工程手续办理 |
| 实际数据库 | DM8 开发库;目标对象为当前租户业务模式 |
| 实际持久化表 | BIZ_ENGINEERING_PROCEDURE、BIZ_ENGINEERING_PROCEDURE_UNIT、BIZ_ENGINEERING_PROCEDURE_STAGE、BIZ_ENGINEERING_PROCEDURE_STAGE_UNIT、BIZ_ENGINEERING_PROCEDURE_PROGRESS、BIZ_ENGINEERING_PROCEDURE_RESULT、BIZ_ENGINEERING_PROCEDURE_CONDITION |
| 实体/Mapper 来源 | digital-construction-modules/digital-construction-business/src/main/java/com/bokun/business/engineeringprocedure/ |
| MCP 结构核验 | 已通过 dcp-dm8-dev 回读 7 张表的字段、类型、长度、空值、默认值、约束和索引元数据;IS_KEY_BLOCKER 与 CONSTRUCT_UNIT_NAME_SNAPSHOT 已通过 ALTER 添加并回读确认(此前一次 -2501 认证失败已恢复) |
| 数据交付基线 | 未导入旧 Excel 数据,未形成生产备份包;新增字段 DDL 已执行并回读;本轮端到端测试产生的计划、流程、进度、结果和附件引用按用户要求保留 |
| 重要边界 | 不设独立条件轮次表;条件按(单位工程 × 条件)保留一行、就地更新 DECISION;早期遗留列 ROUND_NO/CONDITION_STATUS/CURRENT_FLAG 已于 v0.13 DROP;子手续完成情况由对应子手续单位工程状态体现,退回重办轮次使用阶段级 WORK_ROUND_NO |
| 权限边界 | 不建立独立项目权限;工程手续的数据范围按工程树线路和 SITE 单位工程控制。表中的 PROJECT_ID、PROJECT_NAME_SNAPSHOT 等字段只作历史/技术快照,不作为本模块筛选或授权条件;本轮仅移除年度计划的同项目选择限制,未变更数据库结构 |
本文件把“设计字段”和“实际字段”分开记录。第 3 节是开发库实际字段全量矩阵;字段未在实际表中出现的业务概念不会伪装成已落地字段。
2. 实体关系与业务边界
text
[BIZ_ENGINEERING_PROCEDURE] 1 ── N [BIZ_ENGINEERING_PROCEDURE_UNIT]
|
+── N [BIZ_ENGINEERING_PROCEDURE_STAGE] 1 ── N [BIZ_ENGINEERING_PROCEDURE_STAGE_UNIT]
|
+── N [BIZ_ENGINEERING_PROCEDURE_PROGRESS]
+── N [BIZ_ENGINEERING_PROCEDURE_RESULT]
+── N [BIZ_ENGINEERING_PROCEDURE_CONDITION]
[BIZ_ENGINEERING_PROCEDURE] 1 ── 1 Warm-Flow instance
[BIZ_ENGINEERING_PROCEDURE_UNIT] N ── 1 工程树 SITE(业务称“单位工程”)
[BIZ_ENGINEERING_PROCEDURE_UNIT] N ── 1 所属 BID(读取 bidCategory、constructUnit)当前 1 个流程实例覆盖多个推进单元(土建=工点、机电=标段);办理人按推进单元逐个填写并分别完成。年度计划由独立页面维护,不生成阶段记录;土建流程建立 5 个实际手续阶段,机电流程建立 2 个实际手续阶段,分别使用 engineering_procedure_civil 和 engineering_procedure_mep,由年度计划录单入口(土建/机电)决定启动哪套流程。历史公共编码 engineering_procedure 仅兼容在途旧实例。每个阶段下按“外层业务节点 × 推进单元”建立阶段-推进单元明细,阶段 Tab 不直接对应 Warm-Flow 任务。Warm-Flow 保留年度计划申请人节点,用于计划发起和退回重提,但不计入业务阶段;结束前的 7 接收、备案并归档同样是直通节点,不计入业务阶段、不生成阶段-推进单元明细。年度计划主单同时保存每个推进单元各适用阶段的计划完成日期、责任标段/办理对象标段及施工单位中文名称快照,办理工作区只读引用;历史空快照由查询时按标段主数据补齐。
三类条件判断固定为当前阶段表单内的业务记录:
- 是否需要产权单位意见征求、规划调整;
- 是否需要土地征收和转用批复、林地占用手续办理;
- 是否需要建设用地规划许可证及土地划拨决定书。
每类条件只有一组选项:不需要、需要;初始值为不需要。选择需要后进入该条件的子手续办理,子手续完成后回到原判断人,可选择不需要结束该条件;如需再次办理,通过流程退回重办,不再提供“需要再次”选项。在子手续未完成前,办理人可把“需要”改回“不需要”直接跳过。条件按(单位工程 × 条件)保留一行、就地更新,不再累积轮次历史行;退回重办的历史保留由阶段级 WORK_ROUND_NO 承担。
3. 实际字段全量矩阵
说明:空值 中 N 表示不可为空,Y 表示可为空;类型、长度、默认值来自 2026-09-07 通过项目 DM8 MCP 对 USER_TAB_COLUMNS/dm_describe_table 的回读。— 表示无默认值或不适用。
3.1 BIZ_ENGINEERING_PROCEDURE
| 序号 | 字段 | 类型 | 空值 | 默认值 | 中文含义及说明 |
|---|---|---|---|---|---|
| 1 | ID | BIGINT | N | — | 主键 |
| 2 | PROCEDURE_NO | VARCHAR(64) | N | — | 年度计划/流程业务编号 |
| 3 | YEAR | VARCHAR(4) | N | — | 年度 |
| 4 | PLAN_NAME | VARCHAR(300) | N | — | 年度计划名称 |
| 5 | PROJECT_ID | BIGINT | Y | — | 项目技术关联 ID;不承载本模块权限;2026-10-15 由 NOT NULL 放宽为可空(新工程模型的工点/标段可能没有项目维度) |
| 6 | PROJECT_NAME_SNAPSHOT | VARCHAR(400) | Y | — | 项目名称技术快照;不作为筛选或授权条件 |
| 7 | PROJECT_PATH_SNAPSHOT | VARCHAR(2000) | Y | — | 项目路径技术快照;不作为筛选或授权条件 |
| 8 | LINE_ID | BIGINT | Y | — | 线路 ID |
| 9 | LINE_NAME_SNAPSHOT | VARCHAR(400) | Y | — | 线路名称快照 |
| 10 | BID_CATEGORY | VARCHAR(32) | N | — | 录单入口通道:土建/机电(TJ/JD),计划级一致 |
| 11 | ENGINEERING_TYPE | VARCHAR(16) | N | — | 内部流程类型:CIVIL/MEP |
| 12 | FLOW_CODE | VARCHAR(160) | N | — | 启动流程编码:engineering_procedure_civil/engineering_procedure_mep;历史公共编码仅兼容旧实例 |
| 13 | PLAN_DESCRIPTION | VARCHAR(4000) | Y | — | 计划说明 |
| 14 | PLAN_ATTACHMENT | CLOB | Y | — | 计划附件引用 |
| 15 | NEXT_HANDLER_ID | BIGINT | Y | — | 下一节点办理人;由通用用户选择器写入 |
| 16 | NEXT_HANDLER_NAME | VARCHAR(200) | Y | — | 办理人名称快照 |
| 17 | APPROVAL_STATUS | VARCHAR(32) | Y | 'draft' | 流程业务状态 |
| 18 | INSTANCE_ID | BIGINT | Y | — | Warm-Flow 实例 ID |
| 19 | CURRENT_NODE_CODE | VARCHAR(160) | Y | — | 当前流程节点编码 |
| 20 | CURRENT_NODE_NAME | VARCHAR(400) | Y | — | 当前流程节点名称快照 |
| 21 | CURRENT_STAGE_CODE | VARCHAR(160) | Y | — | 当前表单阶段编码 |
| 22 | CREATE_DEPT | BIGINT | Y | — | 创建组织 |
| 23 | CREATE_BY | BIGINT | Y | — | 创建人 |
| 24 | CREATE_TIME | TIMESTAMP | Y | — | 创建时间 |
| 25 | UPDATE_BY | BIGINT | Y | — | 更新人 |
| 26 | UPDATE_TIME | TIMESTAMP | Y | — | 更新时间 |
| 27 | DEL_FLAG | CHAR(1) | Y | '0' | 逻辑删除标识 |
年度计划保存/更新时,NEXT_HANDLER_ID 与 NEXT_HANDLER_NAME 作为首节点办理人快照同步写入;提交流程时仍以服务端对人员有效性、权限和流程状态的最终校验为准。该行为复用现有字段,不改变表结构。
3.2 BIZ_ENGINEERING_PROCEDURE_UNIT
| 序号 | 字段 | 类型 | 空值 | 默认值 | 中文含义及说明 |
|---|---|---|---|---|---|
| 1 | ID | BIGINT | N | — | 主键 |
| 2 | PROCEDURE_ID | BIGINT | N | — | 流程实例 ID |
| 3 | UNIT_PROJECT_ID | BIGINT | Y | — | 三轨单位工程实体 ID(引用 BIZ_UNIT_PROJECT.UNIT_PROJECT_ID) |
| 4 | SITE_ID | BIGINT | Y | — | 工点主数据 ID(引用 BIZ_SITE_MASTER.SITE_MASTER_ID);土建推进单元必填,机电标段行为空 |
| 5 | UNIT_NAME_SNAPSHOT | VARCHAR(400) | N | — | 推进单元名称快照:土建=工点名,机电=标段名 |
| 6 | UNIT_PATH_SNAPSHOT | VARCHAR(2000) | Y | — | 单位工程完整路径快照 |
| 7 | PROJECT_ID | BIGINT | Y | — | 项目技术关联 ID;不承载本模块权限 |
| 8 | PROJECT_NAME_SNAPSHOT | VARCHAR(400) | Y | — | 项目名称技术快照;不作为筛选或授权条件 |
| 9 | LINE_ID | BIGINT | Y | — | 线路 ID |
| 10 | LINE_NAME_SNAPSHOT | VARCHAR(400) | Y | — | 线路名称快照 |
| 11 | BID_ID | BIGINT | Y | — | 标段 ID:土建=责任标段(随“线路-标段-工点”选择路径带入,可空);机电=办理对象标段(必填) |
| 12 | BID_NAME_SNAPSHOT | VARCHAR(400) | Y | — | 标段名称快照(含入 UNIT_PATH_SNAPSHOT) |
| 13 | BID_CATEGORY | VARCHAR(32) | N | — | 录单入口通道 TJ/JD(与计划主单一致) |
| 14 | SELECTION_ORDER | INT | Y | 0 | 年度计划中的选择顺序 |
| 15 | CREATE_DEPT | BIGINT | Y | — | 创建组织 |
| 16 | CREATE_BY | BIGINT | Y | — | 创建人 |
| 17 | CREATE_TIME | TIMESTAMP | Y | — | 创建时间 |
| 18 | UPDATE_BY | BIGINT | Y | — | 更新人 |
| 19 | UPDATE_TIME | TIMESTAMP | Y | — | 更新时间 |
| 20 | DEL_FLAG | CHAR(1) | Y | '0' | 逻辑删除标识 |
| 21 | REMARK | VARCHAR(4000) | Y | — | 年度计划中该单位工程备注(已 MCP 回读确认存在) |
| 22 | YEAR | VARCHAR(4) | Y | — | 年度(冗余自主单;与 UNIT_PROJECT_ID 组成唯一占用查重,杜绝同单位工程同年度并发重复纳入,EP-A08) |
| 23 | CONSTRUCT_UNIT_NAME_SNAPSHOT | VARCHAR(1000) | Y | — | 所属标段施工(总包)单位名称快照,取 BIZ_BID_SECTION.GENERAL_CONTRACT_UNIT_NAME;土建取责任标段、机电取办理对象标段;历史为空时读取接口按标段实时补齐,页面不得展示原始 ID |
3.3 BIZ_ENGINEERING_PROCEDURE_STAGE
| 序号 | 字段 | 类型 | 空值 | 默认值 | 中文含义及说明 |
|---|---|---|---|---|---|
| 1 | ID | BIGINT | N | — | 主键 |
| 2 | PROCEDURE_ID | BIGINT | N | — | 流程实例 ID |
| 3 | STAGE_CODE | VARCHAR(160) | N | — | 阶段编码 |
| 4 | STAGE_NAME | VARCHAR(400) | N | — | 阶段名称快照 |
| 5 | STAGE_ORDER | INT | N | — | 阶段顺序 |
| 6 | STAGE_STATUS | VARCHAR(32) | Y | 'pending' | 阶段状态 |
| 7 | CURRENT_FLAG | CHAR(1) | Y | 'N' | 当前阶段标识 |
| 8 | WORK_ROUND_NO | INT | Y | 1 | 阶段退回重办轮次 |
| 9 | CREATE_DEPT | BIGINT | Y | — | 创建组织 |
| 10 | CREATE_BY | BIGINT | Y | — | 创建人 |
| 11 | CREATE_TIME | TIMESTAMP | Y | — | 创建时间 |
| 12 | UPDATE_BY | BIGINT | Y | — | 更新人 |
| 13 | UPDATE_TIME | TIMESTAMP | Y | — | 更新时间 |
| 14 | DEL_FLAG | CHAR(1) | Y | '0' | 逻辑删除标识 |
3.4 BIZ_ENGINEERING_PROCEDURE_STAGE_UNIT
| 序号 | 字段 | 类型 | 空值 | 默认值 | 中文含义及说明 |
|---|---|---|---|---|---|
| 1 | ID | BIGINT | N | — | 主键 |
| 2 | PROCEDURE_ID | BIGINT | N | — | 流程实例 ID |
| 3 | STAGE_ID | BIGINT | N | — | 阶段 ID |
| 4 | PROCEDURE_UNIT_ID | BIGINT | N | — | 流程单位工程明细 ID |
| 5 | UNIT_PROJECT_ID | BIGINT | Y | — | 三轨单位工程实体 ID(引用 BIZ_UNIT_PROJECT.UNIT_PROJECT_ID) |
| 6 | NODE_CODE | VARCHAR(160) | Y | — | 流程图外层业务节点编码快照;兼容旧数据为空 |
| 7 | NODE_NAME | VARCHAR(400) | Y | — | 流程图外层业务节点名称快照 |
| 8 | PROGRESS_STATUS | VARCHAR(32) | Y | 'NOT_STARTED' | 本外层节点下单位工程状态 |
| 9 | COMPLETION_DATE | DATE | Y | — | 本外层节点完成日期 |
| 10 | WORK_ROUND_NO | INT | Y | 1 | 本外层节点单位工程办理轮次 |
| 11 | VERSION_NO | INT | Y | 0 | 并发/编辑版本号 |
| 12 | CREATE_DEPT | BIGINT | Y | — | 创建组织 |
| 13 | CREATE_BY | BIGINT | Y | — | 创建人 |
| 14 | CREATE_TIME | TIMESTAMP | Y | — | 创建时间 |
| 15 | UPDATE_BY | BIGINT | Y | — | 更新人 |
| 16 | UPDATE_TIME | TIMESTAMP | Y | — | 更新时间 |
| 17 | DEL_FLAG | CHAR(1) | Y | '0' | 逻辑删除标识 |
| 18 | PLANNED_DATE | DATE | Y | — | 该外层节点/单位工程的年度计划完成日期(ALTER 追加,已 MCP 回读确认存在;办理工作区只读引用) |
3.5 BIZ_ENGINEERING_PROCEDURE_PROGRESS
| 序号 | 字段 | 类型 | 空值 | 默认值 | 中文含义及说明 |
|---|---|---|---|---|---|
| 1 | ID | BIGINT | N | — | 主键 |
| 2 | PROCEDURE_ID | BIGINT | N | — | 流程实例 ID |
| 3 | STAGE_ID | BIGINT | N | — | 阶段 ID |
| 4 | STAGE_UNIT_ID | BIGINT | N | — | 阶段-单位工程明细 ID |
| 5 | UNIT_PROJECT_ID | BIGINT | Y | — | 三轨单位工程实体 ID(引用 BIZ_UNIT_PROJECT.UNIT_PROJECT_ID) |
| 6 | STAGE_CODE | VARCHAR(160) | N | — | 阶段编码 |
| 7 | NODE_CODE | VARCHAR(160) | Y | — | 流程节点编码快照 |
| 8 | NODE_NAME | VARCHAR(400) | Y | — | 流程节点名称快照 |
| 9 | WORK_ROUND_NO | INT | Y | 1 | 记录所属办理轮次 |
| 10 | PROGRESS_DATE | DATE | Y | — | 完成日期(主手续必填、子手续进度可空;v0.13 由 NOT NULL 改为可空并回读) |
| 11 | PROGRESS_CONTENT | VARCHAR(4000) | N | — | 进展情况 |
| 12 | PROGRESS_PERCENT | DECIMAL(5,2) | Y | — | 总体进度(子手续进度使用;主手续不使用) |
| 13 | IS_KEY_BLOCKER | CHAR(1) | Y | '0' | 是否重难卡点('1' 是 / '0' 否;主手续进度使用) |
| 14 | ATTACHMENT_REFS | CLOB | Y | — | 进度附件引用 |
| 15 | CREATE_DEPT | BIGINT | Y | — | 创建组织 |
| 16 | CREATE_BY | BIGINT | Y | — | 创建人 |
| 17 | CREATE_TIME | TIMESTAMP | Y | — | 创建时间 |
| 18 | UPDATE_BY | BIGINT | Y | — | 更新人 |
| 19 | UPDATE_TIME | TIMESTAMP | Y | — | 更新时间 |
进度表没有逻辑删除字段;在当前节点可编辑时,删除接口对该行执行物理删除。阶段退回重办时旧轮次行保留,工作区只加载当前 WORK_ROUND_NO,避免把历史行误当作当前行修改。IS_KEY_BLOCKER 于 v0.11 通过项目 MCP 执行 ALTER TABLE ... ADD IS_KEY_BLOCKER CHAR(1) DEFAULT '0' 并回读确认。
3.6 BIZ_ENGINEERING_PROCEDURE_RESULT
| 序号 | 字段 | 类型 | 空值 | 默认值 | 中文含义及说明 |
|---|---|---|---|---|---|
| 1 | ID | BIGINT | N | — | 主键 |
| 2 | PROCEDURE_ID | BIGINT | N | — | 流程实例 ID |
| 3 | STAGE_ID | BIGINT | N | — | 阶段 ID |
| 4 | STAGE_UNIT_ID | BIGINT | N | — | 阶段-单位工程明细 ID |
| 5 | UNIT_PROJECT_ID | BIGINT | Y | — | 三轨单位工程实体 ID(引用 BIZ_UNIT_PROJECT.UNIT_PROJECT_ID) |
| 6 | STAGE_CODE | VARCHAR(160) | N | — | 阶段编码 |
| 7 | WORK_ROUND_NO | INT | Y | 1 | 结果所属办理轮次 |
| 8 | PLANNED_DATE | DATE | Y | — | 计划完成日期 |
| 9 | ACTUAL_DATE | DATE | Y | — | 实际完成日期 |
| 10 | REMARK | VARCHAR(4000) | Y | — | 办理说明 |
| 11 | ATTACHMENT_REFS | CLOB | Y | — | 最终成果附件引用 |
| 12 | FORM_DATA | CLOB | Y | — | 阶段扩展表单数据 |
| 13 | COMPLETION_FLAG | CHAR(1) | Y | 'N' | 是否满足完成门槛 |
| 14 | CURRENT_FLAG | CHAR(1) | Y | 'Y' | 当前结果标识 |
| 15 | CREATE_DEPT | BIGINT | Y | — | 创建组织 |
| 16 | CREATE_BY | BIGINT | Y | — | 创建人 |
| 17 | CREATE_TIME | TIMESTAMP | Y | — | 创建时间 |
| 18 | UPDATE_BY | BIGINT | Y | — | 更新人 |
| 19 | UPDATE_TIME | TIMESTAMP | Y | — | 更新时间 |
结果表没有 DEL_FLAG;历史结果通过 WORK_ROUND_NO/CURRENT_FLAG 保留。当前实现按当前阶段-单位工程维护一条当前结果,退回重办前将旧结果置为非当前,下一轮保存时创建新的当前结果。
3.7 BIZ_ENGINEERING_PROCEDURE_CONDITION
| 序号 | 字段 | 类型 | 空值 | 默认值 | 中文含义及说明 |
|---|---|---|---|---|---|
| 1 | ID | BIGINT | N | — | 主键 |
| 2 | PROCEDURE_ID | BIGINT | N | — | 流程实例 ID |
| 3 | STAGE_ID | BIGINT | N | — | 阶段 ID |
| 4 | STAGE_UNIT_ID | BIGINT | N | — | 阶段-单位工程明细 ID |
| 5 | CONDITION_CODE | VARCHAR(160) | N | — | 条件编码 |
| 6 | CONDITION_NAME | VARCHAR(500) | N | — | 条件名称 |
| 7 | DECISION | VARCHAR(32) | N | — | 办理决定(原记录:NOT_REQUIRED/NEED) |
| 8 | CREATE_DEPT | BIGINT | Y | — | 创建组织 |
| 9 | CREATE_BY | BIGINT | Y | — | 创建人 |
| 10 | CREATE_TIME | TIMESTAMP | Y | — | 创建时间 |
| 11 | UPDATE_BY | BIGINT | Y | — | 更新人 |
| 12 | UPDATE_TIME | TIMESTAMP | Y | — | 更新时间 |
条件表没有逻辑删除和独立版本字段。每个(父单位工程 × 条件)保留一行,决策变更就地更新 DECISION。v0.13 已 DROP 早期“需要再次/多轮”遗留列 ROUND_NO、CONDITION_STATUS、CURRENT_FLAG(MCP 执行并回读,表结构现为 12 列)。子手续是否待办由“决策=需要 且 对应子手续单位工程未完成”实时推导。
3.8 字段核验补充
BIZ_ENGINEERING_PROCEDURE_UNIT.REMARK、BIZ_ENGINEERING_PROCEDURE_STAGE_UNIT.PLANNED_DATE、BIZ_ENGINEERING_PROCEDURE_PROGRESS.IS_KEY_BLOCKER 与 BIZ_ENGINEERING_PROCEDURE_UNIT.CONSTRUCT_UNIT_NAME_SNAPSHOT 均已通过项目 MCP dcp-dm8-dev 回读确认存在,并已并入上方 §3.2/§3.4/§3.5 实际字段矩阵(不再单列“待执行”)。此前“MCP 认证失败、字段待执行”的记录作废。
4. 约束、索引和流程关联
4.1 已核验物理约束
- 7 张业务表各有 1 个启用的主键约束:
PK_BIZ_ENGINEERING_PROCEDURE、PK_BIZ_ENGINEERING_PROCEDURE_UNIT、PK_BIZ_ENGINEERING_PROCEDURE_STAGE、PK_BIZ_ENGINEERING_PROCEDURE_STAGE_UNIT、PK_BIZ_ENGINEERING_PROCEDURE_PROGRESS、PK_BIZ_ENGINEERING_PROCEDURE_RESULT、PK_BIZ_ENGINEERING_PROCEDURE_CONDITION。 - 本次
USER_CONSTRAINTS回读未发现业务外键;实体关联由服务层校验和 Mapper 查询保证。 USER_INDEXES回读:各表有唯一主键索引 + 非唯一查询索引;BIZ_ENGINEERING_PROCEDURE_UNIT另有业务查重,从服务端与数据库层杜绝同一单位工程同一年度被并发重复纳入。其余业务唯一性(流程实例与单位工程关系等)仍由服务层保证。
4.2 业务约束
| 约束 | 落点 |
|---|---|
| 推进单元不能重复纳入同年度有效计划 | 服务层按入口区分查重:土建 SITE_ID + YEAR、机电 BID_ID + YEAR(且 SITE_ID 为空),命中时点名重复对象;不按线路设置年度计划唯一限制 |
| 选择对象必须与入口匹配 | 土建入口只接受工点(SITE),机电入口只接受标段(BID);服务端按入口解析快照,责任标段与工点必须存在管辖关系(指定工点或全线统包),不满足时拒绝保存 |
| 可见与可选范围 | 选择器按当前用户工程数据权限的授权范围裁剪;默认隐藏运营节点并提供“显示运营”开关(默认关闭,打开后可正常选择与提交,2026-09-18 起);服务端不按节点运营状态过滤或拒绝 |
| 年度计划阶段日期必须完整 | 草稿允许为空;提交时按 CIVIL/MEP 校验当前单位工程的 5/2 个阶段计划日期;办理工作区只读引用 |
| 提交后不能新增/移除单位工程 | 提交流程前比较明细集合 |
| 施工单位显示为中文 | 年度计划保存时从所属 BID 的 CONSTRUCT_UNIT 解析组织 ID,通过 DeptService 取得部门名称并写入 CONSTRUCT_UNIT_NAME_SNAPSHOT;读取旧数据时按同一规则补齐;前端不展示原始 ID |
| 当前节点提交前必须完成全部单位工程 | validate-node 按当前 NODE_CODE 校验阶段-外层节点-单位工程明细;普通节点/条件已闭环父节点要求全部完成,父节点有待办条件时仅暂缓对应待办单位工程 |
| 单位工程完成必须满足门槛 | 条件子手续闭环、实际完成日期、最终成果附件三项同时满足 |
| 只有当前阶段表单可编辑 | 当前任务办理人、当前阶段和当前单位工程三重校验 |
| 进度记录可多次追加和物理删除 | 当前阶段未提交前通过独立弹窗新增/编辑/删除,删除直接物理删除;表格只读展示并统计附件数量,数量查看只读附件不改变 ATTACHMENT_REFS |
| 退回目标阶段及后续阶段重办 | 递增阶段/阶段-单位工程轮次,旧结果和旧进度按轮次只读留存;条件行就地重置/更新,不产生条件历史行 |
4.3 Warm-Flow 关联
| 项目 | 实际值 |
|---|---|
| 流程分类 | FLOW_CATEGORY.CATEGORY_ID=2110000000000000800,名称“工程手续办理”,与工程变更监管一级模块同级 |
| 土建流程定义 | FLOW_CODE=engineering_procedure_civil,运行态最新版本 V3;资源文件 15 个节点/17 条连线(含结束前 7 接收备案归档直通节点);已在流程设计器导入,导入结果确认无问题 |
| 机电流程定义 | FLOW_CODE=engineering_procedure_mep,运行态最新版本 V2;资源文件 6 个节点/5 条连线(含结束前 7 接收备案归档直通节点);已在流程设计器导入,导入结果确认无问题 |
| 旧流程兼容 | FLOW_CODE=engineering_procedure;保留已发布旧定义供在途实例使用,不覆盖、不作为新计划启动定义 |
| 土建阶段 | 规划方案审查意见 → 初步设计批复 → 建设工程规划许可证(先判断 4.1,再由 4.1 判断 4.1.1)→ 施工图审查合格书 → 施工许可证 |
| 机电阶段 | 施工图审查合格书 → 施工许可证 |
| 外层节点 | 土建/机电各自独立;开始、年度计划申请人节点(1)、实际手续节点(2~6)、接收备案归档直通节点(7)、结束;阶段 Tab 和节点内两层操作不另生成节点;归档节点不生成阶段-单位工程明细 |
| 条件菱形 | 不作为额外 Warm-Flow 外层节点,属于对应阶段表单内的 3 条条件记录 |
| 路由前置校验 | WorkflowGlobalListener.start 调用工程手续业务扩展点;服务端校验当前节点并重算条件变量,登录用户的 ignore 变量不能绕过校验 |
5. 设计字段与实际字段差异
| 设计概念 | 原设计候选 | 实际落点 | 处理结果 |
|---|---|---|---|
| 流程实例 | BIZ_EP_PROCESS | BIZ_ENGINEERING_PROCEDURE | 采用实际业务表名 |
| 阶段实例 | BIZ_EP_PROCESS_STAGE | BIZ_ENGINEERING_PROCEDURE_STAGE | 采用实际业务表名 |
| 单位工程明细 | BIZ_EP_PROCESS_UNIT | BIZ_ENGINEERING_PROCEDURE_UNIT | 采用实际业务表名;工点语义统一为单位工程 |
| 阶段-单位工程 | BIZ_EP_STAGE_UNIT | BIZ_ENGINEERING_PROCEDURE_STAGE_UNIT | 采用实际业务表名 |
| 进度记录 | BIZ_EP_PROGRESS | BIZ_ENGINEERING_PROCEDURE_PROGRESS | 实际表无 DEL_FLAG,删除接口物理删除 |
| 阶段结果 | BIZ_EP_RESULT | BIZ_ENGINEERING_PROCEDURE_RESULT | 实际表无 DEL_FLAG,以当前标识和轮次保留历史 |
| 条件轮次 | 独立 BIZ_EP_CONDITION_ROUND | BIZ_ENGINEERING_PROCEDURE_CONDITION(每单位工程×条件一行,就地更新 DECISION) | 不新增物理表;早期遗留列 ROUND_NO/CONDITION_STATUS/CURRENT_FLAG 已于 v0.13 DROP |
| 单位工程备注 | BIZ_ENGINEERING_PROCEDURE_UNIT.REMARK | 已落地实际字段 | 已 MCP 回读确认存在,见 §3.2 |
| 阶段计划完成日期 | BIZ_ENGINEERING_PROCEDURE_STAGE_UNIT.PLANNED_DATE | 已落地实际字段 | 已 MCP 回读确认存在,见 §3.4;办理工作区只读引用 |
| 进度是否重难卡点 | IS_KEY_BLOCKER | BIZ_ENGINEERING_PROCEDURE_PROGRESS.IS_KEY_BLOCKER CHAR(1) | 已 MCP 执行并回读,见 §3.5 |
| 施工单位中文名称 | CONSTRUCT_UNIT_NAME_SNAPSHOT | BIZ_ENGINEERING_PROCEDURE_UNIT.CONSTRUCT_UNIT_NAME_SNAPSHOT VARCHAR(1000) | 已 MCP 执行并回读,见 §3.2;来源为 BID 的 CONSTRUCT_UNIT,不在页面展示原始 ID |
| 流程发起人/完成时间/乐观锁 | 原设计候选字段 | 当前主表未落地独立字段 | 不补猜测字段;以 Warm-Flow 审计与结果数据(实际完成日期)为准;VERSION_NO 列存在但写接口暂未做乐观锁比对 |
6. 迁移与兼容说明
- 结构创建和回读仅针对开发 DM8 库,通过项目 MCP 执行;未执行生产库操作。
- 本轮(2026-10-15)录单入口改造复用既有字段:
SITE_ID(土建=工点;机电为空)、BID_ID(土建=责任标段;机电=办理对象标段)、BID_CATEGORY(入口通道)、UNIT_PATH_SNAPSHOT(土建“线路/标段/工点”或“线路/工点”、机电“线路/标段”);未新增字段,单位表结构与约束未变化。 - 2026-10-15 同时放宽主单约束:
BIZ_ENGINEERING_PROCEDURE.PROJECT_ID由 NOT NULL 调整为可空(ALTER TABLE BIZ_ENGINEERING_PROCEDURE MODIFY PROJECT_ID BIGINT NULL,已通过项目 MCPdcp-dm8-dev执行并回读NULLABLE=Y)——新工程模型的工点/标段可能没有项目 ID(机电标段保留原值、土建工点可为空),原约束会阻断土建年度计划保存。 - 不做旧 Excel 数据导入;Excel 仅用于第七页“手续办理推进总台账”和导出格式参考。
- 不把
建设工程规划许可证与条件中的“建设用地规划许可证及土地划拨决定书”合并,二者是不同业务名称。 REMARK、PLANNED_DATE、IS_KEY_BLOCKER、CONSTRUCT_UNIT_NAME_SNAPSHOT等新增字段 DDL 已通过项目 MCPdcp-dm8-dev执行并回读确认(此前一次-2501认证失败已恢复)。流程定义运行态以土建V3、机电V2为准,已在流程设计器导入且导入结果确认无问题;后续流程调整须按新版本发布,不覆盖已发布旧定义或在途实例。- 进度记录按确认规则物理删除;阶段、结果的历史记录不因退回重办轮次切换而删除;条件决策就地重置/更新,不再累积条件历史行;成果附件只做
ossId存在性校验,文件生命周期由平台文件服务负责。 - 本轮修复只调整前端附件传输和显示、审批时间线展示、审批错误反馈、待办回退路径以及年度计划办理人快照写入逻辑;附件表结构、7 张业务表字段、索引和约束未改变。附件上传成功后仅把平台返回的
ossId写入业务引用,失败请求不会写入假附件。 - 本轮新增的只读附件展示只复用已有
BIZ_ENGINEERING_PROCEDURE_PROGRESS.ATTACHMENT_REFS和BIZ_ENGINEERING_PROCEDURE_RESULT.ATTACHMENT_REFS:结果区直接展示文件,进度表数量点击后展示文件列表;不新增字段、不新增业务接口、不改变附件生命周期和引用内容。 - 本轮审批时间线最终展示只调整公共
FlowTimeline的前端布局和样式:节点名称与审批状态同一行相邻展示,协作标签固定右上角,办理人和时间信息采用紧凑间距,长意见自然换行;不新增流程、业务或附件字段,不改变任何持久化值。 - 端到端测试期间未执行业务数据删除;土建/机电测试计划、单位工程、流程历史、进度、结果和附件引用保留在开发库,详情与复测结论见测试与验收。
- 若后续需要正式交付数据库备份,应另行生成脱敏、可恢复的 DM8 备份包,并记录版本、目标环境、兼容版本、校验值和恢复验证结果;当前文档不把开发库目录或凭据作为交付物。
7. 本轮核验记录
| 日期 | 核验项 | 结果 | 说明 |
|---|---|---|---|
| 2026-09-12 | 业务表结构 | 未变更,沿用已核验的 7 张表、字段、约束和索引 | 本轮无 DDL/DML 数据库脚本;办理人快照使用既有主表字段 |
| 2026-09-12 | 端到端业务数据 | 保留 | 真实页面测试追加了土建 1 个三单位工程计划、机电 1 个双单位工程计划的流程记录、进度、结果和附件引用,未执行删除 |
| 2026-09-12 | 附件引用 | 通过页面和后端上传响应核对 | 文件服务返回成功后才写入 ossId;当前文档不记录文件服务凭据或临时地址 |
| 2026-09-12 | 只读附件展示契约 | 代码契约和页面回归通过 | 结果附件直接显示文件;进度附件显示数量并可点击查看禁用态文件列表;本轮只读查看未执行业务写操作,不新增字段或接口 |
| 2026-09-12 | 审批时间线展示契约 | 代码契约和页面回归通过 | 时间线三段布局、协作标签右上角、办理人紧凑间距和审批意见换行均由前端组件实现;未新增或修改表、字段、索引和附件引用 |
| 2026-10-09 | 工作台体验重构与办理清单 | 未变更 | 本轮为纯前端界面与体验级优化,7 张业务表结构、字段、约束及接口均完全保持向下兼容,无 DDL/DML 变更 |
| 2026-10-15 | 录单入口改造结构核验 | PROJECT_ID 放宽为可空(已回读),其余未变更 | 复用既有 7 张表与字段(SITE_ID/BID_ID/BID_CATEGORY 语义按入口区分);执行 ALTER TABLE BIZ_ENGINEERING_PROCEDURE MODIFY PROJECT_ID BIGINT NULL 并回读 NULLABLE=Y;单位表当前仅有主键索引,年度计划查重由服务层按入口执行(土建 SITE_ID + YEAR、机电 BID_ID + YEAR) |