主题
工程基础管理 · 数据库设计文档
文档版本:1.10 | 最近核对日期:2026-11-04
字段中文含义参考 2026-11-02 开发库、生产库只读回读的字段注释及原有业务资料;历史物理结构、核验日期和设计差异仍以各表原记录为准。
企业身份与业务角色分离(2026-10-13):已有业主企业也可承担项目设计、监理或施工角色,直接复用同一
SYS_DEPT.DEPT_ID,禁止为了让选项出现而另建同名参建企业。项目三类参建字段允许deptType=1/2的company/branch/joint_venture企业节点,拒绝group容器和dept部门。候选接口与保存校验使用同一范围,名称兼容解析包含两种体系的企业;同名不能唯一匹配时必须重新按 ID 选择。该范围适用于项目参建主体及全局联合体成员/牵头企业,不扩大其他模块的共享组织校验。
项目参建主体混选现行契约(2026-10-13 修正)
设计、监理、施工字段直接选择已建档企业或全局联合体,允许同一角色同时选择一个联合体及两家独立企业。沿用 ParticipantConsortiumPicker.vue 的企业/联合体选择布局;选择身份为 type + id,企业为 UNIT,联合体为 CONSORTIUM,名称仅作显示。联合体不展开成成员企业,不根据名称逗号推断组成,不以同名企业替代联合体。建设单位仍为业主组织多选,所属公司仍单选。
独立“关联联合体”按钮、弹窗及项目关系 API 下线。全局联合体档案与成员维护继续保留;旧项目联合体表只保留历史记录,不清空、不删除,不再作为项目参建主体现行来源。企业兼任业主及施工等角色时复用同一组织 ID,候选企业允许 deptType=1/2 的 company/branch/joint_venture,排除集团容器、部门及项目部。
三类权威集合为 designParticipants/superviseParticipants/constructParticipants,每项 {type,id,name};空数组明确解除该角色全部引用。后端按类型验证存在性、启用状态及主体类型,从档案生成名称快照,在项目保存事务中整体替换对应角色的有序引用。前端保留 Long ID 原始值,不转 Number;相同数字 ID 的企业和联合体是不同主体。
旧三类 *UnitIds 仅保留独立选择的 UNIT 项,不含联合体成员;旧名称字段是混合主体名称快照;旧单 *UnitId 仅在集合恰有一个 UNIT 且无联合体时保留,其余置空。建设 buildUnitIds 继续使用业主 CSV 集合。被现行参建集合引用的企业/联合体不得删除;联合体被引用后组成变更受保护,名称调整不得更换主体身份。
验收例:选择联合体 C + 企业 A/B 后保存,重开仍回显三项且 C 未变成成员或企业;删除 A 后仅保留 C/B;全部清空后不残留旧单 ID 或名称;企业与联合体同 ID 时能分别回显;非法 type、失效主体或伪造名称不得绕过后端校验;引用中的主体删除和联合体组成变更应被阻止。
联合体成员企业角色复用与本轮迁移边界
全局联合体正常新增、编辑的成员与牵头单位候选,以及后端成员校验,统一允许业主及参建两体系中启用、未删除的企业:deptType=1/2 且 orgType=company/branch/joint_venture;排除集团容器、部门和项目部。不能因企业当前为业主而重复建档为参建单位。联合体仍须至少两个不同成员,牵头单位须属于成员集合;被项目引用后组成冻结及删除引用保护保持有效。
验收例:微电园施工联合体选择“重庆建工第九建设有限公司”与已有业主“重庆对外建设(集团)有限公司”,应复用两企业原 ID,可正常建档和回显;仅一个成员、牵头不在成员中、停用或部门节点仍拒绝保存。
本轮仅重做设计、监理、施工主体分组,保留当前 111 处建设单位信息,不按老源建设字段数量清空。老平台附件为 100 + 26 共 126 条,三类非空角色字段分别为设计 33、监理 39、施工 39,合计 111 个角色字段。迁移按项目身份和修剪首尾空白的 CODE 核对(其中两个源 CODE 带 CRLF),不按项目名称合并,四组同名项目保持各自独立身份。数量与具体落库结果须由本轮数据库回读验证。
设计背景:系统处于未正式上线阶段。经实测核查,下游所有业务表(工程变更、手续、质安、渣土、运营、投资等)当前全部为 0 行,无在途业务单据回填负担。
重要建表与迁移原则:
- 既有存量表就地 ALTER,严禁 DROP 重建与反向收窄:
BIZ_SITE_MASTER(存量 931 条真实工点)与BIZ_PROJECT采用ALTER TABLE ... ADD COLUMN扩充/补齐字段,绝不整表 DROP;既有长文本字段(如SITUATION TEXT)完全保留原库物理精度,严禁收窄;确保 931 条基础工点主数据零丢失、零截断;- 新表纯净创建:
BIZ_LINE、BIZ_BID_SECTION、BIZ_BID_MAJOR、BIZ_BID_SITE_SCOPE、BIZ_UNIT_PROJECT、BIZ_SUB_PROJECT、BIZ_USER_DATA_SCOPE、BIZ_MAJOR_DICT采用全新CREATE TABLE;- 参建单位与业主单位规范关联(已建单位精准映射,缺失参建单位自动建档):彻底解决历史业务单位纯文本游离的问题。项目现采用完整单位 ID 集合(引用
SYS_DEPT.DEPT_ID)+ 官方名称快照;项目保存只校验已建档选项,禁止自动建档。其他实体与历史迁移按各自章节维护。经核实,两家核心业主二级公司在SYS_DEPT中均已创建完备(原重庆市铁路(集团)有限公司更名为重庆交通建设管理有限公司,DEPT_ID=101;原重庆市轨道交通(集团)有限公司/重庆市轨道集团有限公司更名为重庆轨道交通运营有限公司,DEPT_ID=2083453529837531162),存量迁移时直接通过映射绑定标准外键,无需重复新建;缺失的 23 家纯乙方参建单位(施工、监理、设计)自动建档并挂接至“参建单位”根节点(2199000000000100013);其它未在组织架构中建档的特殊线路运营公司保留原文字描述,ID 预留为空;- 线路分期与延线独立建模(契合工程建设期次管理):全面支持工程分期与延线作为独立业务管理对象(如 15号线一期
L15-01、15号线二期L15-02、15号线西延L15-XY、15号线东延L15-DY、4号线西延L04-XY、5号线北延L05-BY、6号线东延L06-DY、18号线北延L18-BY、江跳线二期L-JT-02等全网共 31 条独立运营/在建/规划分期),LINE_CODE统一采用L{线号}-{期数/延线后缀},独立维护全称、简称、建设状态(规划/在建/运营)、起讫站、总里程与沿线工点划归;- 存量 861 个旧单位工程节点分类处理原则:
- 实测 861 个旧 SITE 节点中:427 个挂在 BID 标段下,434 个挂在 LINE 线下;旧节点中
SITE_MASTER_ID100% 存在且有效(861/861);- 427 个标段下节点:通过可靠外键
n.SITE_MASTER_ID = s.SITE_MASTER_ID精确关联,标段所含各专业(主+协同)均在工点下笛卡尔积展开生成单位工程实体,主键由独立序列SEQ_BIZ_UNIT_PROJECT生成,杜绝 ID 碰撞并继承工程状态;- 434 个线下节点:属于线路规划层直接站位节点(尚未划分标段),在 PBS 空间资产维度已由
BIZ_SITE_MASTER完整收录,不强行作为无标段孤儿写入单位工程,待后续创建标段时正向关联。- DM8 CASE 函数索引方案:全面采用
CASE WHEN DEL_FLAG='0' THEN 字段 END函数唯一索引(实测验证可行),彻底解决软删除防重问题;- DM8 SQL 纯净兼容与防溢出约束:全面废除 PostgreSQL 专有的
CROSS JOIN LATERAL语法,改用 DM8 标准 CTE 展开;主键严禁基于雪花 ID 进行乘法运算(防止超过 BIGINT 上限9.22×10^18),统一改用独立序列SEQ_BIZ_BID_MAJOR.NEXTVAL;单位工程编码采用{线路}-{标段}-{工点}-{专业}统一国标规范;- 执行顺序严格前置保障:专业字典数据初始化前置于存量迁移之前执行,确保存量涵盖专业推导与单位工程生成时字典关联 100% 命中,绝不产生 0 行空数据。
1. 实体关系图(ER 图)
2. 表清单与总体用途
| 序号 | 表名 | 中文名称 | 所属维度 | 建表模式 | 用途说明 |
|---|---|---|---|---|---|
| 1 | BIZ_LINE | 线路主数据表 | PBS 空间核 | 全新建表 | 维护轨道交通物理线路空间主数据及分期(纯粹物理实体,与 CBS/OBS 彻底解耦) |
| 2 | BIZ_SITE_MASTER | 物理工点主数据表 | PBS 空间核 | 就地 ALTER | 维护全生命周期终身唯一的 931 条真实工点(保留全部既有物理字段,实测 24 列 = 19 个业务/状态列 + 5 个审计列,严禁 DROP) |
| 3 | BIZ_PROJECT | 建设项目主数据表 | CBS 商务核 | 就地 ALTER | 维护发改委批复立项项目(四类单位完整 CSV ID 集合 + 名称快照,所属公司单选,保留既有业务字段) |
| 4 | BIZ_BID_SECTION | 标段主数据表 | CBS 商务核 | 全新建表 | 维护施工/监理标段(强关联总包单位与监理单位 ID,下沉存量标段) |
| 5 | BIZ_BID_MAJOR | 标段涵盖专业关联表 | CBS 商务核 | 全新建表 | 支撑标段“单专业或多专业统包”配置(1个标段关联1至多个专业) |
| 6 | BIZ_BID_SITE_SCOPE | 标段管辖工点关系表 | CBS-PBS 关联 | 全新建表 | 记录指定工点型标段所负责的车站与区间明细(存量 427 个标段节点关系推导归入) |
| 7 | BIZ_UNIT_PROJECT | 单位工程表 | WBS 质量核 | 全新建表 | 标段 × 工点 × 专业 矩阵展开生成的法定验收单位工程实体(存量 427 个节点平滑归入) |
| 8 | BIZ_SUB_PROJECT | 分部工程表 | WBS 质量核 | 全新建表 | 单位工程下的国标分部工程明细(地基基础、主体结构等) |
| 9 | BIZ_USER_ENGINEERING_CONFIG | 用户工程授权配置根表 | 权限体系 | 全新建表 | 用户工程授权根记录,带 revision 乐观锁版本 |
| 10 | BIZ_USER_ENGINEERING_LINE | 用户线路工程授权表 | 权限体系 | 全新建表 | 线路授权记录(FULL_LINE 整线 / RESTRICTED 受限) |
| 11 | BIZ_USER_ENGINEERING_PAIR | 用户标段工点授权明细表 | 权限体系 | 全新建表 | RESTRICTED 模式下的有效标段工点组合明细 |
| 12 | BIZ_MAJOR_DICT | 行业标准专业字典表 | 基础字典 | 全新建表 | 维护轨道交通 29 项规范专业分类(支持大类-专业两级分级与综合大类) |
3. 全量字段矩阵
3.1 BIZ_LINE(线路主数据表 - 全新建表 + 分期粒度扩展)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | LINE_ID | 线路ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 雪花算法大整数主键,实体类字段 lineId |
| 2 | LINE_CODE | 线路编码 | VARCHAR | VARCHAR(64) | 64 | 否 | — | UK(函数) | 是 | 如 L15-1、L15-2、LINE-04 |
| 3 | LINE_NAME | 线路全称 | VARCHAR | VARCHAR(200) | 200 | 否 | — | — | 是 | 如 重庆轨道交通15号线一期、重庆轨道交通15号线二期 |
| 4 | SHORT_NAME | 线路简称 | VARCHAR | VARCHAR(100) | 100 | 是 | NULL | — | 是 | ALTER新增,如 15号线一期、15号线二期 |
| 5 | LINE_STAGE | 建设分期 | VARCHAR | VARCHAR(64) | 64 | 是 | '一期' | — | 是 | 如 一期、二期、全线 |
| 6 | COLOR_HEX | 标识颜色 | VARCHAR | VARCHAR(32) | 32 | 是 | '#007ACC' | — | 否 | 16进制颜色码 |
| 7 | TOTAL_LENGTH_KM | 线路里程(公里) | DECIMAL | DECIMAL(10,3) | 10,3 | 是 | NULL | — | 是 | 线路总里程,保留3位小数(单位:km) |
| 8 | START_STATION | 起点站 | VARCHAR | VARCHAR(100) | 100 | 是 | NULL | — | 是 | ALTER新增,如 九曲河东站、曾家站 |
| 9 | END_STATION | 终点站 | VARCHAR | VARCHAR(100) | 100 | 是 | NULL | — | 是 | ALTER新增,如 两江影视城站、九曲河东站 |
| 10 | ORIGIN_DESTINATION | 起止站点说明 | VARCHAR | VARCHAR(200) | 200 | 是 | NULL | — | 否 | 起止站点说明文本 |
| 11 | SERVICE_AREA | 服务区域 | VARCHAR | VARCHAR(200) | 200 | 是 | NULL | — | 否 | 服务区划,如下沉自存量服务区域 |
| 12 | STATION_COUNT | 车站数量 | INT | INT | 10 | 是 | 0 | — | 是 | 沿线车站总数统计快照(座) |
| 13 | BIZ_STATUS | 建设状态 | VARCHAR | VARCHAR(32) | 32 | 是 | '1' | — | 是 | 对齐系统字典 biz_status:'0' 规划 / '1' 在建 / '2' 运营 / '3' 大修改造 |
| 14 | STATUS | 启用状态 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 是 | ALTER新增,系统启停状态:'0' 正常 / '1' 停用 |
| 15 | ORDER_NUM | 显示排序 | INT | INT | 10 | 否 | 0 | — | 否 | 排序权重 |
| 16 | REMARK | 备注说明 | VARCHAR | VARCHAR(2000) | 2000 | 是 | NULL | — | 否 | ALTER新增,线路分期工程说明与规划备注 |
| 17 | DEL_FLAG | 删除标志 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 0正常 1已删除 |
| 18 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 19 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 20 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 21 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 22 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 组织归属 |
3.2 BIZ_SITE_MASTER(物理工点主数据表 - 就地 ALTER,保留 931 条存量行)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | SITE_MASTER_ID | 工点主键ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 既有雪花大整数主键,实体类字段 siteMasterId |
| 2 | PROJECT_ID | 所属项目ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 否 | 既有字段,关联 BIZ_PROJECT.PROJECT_ID |
| 3 | LINE_ID | 所属主线路ID | BIGINT | BIGINT | 20 | 否 | — | IDX | 是 | 既有字段,直接对齐 BIZ_LINE.LINE_ID |
| 4 | STATION_CODE | 工点编码 | VARCHAR | VARCHAR(256) | 256 | 否 | — | UK(函数) | 是 | 既有物理列,同线路下工点代号(如 18-05) |
| 5 | STATION_NAME | 工点全称 | VARCHAR | VARCHAR(400) | 400 | 否 | — | — | 是 | 既有物理列,如 重庆西站、现代制造区-复盛区间 |
| 6 | SHORT_NAME | 简称 | VARCHAR | VARCHAR(200) | 200 | 是 | NULL | — | 否 | 既有物理列,如 西站 |
| 7 | STATION_INDEX | 沿线里程排序 | INT | INT | 10 | 是 | 0 | — | 否 | 既有字段,沿线路走向从头到尾排列序号 |
| 8 | SITE_TYPE | 工点类型 | VARCHAR | VARCHAR(128) | 128 | 否 | — | — | 是 | 既有字典 biz_site_type:CZ/QJ/TCC/ZBDS/CLJD/QL/QZD/CLD/CRCX 完整 9 类 |
| 9 | LNG | 经度 | DECIMAL | DECIMAL(22) | 22 | 是 | NULL | — | 否 | 既有字段,GIS 坐标经度(实际库为 DECIMAL(22),不收窄) |
| 10 | LAT | 纬度 | DECIMAL | DECIMAL(22) | 22 | 是 | NULL | — | 否 | 既有字段,GIS 坐标纬度(实际库为 DECIMAL(22),不收窄) |
| 11 | IS_TRANSFER | 是否换乘站 | CHAR | CHAR(4) | 4 | 是 | '0' | — | 否 | 既有物理列,1是 0否 |
| 12 | TRANSFER_LINES | 换乘线路名称 | VARCHAR | VARCHAR(500) | 500 | 是 | NULL | — | 否 | ALTER新增,如 5号线,环线 |
| 13 | IS_HUB | 是否综合枢纽 | CHAR | CHAR(4) | 4 | 是 | '0' | — | 否 | 既有物理列(实际为 CHAR(4)),业务逻辑仅存 '0'/'1' |
| 14 | STRUCT_TYPE | 结构形式 | VARCHAR | VARCHAR(64) | 64 | 是 | NULL | — | 否 | ALTER新增,地下三层岛式 / 高架侧式 / 盾构区间等 |
| 15 | TOTAL_AREA | 建筑面积(㎡) | DECIMAL | DECIMAL(22,2) | 22,2 | 是 | NULL | — | 否 | 既有物理列,车站总建筑面积 |
| 16 | ENTRANCE_COUNT | 出入口数量 | INT | INT | 10 | 是 | 0 | — | 否 | 既有字段,规划出入口总数 |
| 17 | COMPOSITION | 组成部分 | VARCHAR | VARCHAR(2000) | 2000 | 是 | NULL | — | 否 | 既有字段,就地安全扩容至2000 |
| 18 | SITUATION | 工点概况 | TEXT | TEXT | 2GB | 是 | NULL | — | 否 | 既有物理列,实测存量最大2616字符,保留TEXT严禁收窄 |
| 19 | PLAN_IMAGE | 总平面规划图 | VARCHAR | VARCHAR(2000) | 2000 | 是 | NULL | — | 否 | 既有物理列,图纸附件 URL |
| 20 | STATUS | 启用状态 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 既有字段,0正常 1停用 |
| 21 | DEL_FLAG | 删除标志 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 既有字段,0正常 1已删除 |
| 22 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 既有审计字段 |
| 23 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 既有审计字段 |
| 24 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 既有审计字段 |
| 25 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 既有审计字段 |
| 26 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 既有组织字段 |
3.2.1 BIZ_SITE_MASTER 既有物理字段设计口径 vs 实际库结构差异对照表
根据平台软件交付规范与数据库设计特别检查要求,记录设计口径标准值与现有开发库实际物理结构差异。核心保护原则:实施阶段严禁执行收窄操作,完全保留实际库物理宽度以防数据截断:
| 字段名 | 设计推荐规范 | 现有库实际物理类型 | 差异类型 | 处置原则与说明 |
|---|---|---|---|---|
STATION_CODE | VARCHAR(64) | VARCHAR(256) | 实际更宽 | 保持实际列宽度 VARCHAR(256),不作收窄 |
STATION_NAME | VARCHAR(200) | VARCHAR(400) | 实际更宽 | 保持实际列宽度 VARCHAR(400),不作收窄 |
SHORT_NAME | VARCHAR(100) | VARCHAR(200) | 实际更宽 | 保持实际列宽度 VARCHAR(200),不作收窄 |
SITE_TYPE | VARCHAR(32) | VARCHAR(128) | 实际更宽 | 保持实际列宽度 VARCHAR(128),不作收窄 |
PLAN_IMAGE | VARCHAR(500) | VARCHAR(2000) | 设计窄于实际 | 严禁收窄!实际附件 URL 支持长路径,保持 VARCHAR(2000) 避免截断 |
TOTAL_AREA | DECIMAL(14,2) | DECIMAL(22,2) | 实际更宽 | 保持实际列精度 DECIMAL(22,2) |
SITUATION | VARCHAR(4000) | TEXT | 实际更大 | 严禁收窄!实际为 TEXT(最大2GB),存量最大2616字符,无需亦禁止收窄 |
IS_TRANSFER | CHAR(1) | CHAR(4) | 实际更宽 | 保持实际列定义 CHAR(4),业务逻辑仅存储 '0'/'1' |
IS_HUB | CHAR(1) | CHAR(4) | 实际更宽 | 保持实际列定义 CHAR(4),业务逻辑仅存储 '0'/'1' |
LNG(经度) | DECIMAL(12,6) | DECIMAL(22) | 实际更宽 | 保持实际列精度 DECIMAL(22),不作收窄;坐标精度由写入值控制 |
LAT(纬度) | DECIMAL(12,6) | DECIMAL(22) | 实际更宽 | 保持实际列精度 DECIMAL(22),不作收窄;坐标精度由写入值控制 |
COMPOSITION | VARCHAR(2000) | VARCHAR(1020) | 设计宽于实际 | 本次 §5 执行 MODIFY COMPOSITION VARCHAR(2000) 扩容;扩容不改数据,属安全操作 |
3.3 BIZ_PROJECT(建设项目主数据表 - 保留既有字段,扩展完整单位集合)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | PROJECT_ID | 项目ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 既有雪花算法大整数主键 |
| 2 | PROJECT_NAME | 建设项目全称 | VARCHAR | VARCHAR(400) | 400 | 否 | — | UK(函数) | 是 | 既有字段,如 重庆轨道交通15号线一期工程建设项目 |
| 3 | SHORT_NAME | 简称 | VARCHAR | VARCHAR(200) | 200 | 是 | NULL | — | 否 | 既有字段(实际 VARCHAR(200),不收窄) |
| 4 | PROJECT_CODE | 批复文号/立项编码 | VARCHAR | VARCHAR(200) | 200 | 是 | NULL | — | 是 | 既有字段,发改委立项批复文号(实际 VARCHAR(200)) |
| 5 | ORDER_NUM | 显示排序 | INT | INT | 10 | 否 | 0 | — | 否 | 既有字段 |
| 6 | STATUS | 启用状态 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 既有字段,0正常 1停用 |
| 7 | BUILD_UNIT_ID | 建设单位ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 否 | 单项兼容 ID;仅一个建设单位时关联 SYS_DEPT.DEPT_ID,多项/清空为 NULL |
| 8 | BUILD_UNIT | 建设单位名称 | VARCHAR | VARCHAR(1500) | 1500 | 是 | NULL | — | 是 | 官方全称快照,按完整集合生成,禁止任意文本;UTF-8 不超过 1500 字节 |
| 9 | DESIGN_UNIT_ID | 设计单位ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 否 | 单项兼容 ID;仅一项时关联 SYS_DEPT.DEPT_ID,多项/清空为 NULL |
| 10 | DESIGN_UNIT | 设计单位名称 | VARCHAR | VARCHAR(1500) | 1500 | 是 | NULL | — | 否 | 官方全称快照,按完整集合生成,禁止任意文本;UTF-8 不超过 1500 字节 |
| 11 | SUPERVISE_UNIT_ID | 监理单位ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 否 | 单项兼容 ID;仅一项时关联 SYS_DEPT.DEPT_ID,多项/清空为 NULL |
| 12 | SUPERVISE_UNIT | 监理单位名称 | VARCHAR | VARCHAR(1500) | 1500 | 是 | NULL | — | 否 | 官方全称快照,按完整集合生成,禁止任意文本;UTF-8 不超过 1500 字节 |
| 13 | CONSTRUCT_UNIT_ID | 施工单位ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 否 | 单项兼容 ID;仅一项时关联 SYS_DEPT.DEPT_ID,多项/清空为 NULL |
| 14 | CONSTRUCT_UNIT | 施工单位名称 | VARCHAR | VARCHAR(1500) | 1500 | 是 | NULL | — | 否 | 官方全称快照,按完整集合生成,禁止任意文本;UTF-8 不超过 1500 字节 |
| 15 | PLAN_START_DATE | 计划开工日期 | DATE | DATE | — | 是 | NULL | — | 否 | 既有字段 |
| 16 | PLAN_END_DATE | 计划竣工日期 | DATE | DATE | — | 是 | NULL | — | 否 | 既有字段 |
| 17 | REAL_START_DATE | 实际开工日期 | DATE | DATE | — | 是 | NULL | — | 否 | 既有字段 |
| 18 | REAL_END_DATE | 实际竣工日期 | DATE | DATE | — | 是 | NULL | — | 否 | 既有字段 |
| 19 | PROJECT_TYPE | 工程类型 | VARCHAR | VARCHAR(128) | 128 | 是 | NULL | — | 是 | 既有字段,轨道交通/城市更新等(实际 VARCHAR(128)) |
| 20 | PROJECT_STATUS | 工程建设状态 | VARCHAR | VARCHAR(128) | 128 | 是 | NULL | — | 是 | 既有字段,规划/在建/完工/试运行(实际 VARCHAR(128)) |
| 21 | BUILD_PLAN | 规划批次 | VARCHAR | VARCHAR(1020) | 1020 | 是 | NULL | — | 是 | 既有字段,安全保留实际长度 1020 |
| 22 | IS_STATISTICS | 是否入统 | CHAR | CHAR(1) | 1 | 是 | '0' | — | 否 | 既有字段,1是 0否 |
| 23 | IS_IMPORTANT | 是否重点工程 | CHAR | CHAR(1) | 1 | 是 | '0' | — | 否 | 既有字段,1是 0否 |
| 24 | INTRO | 项目简介 | TEXT | TEXT | 2GB | 是 | NULL | — | 否 | 既有物理列为 TEXT(实测),严禁收窄为 VARCHAR |
| 25 | PROJECT_LINE_LENGTH | 线路总长(公里) | DECIMAL | DECIMAL(22) | 22 | 是 | NULL | — | 否 | 既有字段(实际 DECIMAL(22)) |
| 26 | INVEST_AMOUNT | 批复总概算(万元) | DECIMAL | DECIMAL(22) | 22 | 是 | NULL | — | 是 | 既有字段(实际 DECIMAL(22)) |
| 27 | BELONG_COMPANY_ID | 所属项目分公司ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 是 | ALTER新增,关联 SYS_DEPT.DEPT_ID |
| 28 | BELONG_COMPANY | 所属项目分公司名 | VARCHAR | VARCHAR(1020) | 1020 | 是 | NULL | — | 是 | 既有字段,安全保留实际长度 1020 |
| 29 | DEL_FLAG | 删除标志 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 既有字段,0正常 1已删除 |
| 30 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 既有审计字段 |
| 31 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 既有审计字段 |
| 32 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 既有审计字段 |
| 33 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 既有审计字段 |
| 34 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 既有组织字段 |
| 35 | BUILD_UNIT_IDS | 建设单位完整集合 | VARCHAR | VARCHAR(1500) | 1500 | 是 | NULL | 逻辑引用 | 是 | 有序去重 CSV SYS_DEPT.DEPT_ID;空集合清空引用,保存逐项校验 |
| 36 | DESIGN_UNIT_IDS | 设计单位完整集合 | VARCHAR | VARCHAR(1500) | 1500 | 是 | NULL | 逻辑引用 | 是 | 有序去重 CSV SYS_DEPT.DEPT_ID;空集合清空引用,保存逐项校验 |
| 37 | SUPERVISE_UNIT_IDS | 监理单位完整集合 | VARCHAR | VARCHAR(1500) | 1500 | 是 | NULL | 逻辑引用 | 是 | 有序去重 CSV SYS_DEPT.DEPT_ID;空集合清空引用,保存逐项校验 |
| 38 | CONSTRUCT_UNIT_IDS | 施工单位完整集合 | VARCHAR | VARCHAR(1500) | 1500 | 是 | NULL | 逻辑引用 | 是 | 有序去重 CSV SYS_DEPT.DEPT_ID;空集合清空引用,保存逐项校验 |
3.4 BIZ_BID_SECTION(标段主数据表 - 全新建表 + 参建主体负责人扩充)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | BID_ID | 标段ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 雪花算法大整数主键(承接存量 35 个 BID 节点 ID) |
| 2 | PROJECT_ID | 单关联兼容项目ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 是 | 仅唯一项目关联时保留;权威集合为 BIZ_BID_PROJECT_REL |
| 3 | LINE_ID | 所属线路ID | BIGINT | BIGINT | 20 | 否 | — | IDX | 是 | 关联 BIZ_LINE.LINE_ID |
| 4 | BID_CODE | 标段编码 | VARCHAR | VARCHAR(100) | 100 | 否 | — | UK(函数) | 是 | 如 CQ15TJ01、CQ15GD01 |
| 5 | BID_NAME | 标段全称 | VARCHAR | VARCHAR(200) | 200 | 否 | — | — | 是 | 如 土建施工01标、供电系统工程标 |
| 6 | COVERAGE_MODE | 管辖范围模式 | VARCHAR | VARCHAR(32) | 32 | 否 | 'SPECIFIED' | — | 是 | SPECIFIED指定工点(分站型) / FULL_LINE全线统包覆盖 |
| 7 | BID_CATEGORY | 标段专业大类 | VARCHAR | VARCHAR(64) | 64 | 是 | NULL | — | 是 | 下沉自 NODE_INFO.BID_CATEGORY(土建/机电/系统弱电等) |
| 8 | BID_TYPE | 标段招标类型 | VARCHAR | VARCHAR(64) | 64 | 是 | NULL | — | 是 | 施工标段、设备系统标、监理标段、勘察标段、设计标段、勘察设计标段、综合统包标 |
| 9 | DESIGN_UNIT_ID | 设计单位ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 是 | ALTER新增,关联 SYS_DEPT.DEPT_ID |
| 10 | DESIGN_UNIT_NAME | 设计单位名称 | VARCHAR | VARCHAR(200) | 200 | 是 | NULL | — | 是 | ALTER新增,设计企业名称快照 |
| 11 | DESIGN_LEADER_ID | 设计单位负责人ID | BIGINT | BIGINT | 20 | 是 | NULL | — | 是 | ALTER新增,设计负责人用户ID |
| 12 | DESIGN_LEADER_NAME | 设计单位负责人姓名 | VARCHAR | VARCHAR(100) | 100 | 是 | NULL | — | 是 | ALTER新增,设计负责人姓名快照 |
| 13 | DESIGN_LEADER_PHONE | 设计单位负责人电话 | VARCHAR | VARCHAR(32) | 32 | 是 | NULL | — | 否 | ALTER新增,设计负责人联系电话 |
| 14 | CONSTRUCT_UNIT_ID | 施工单位ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 是 | ALTER新增,关联 SYS_DEPT.DEPT_ID(同总包ID) |
| 15 | CONSTRUCT_UNIT_NAME | 施工单位名称 | VARCHAR | VARCHAR(200) | 200 | 是 | NULL | — | 是 | ALTER新增,施工总包单位快照 |
| 16 | CONSTRUCT_LEADER_ID | 施工单位负责人ID | BIGINT | BIGINT | 20 | 是 | NULL | — | 是 | ALTER新增,施工项目经理/负责人用户ID |
| 17 | CONSTRUCT_LEADER_NAME | 施工单位负责人姓名 | VARCHAR | VARCHAR(100) | 100 | 是 | NULL | — | 是 | ALTER新增,施工负责人姓名快照 |
| 18 | CONSTRUCT_LEADER_PHONE | 施工单位负责人电话 | VARCHAR | VARCHAR(32) | 32 | 是 | NULL | — | 否 | ALTER新增,施工负责人联系电话 |
| 19 | GENERAL_CONTRACT_UNIT_ID | 施工总包单位ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 是 | 关联 SYS_DEPT.DEPT_ID(同施工单位ID,兼容存量) |
| 20 | GENERAL_CONTRACT_UNIT_NAME | 施工总包单位名称 | VARCHAR | VARCHAR(200) | 200 | 是 | NULL | — | 是 | 施工总包单位名称快照(同施工单位名称) |
| 21 | SUPERVISE_UNIT_ID | 监理单位ID | BIGINT | BIGINT | 20 | 是 | NULL | IDX | 是 | 关联 SYS_DEPT.DEPT_ID |
| 22 | SUPERVISE_UNIT_NAME | 监理单位名称 | VARCHAR | VARCHAR(200) | 200 | 是 | NULL | — | 是 | 监理企业快照名称 |
| 23 | SUPERVISE_LEADER_ID | 监理单位负责人ID | BIGINT | BIGINT | 20 | 是 | NULL | — | 是 | ALTER新增,总监理工程师/负责人用户ID |
| 24 | SUPERVISE_LEADER_NAME | 监理单位负责人姓名 | VARCHAR | VARCHAR(100) | 100 | 是 | NULL | — | 是 | ALTER新增,监理负责人姓名快照 |
| 25 | SUPERVISE_LEADER_PHONE | 监理单位负责人电话 | VARCHAR | VARCHAR(32) | 32 | 是 | NULL | — | 否 | ALTER新增,监理负责人联系电话 |
| 26 | CONTRACT_AMOUNT | 中标合同额(万元) | DECIMAL | DECIMAL(16,2) | 16,2 | 是 | NULL | — | 是 | 标段中标签约总金额(单位:万元) |
| 27 | START_DATE | 计划开工日期 | DATE | DATE | — | 是 | NULL | — | 否 | 计划开工日期 |
| 28 | END_DATE | 计划竣工日期 | DATE | DATE | — | 是 | NULL | — | 否 | 计划竣工日期 |
| 29 | BIZ_STATUS | 施工状态 | VARCHAR | VARCHAR(32) | 32 | 是 | 'PREPARE' | — | 是 | PREPARE准备中 / CONSTRUCT施工中 / ACCEPT验收中 / COMPLETED已完工 |
| 30 | DEL_FLAG | 删除标志 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 0正常 1已删除 |
| 31 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 32 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 33 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 34 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 35 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 组织归属 |
3.5 BIZ_BID_MAJOR(标段涵盖专业明细表 - 全新建表)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 雪花算法独立主键(严禁直接复用 BID_ID) |
| 2 | BID_ID | 标段ID | BIGINT | BIGINT | 20 | 否 | — | UK(函数) | 是 | 关联 BIZ_BID_SECTION.BID_ID |
| 3 | MAJOR_CODE | 专业编码 | VARCHAR | VARCHAR(64) | 64 | 否 | — | UK(函数) | 是 | 关联标准专业代码 (如 MEP-INTE, SYS-SIG) |
| 4 | MAJOR_NAME | 专业名称 | VARCHAR | VARCHAR(100) | 100 | 否 | — | — | 是 | 专业中文名称快照 |
| 5 | IS_PRIMARY | 是否牵头/主专业 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 是 | 1是 0否 (多专业标指定1个主要专业) |
| 6 | DEL_FLAG | 删除标志 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 0正常 1已删除 |
| 7 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 8 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 9 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 10 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 11 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 组织归属 |
3.6 BIZ_BID_SITE_SCOPE(标段管辖工点明细表 - 全新建表)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 雪花算法主键 |
| 2 | BID_ID | 标段ID | BIGINT | BIGINT | 20 | 否 | — | UK(函数) | 是 | 关联 BIZ_BID_SECTION.BID_ID |
| 3 | SITE_ID | 工点ID | BIGINT | BIGINT | 20 | 否 | — | UK(函数) | 是 | 关联 BIZ_SITE_MASTER.SITE_MASTER_ID |
| 4 | DEL_FLAG | 删除标志 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 0正常 1已删除 |
| 5 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 6 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 7 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 8 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 9 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 组织归属 |
3.7 BIZ_UNIT_PROJECT(单位工程表 - 全新建表)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | UNIT_PROJECT_ID | 单位工程ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 主键ID(存量初始化由序列 SEQ_BIZ_UNIT_PROJECT START WITH 3000000000000000001 生成,运行时由平台雪花算法生成) |
| 2 | BID_ID | 所属标段ID | BIGINT | BIGINT | 20 | 否 | — | UK(函数) | 是 | 关联 BIZ_BID_SECTION.BID_ID |
| 3 | SITE_ID | 所在物理工点ID | BIGINT | BIGINT | 20 | 否 | — | UK(函数) | 是 | 关联 BIZ_SITE_MASTER.SITE_MASTER_ID |
| 4 | LINE_ID | 线路ID | BIGINT | BIGINT | 20 | 否 | — | IDX | 是 | 冗余线路ID加速汇总 |
| 5 | UNIT_PROJECT_CODE | 单位工程编码 | VARCHAR | VARCHAR(100) | 100 | 否 | — | — | 是 | 规范生成:UP_{bidCode}_{stationCode}_{majorCode} |
| 6 | UNIT_PROJECT_NAME | 单位工程名称 | VARCHAR | VARCHAR(300) | 300 | 否 | — | — | 是 | 规范命名:{工点名称} {标准专业名称}工程 |
| 7 | MAJOR_CODE | 专业代码 | VARCHAR | VARCHAR(64) | 64 | 否 | — | UK(函数) | 是 | 关联标准专业 (如 SYS-SIG, MEP-INTE) |
| 8 | MAJOR_NAME | 专业名称 | VARCHAR | VARCHAR(100) | 100 | 否 | — | — | 是 | 专业名称快照(严格从标准字典获取) |
| 9 | GB_CODE | 国标分类代码 | VARCHAR | VARCHAR(64) | 64 | 是 | NULL | — | 否 | GB 50299 专业分类代码 |
| 10 | ACCEPT_STATUS | 验收状态 | VARCHAR | VARCHAR(32) | 32 | 否 | 'PENDING' | — | 是 | 继承原节点 BIZ_STATUS:PENDING/CHECKING/PASSED |
| 11 | DEL_FLAG | 删除标志 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 0正常 1已删除 |
| 12 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 13 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 14 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 15 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 16 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 组织归属 |
主键序列与平台雪花 ID 体系设计说明:
- 纯 SQL 批量迁移阶段:由于脱离 Java 运行环境无法调用后端雪花算法,存量脚本采用高位段独立序列(
SEQ_SYS_DEPT_MIGRATE START WITH 2199000000000200001、SEQ_BIZ_UNIT_PROJECT START WITH 3000000000000000001)生成 19 位唯一主键,与雪花 ID 空间天然隔离,绝无碰撞风险;- 系统正式上线运行阶段:所有新增业务实体均统一由后端平台雪花 ID 生成器(
IdWorker)自动生成,两阶段职责清晰、平滑过渡。
3.8 BIZ_SUB_PROJECT(分部工程表 - 全新建表)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | SUB_PROJECT_ID | 分部工程ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 雪花算法主键 |
| 2 | UNIT_PROJECT_ID | 所属单位工程ID | BIGINT | BIGINT | 20 | 否 | — | IDX | 是 | 关联 BIZ_UNIT_PROJECT.UNIT_PROJECT_ID |
| 3 | SUB_PROJECT_CODE | 分部工程编码 | VARCHAR | VARCHAR(100) | 100 | 否 | — | — | 是 | 如 0101 |
| 4 | SUB_PROJECT_NAME | 分部工程名称 | VARCHAR | VARCHAR(200) | 200 | 否 | — | — | 是 | 如 地基与基础、主体结构、通风与防排烟 |
| 5 | GB_CODE | 国标代码 | VARCHAR | VARCHAR(64) | 64 | 是 | NULL | — | 否 | GB 50299 标准分类码 |
| 6 | ORDER_NUM | 排序序号 | INT | INT | 10 | 否 | 0 | — | 否 | 排序权重 |
| 7 | DEL_FLAG | 删除标志 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 0正常 1已删除 |
| 8 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 9 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 10 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 11 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 12 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 组织归属 |
3.9 BIZ_USER_ENGINEERING_CONFIG(用户工程授权配置根表 - 全新建表)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | CONFIG_ID | 配置ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 雪花算法主键 |
| 2 | USER_ID | 用户ID | BIGINT | BIGINT | 20 | 否 | — | UK | 是 | 关联 SYS_USER.USER_ID |
| 3 | REVISION | 乐观锁版本号 | BIGINT | BIGINT | 20 | 否 | 0 | CHECK(>=0) | 是 | 初始为0,写操作递增 |
| 4 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 组织归属 |
| 5 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 6 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 7 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 8 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
3.10 BIZ_USER_ENGINEERING_LINE(用户线路工程授权表 - 全新建表)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | GRANT_ID | 授权ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 雪花算法主键 |
| 2 | CONFIG_ID | 配置根ID | BIGINT | BIGINT | 20 | 否 | — | FK | 是 | 关联 BIZ_USER_ENGINEERING_CONFIG.CONFIG_ID |
| 3 | LINE_ID | 线路ID | BIGINT | BIGINT | 20 | 否 | — | UK(CONFIG_ID, LINE_ID) | 是 | 关联 BIZ_LINE.LINE_ID |
| 4 | SCOPE_MODE | 授权模式 | VARCHAR | VARCHAR(12) | 12 | 否 | — | CHECK(FULL_LINE, RESTRICTED) | 是 | FULL_LINE整线 / RESTRICTED受限 |
| 5 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 组织归属 |
| 6 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 7 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 8 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 9 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
3.11 BIZ_USER_ENGINEERING_PAIR(用户标段工点授权明细表 - 全新建表)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | PAIR_ID | 明细ID | BIGINT | BIGINT | 20 | 否 | — | PK | 是 | 雪花算法主键 |
| 2 | GRANT_ID | 线路授权ID | BIGINT | BIGINT | 20 | 否 | — | FK, UK(GRANT_ID, BID_ID, SITE_ID) | 是 | 关联 BIZ_USER_ENGINEERING_LINE.GRANT_ID |
| 3 | BID_ID | 标段ID | BIGINT | BIGINT | 20 | 否 | — | UK | 是 | 关联 BIZ_BID_SECTION.BID_ID |
| 4 | SITE_ID | 工点ID | BIGINT | BIGINT | 20 | 否 | — | UK, IDX(SITE_ID, GRANT_ID) | 是 | 关联 BIZ_SITE_MASTER.SITE_MASTER_ID |
| 5 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 组织归属 |
| 6 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 7 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 8 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 9 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
3.10 BIZ_MAJOR_DICT(行业标准专业字典表 - 全新建表)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型(DM8) | 长度/精度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键ID | VARCHAR | VARCHAR(64) | 64 | 否 | — | PK | 是 | 业务主键标识 |
| 2 | MAJOR_CODE | 行业标准编码 | VARCHAR | VARCHAR(64) | 64 | 否 | — | UK(函数) | 是 | 规范两级专业代码 (如 SYS-SIG, MEP-INTE) |
| 3 | MAJOR_NAME | 专业中文名称 | VARCHAR | VARCHAR(100) | 100 | 否 | — | — | 是 | 如 信号系统, 风水电综合系统 |
| 4 | CATEGORY_CODE | 专业大类代码 | VARCHAR | VARCHAR(32) | 32 | 否 | — | — | 是 | CIV/MEP/SYS/POW/INT |
| 5 | CATEGORY_NAME | 专业大类名称 | VARCHAR | VARCHAR(64) | 64 | 否 | — | — | 是 | 土建工程专业/机电系统专业/弱电系统专业/供电系统专业/联调综合专业 |
| 6 | ORIGIN_CODE | 原内部标识对照 | VARCHAR | VARCHAR(64) | 64 | 是 | NULL | — | 否 | 存量映射 (如 XH, 99FSD, JZ) |
| 7 | ORDER_NUM | 排序序号 | INT | INT | 10 | 否 | 0 | — | 否 | 显示顺序 |
| 8 | CATEGORY | 所属大类 | VARCHAR | VARCHAR(64) | 64 | 是 | NULL | — | 是 | 规范大类 (土建工程专业/机电系统专业/弱电系统专业/供电系统专业/联调综合专业) |
| 9 | PARENT_CODE | 父级专业代码 | VARCHAR | VARCHAR(64) | 64 | 是 | NULL | — | 否 | 顶级为 NULL |
| 10 | STATUS | 状态 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 是 | 0正常 1已停用 |
| 11 | REMARK | 标准描述说明 | VARCHAR | VARCHAR(500) | 500 | 是 | NULL | — | 否 | 规范验收覆盖与标准描述说明 |
| 12 | DEL_FLAG | 删除标志 | CHAR | CHAR(1) | 1 | 否 | '0' | — | 否 | 0正常 1已删除 |
| 13 | CREATE_BY | 创建人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 14 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 15 | UPDATE_BY | 更新人 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 审计字段 |
| 16 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | — | 是 | NULL | — | 否 | 审计字段 |
| 17 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | 20 | 是 | NULL | — | 否 | 组织归属 |
3.11 SYS_UNIT_PROJECT_DEPT(参建单位项目部子表 - 全量)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK | 是 | 平台雪花生成 |
| 2 | UNIT_ID | 所属参建单位 | BIGINT | BIGINT | — | 否 | — | 索引 IDX_SYS_UPD_UNIT | 是 | 外键关联 SYS_DEPT.DEPT_ID |
| 3 | PROJECT_DEPT_NAME | 项目部名称 | String | VARCHAR2 | 100 | 否 | — | — | 是 | 同单位未删除名称唯一由 Service 校验 |
| 4 | ADDRESS | 项目部地址 | String | VARCHAR2 | 255 | 否 | — | — | 是 | 驻地项目部现场地址 |
| 5 | MANAGER_NAME | 项目部负责人 | String | VARCHAR2 | 50 | 否 | — | — | 是 | 项目经理/负责人姓名 |
| 6 | PHONE | 项目部联系电话 | String | VARCHAR2 | 100 | 否 | — | — | 是 | 支持手机/座机 |
| 7 | DEL_FLAG | 逻辑删除 | String | CHAR | 1 | 否 | '0' | — | 否 | 平台逻辑删除(0 正常) |
| 8 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 9 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 10 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | 精度 6 | 是 | — | 审计 | 否 | 平台自动填充 |
| 11 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 12 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | 精度 6 | 是 | — | 审计 | 否 | 平台自动填充 |
3.12 BIZ_CONSORTIUM(全局联合体档案 - 全量)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK | 是 | 平台雪花生成 |
| 2 | CONSORTIUM_NAME | 联合体名称 | String | VARCHAR2 | 200 | 否 | — | 函数唯一索引 | 是 | 软删档案不占用名称,未删除内全局唯一 |
| 3 | LEAD_UNIT_ID | 牵头单位 | BIGINT | BIGINT | — | 否 | — | 索引 | 是 | 外键引用 SYS_DEPT.DEPT_ID(必须属于成员) |
| 4 | STATUS | 状态 | String | CHAR | 1 | 否 | '0' | — | 否 | 0 正常、1 停用 |
| 5 | REMARK | 备注 | String | VARCHAR2 | 500 | 是 | — | — | 否 | 用户输入 |
| 6 | DEL_FLAG | 逻辑删除 | String | CHAR | 1 | 否 | '0' | — | 否 | 0 正常、1 删除 |
| 7 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 8 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 9 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | 精度 6 | 是 | — | 审计 | 否 | 平台自动填充 |
| 10 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 11 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | 精度 6 | 是 | — | 审计 | 否 | 平台自动填充 |
3.13 BIZ_CONSORTIUM_MEMBER(联合体成员 - 全量)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK | 否 | 平台雪花生成 |
| 2 | CONSORTIUM_ID | 所属联合体 | BIGINT | BIGINT | — | 否 | — | 联合唯一首列 | 是 | 逻辑外键 BIZ_CONSORTIUM.ID |
| 3 | DEPT_ID | 成员单位 | BIGINT | BIGINT | — | 否 | — | 联合唯一第二列 | 是 | 外键引用 SYS_DEPT.DEPT_ID |
| 4 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 5 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 6 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | 精度 6 | 是 | — | 审计 | 否 | 平台自动填充 |
| 7 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 8 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | 精度 6 | 是 | — | 审计 | 否 | 平台自动填充 |
3.14 BIZ_PROJECT_CONSORTIUM_REL(旧项目独立关系 - 历史保留)
| 序号 | 字段名 | 中文含义 | 逻辑类型 | 物理类型 | 长度 | 可空 | 默认值 | 约束/索引 | 核心 | 说明 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | ID | 主键 | BIGINT | BIGINT | — | 否 | — | PK | 否 | 平台雪花生成 |
| 2 | PROJECT_ID | 业务项目 | BIGINT | BIGINT | — | 否 | — | 联合唯一首列 | 是 | 逻辑外键 BIZ_PROJECT.PROJECT_ID |
| 3 | CONSORTIUM_ID | 联合体档案 | BIGINT | BIGINT | — | 否 | — | 联合唯一第二列 | 是 | 逻辑外键 BIZ_CONSORTIUM.ID |
| 4 | CREATE_DEPT | 创建部门 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 5 | CREATE_BY | 创建人 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 6 | CREATE_TIME | 创建时间 | TIMESTAMP | TIMESTAMP | 精度 6 | 是 | — | 审计 | 否 | 平台自动填充 |
| 7 | UPDATE_BY | 更新人 | BIGINT | BIGINT | — | 是 | — | 审计 | 否 | 平台自动填充 |
| 8 | UPDATE_TIME | 更新时间 | TIMESTAMP | TIMESTAMP | 精度 6 | 是 | — | 审计 | 否 | 平台自动填充 |
4. 关键索引与唯一性约束清单(采用 DM8 CASE 函数索引方案)
4.0 数据库脚本实施执行顺序总览(必须严格按序执行)
为确保数据物理完整性、杜绝外键孤儿与依赖缺失,数据库实施脚本必须严格按照以下顺序执行。特别是第 6 节专业字典初始化必须在第 7 节存量主数据清洗之前执行完毕,否则 7.4 节标段涵盖专业推导时关联字典将匹配不到数据导致单位工程落空:
| 执行阶段 | 对应章节 | 核心操作与脚本内容 | 前置依赖条件 | 关键保障目标 |
|---|---|---|---|---|
| 第一阶段 | 第 4 节(建表与索引) | 8 张新表创建 (CREATE TABLE) 及 CASE 函数唯一索引、主键序列 | 无 | 建立双核四维新实体物理结构与防重索引 |
| 第二阶段 | 第 5 节(既有表 ALTER) | BIZ_SITE_MASTER 与 BIZ_PROJECT 就地扩容加列 (ALTER) | 第一阶段 | 保护 931 条真实工点,严禁 DROP 与反向收窄 |
| 第三阶段 | 第 6 节(专业字典初始化) | BIZ_MAJOR_DICT 预置 29 项标准专业分类数据 (MERGE) | 第一阶段建表 | 存量迁移的核心前置依赖,确保后续专业名称 100% 命中 |
| 第四阶段 | 第 7 节(存量主数据清洗) | 7.0 参建单位自动建档与核心业主/运营单位组织映射 (INSERT SYS_DEPT)7.1 线路分期与延线独立建线 ( INSERT BIZ_LINE;历史候选脚本为归并 23 条主线,已废止)7.2 工点主数据对齐与主线外键重定向 ( UPDATE BIZ_SITE_MASTER)7.3 标段主数据下沉提取 ( INSERT BIZ_BID_SECTION)7.4 标段专业推导与多专业笛卡尔积落库单位工程 ( INSERT BIZ_UNIT_PROJECT) | 第二、三阶段 | 完成存量资产主数据清洗、单位精确映射与法定单位工程全量展开 |
| 第五阶段 | 第 8 节(废弃表安全退场) | 10 张真实存在的旧工程树与旧权限表安全清理与归档 | 第四阶段验证完毕 | 彻底清理旧表体系 |
实测证明,DM8 数据库不支持 Postgres 风格的 WHERE DEL_FLAG = '0' 条件唯一索引语法。
为彻底杜绝传统 (COL, DEL_FLAG) 联合索引在“删除记录后再建同名记录、再次删除时两行 DEL_FLAG='1' 发生唯一约束冲突”的软删除陷阱,本架构在 DM8 中全面采用基于 CASE 表达式的函数唯一索引(Function-based Unique Index)(实测执行成功):
- 原理:当
DEL_FLAG = '0'(有效数据)时,CASE 表达式返回真实业务值;当DEL_FLAG = '1'(软删除数据)时,CASE 表达式返回NULL。在 SQL 规范与 DM8 实现中,唯一索引允许多个NULL共存,因此已删除记录完全不占唯一名额,未删除记录受到严格唯一约束。
sql
-- 1. 线路编码唯一索引 (仅未删除有效)
CREATE UNIQUE INDEX UK_BIZ_LINE_CODE ON BIZ_LINE(
CASE WHEN DEL_FLAG = '0' THEN LINE_CODE END
);
-- 2. 同线路下工点唯一 (仅未删除有效)
-- 唯一键取 STATION_NAME 而非 STATION_CODE,原因与实测数据见本节末"工点唯一键选型说明"。
CREATE UNIQUE INDEX UK_BIZ_SITE_CODE ON BIZ_SITE_MASTER(
CASE WHEN DEL_FLAG = '0' THEN LINE_ID END,
CASE WHEN DEL_FLAG = '0' THEN STATION_NAME END
);
-- 3. 建设项目名称唯一 (仅未删除有效)
CREATE UNIQUE INDEX UK_BIZ_PROJECT_NAME ON BIZ_PROJECT(
CASE WHEN DEL_FLAG = '0' THEN PROJECT_NAME END
);
-- 4. 旧单项目模型曾规划的标段编码唯一索引(仅历史设计,不是当前开发库 DDL)
-- 2026-10-14 经项目 MCP 回读,BIZ_BID_SECTION 当前唯一索引为 BID_ID 主键,
-- 未发现 BID_CODE 唯一索引。当前编码冲突由 BidProjectService 在事务中锁定项目/线路后校验,
-- 不应执行下面的旧模型索引;多项目关系无法由 PROJECT_ID 单列唯一键正确表达。
-- 5. 标段涵盖专业唯一索引 (同一标段下专业不重复, 仅未删除有效)
CREATE UNIQUE INDEX UK_BID_MAJOR ON BIZ_BID_MAJOR(
CASE WHEN DEL_FLAG = '0' THEN BID_ID END,
CASE WHEN DEL_FLAG = '0' THEN MAJOR_CODE END
);
-- 6. 标段-工点指定管辖唯一 (同一标段下工点不重复, 仅未删除有效)
CREATE UNIQUE INDEX UK_BID_SITE_REL ON BIZ_BID_SITE_SCOPE(
CASE WHEN DEL_FLAG = '0' THEN BID_ID END,
CASE WHEN DEL_FLAG = '0' THEN SITE_ID END
);
-- 7. 单位工程核心唯一索引 (标段×工点×专业 唯一, 仅未删除有效)
CREATE UNIQUE INDEX UK_UNIT_PROJECT ON BIZ_UNIT_PROJECT(
CASE WHEN DEL_FLAG = '0' THEN BID_ID END,
CASE WHEN DEL_FLAG = '0' THEN SITE_ID END,
CASE WHEN DEL_FLAG = '0' THEN MAJOR_CODE END
);
-- 8. 用户数据权限唯一索引 (用户×维度×目标 唯一, 仅未删除有效)
CREATE UNIQUE INDEX UK_USER_DATA_SCOPE ON BIZ_USER_DATA_SCOPE(
CASE WHEN DEL_FLAG = '0' THEN USER_ID END,
CASE WHEN DEL_FLAG = '0' THEN SCOPE_TYPE END,
CASE WHEN DEL_FLAG = '0' THEN TARGET_ID END
);
-- 9. 专业代码唯一索引 (仅未删除有效)
CREATE UNIQUE INDEX UK_BIZ_MAJOR_CODE ON BIZ_MAJOR_DICT(
CASE WHEN DEL_FLAG = '0' THEN MAJOR_CODE END
);4.1 工点唯一键选型说明(STATION_CODE 归并重号,2026-10-10 实测)
存量 861 条有效工点按物理主线归并后,STATION_CODE 重号而 STATION_NAME 不重号:
| 归并线路 | 工点行数 | 不同 STATION_CODE | 重号行数 | 不同 STATION_NAME | 重名行数 |
|---|---|---|---|---|---|
| L15(15号线 一期+二期+东延+西延) | 82 | 45 | 37 | 82 | 0 |
| L05(5号线 + 5号线北延) | 73 | 57 | 16 | 73 | 0 |
| L04(4号线 + 4号线西延) | 52 | 37 | 15 | 52 | 0 |
| L09(9号线 一期+二期+新桥段) | 71 | 56 | 15 | 71 | 0 |
| L06(6号线 + 6号线东延) | 102 | 89 | 13 | 102 | 0 |
| 合计 | 96 | 0 |
- 重号不是重复记录:同一
STATION_CODE下是两个不同的物理工点,SITE_MASTER_ID与站名都不同。例:4-01在 4 号线下为“黑石子站”、在 4 号线西延下为“宏帆停车场及出入段线”。 - 根因:
STATION_CODE由各分期节点各自独立编号,只在原分期节点内唯一,归并到同一条物理线路后必然重号。 - 处置(采用最保守方案,不改写存量数据):
- 唯一键改为
(LINE_ID, STATION_NAME)——实测 18 条归并线路全部无重名,可直接建索引; - 存量
STATION_CODE一律保留原值不改写,语义降级为“原分期节点内的编号”,在归并线路内不保证唯一; - 因此 §7.2 的
UPDATE BIZ_SITE_MASTER SET LINE_ID = ...不会再撞唯一索引; - 若业务要求“同一线路内工点编码唯一”,须先确认编码重排规则(按线路走向重新编号,或保留分期后缀),作为独立变更另行执行;本次不做。
- 唯一键改为
- 该决定同步修正
requirements.md§5.1 原“station_code 在同一线路内全局唯一”的表述为“同一线路内工点名称唯一;工点编码沿用原分期编号”。
5. 既有表 ALTER 扩展脚本(就地加列保护 931 条存量数据)
sql
-- 1. BIZ_SITE_MASTER 表就地扩容与加列 (严禁 DROP,严禁对 TEXT 等大字段反向收窄)
-- 说明:SITUATION 字段原物理类型为 TEXT(最大 2GB),存量最大仅 2616 字符,完全满足存储需求,坚决不作收窄以杜绝截断风险
ALTER TABLE BIZ_SITE_MASTER MODIFY COMPOSITION VARCHAR(2000);
ALTER TABLE BIZ_SITE_MASTER ADD COLUMN IF NOT EXISTS TRANSFER_LINES VARCHAR(500);
ALTER TABLE BIZ_SITE_MASTER ADD COLUMN IF NOT EXISTS STRUCT_TYPE VARCHAR(64);
-- 2. BIZ_PROJECT 表就地加列(只加列,不做任何收窄)
-- 实测 BIZ_PROJECT 现有 29 列,其中 INTRO 实际为 TEXT、BUILD_PLAN/BELONG_COMPANY 实际为 VARCHAR(1020)。
-- 原脚本的 MODIFY INTRO VARCHAR(4000)、MODIFY BUILD_PLAN VARCHAR(1000)、MODIFY BELONG_COMPANY VARCHAR(1000)
-- 属反向收窄(TEXT→VARCHAR、1020→1000),违反本文件“严禁反向收窄”原则,已删除;
-- 该表当前 0 行虽不会截断,但保留收窄语句会在后续有数据时造成风险。
ALTER TABLE BIZ_PROJECT ADD COLUMN IF NOT EXISTS BUILD_UNIT_ID BIGINT;
ALTER TABLE BIZ_PROJECT ADD COLUMN IF NOT EXISTS DESIGN_UNIT_ID BIGINT;
ALTER TABLE BIZ_PROJECT ADD COLUMN IF NOT EXISTS SUPERVISE_UNIT_ID BIGINT;
ALTER TABLE BIZ_PROJECT ADD COLUMN IF NOT EXISTS CONSTRUCT_UNIT_ID BIGINT;
ALTER TABLE BIZ_PROJECT ADD COLUMN IF NOT EXISTS BELONG_COMPANY_ID BIGINT;
-- 2026-10-13 项目四类完整单位引用集合,名称快照列保持现有 VARCHAR(1500)
ALTER TABLE BIZ_PROJECT ADD COLUMN IF NOT EXISTS BUILD_UNIT_IDS VARCHAR(1500);
ALTER TABLE BIZ_PROJECT ADD COLUMN IF NOT EXISTS DESIGN_UNIT_IDS VARCHAR(1500);
ALTER TABLE BIZ_PROJECT ADD COLUMN IF NOT EXISTS SUPERVISE_UNIT_IDS VARCHAR(1500);
ALTER TABLE BIZ_PROJECT ADD COLUMN IF NOT EXISTS CONSTRUCT_UNIT_IDS VARCHAR(1500);6. 行业标准专业字典初始化脚本(29 项行业标准分类,含大类及跨系统综合,存量迁移前置依赖)
关键执行顺序保障:本初始化脚本必须在执行存量标段涵盖专业推导(第 7.4 节)之前执行,确保通过
JOIN BIZ_MAJOR_DICT正确匹配获取各专业的中文名称(MAJOR_NAME)与大类名称,避免出现数据落空为 0 行的问题。条数口径:本脚本共 29 条(大类 5 个:CIV 7 条、MEP 10 条、SYS 8 条、POW 3 条、INT 1 条),与
requirements.md§5.2 专业编码表逐条一致。执行后校验SELECT COUNT(*) FROM BIZ_MAJOR_DICT WHERE DEL_FLAG='0'应为 29;新增CIV-INTE(土建综合)、MEP-TOTAL(大机电系统综合,含机电+弱电+供电)、SYS-INTE(弱电系统集成综合)、POW-INTE(供电系统综合)4 项大类与跨系统综合类别,从源头上收敛工点多专业笛卡尔积展开导致的单位工程膨胀。
sql
MERGE INTO BIZ_MAJOR_DICT dest
USING (
-- 1. CIV 站前土建装饰类 (7 项)
SELECT '26' AS ID, 'CIV-INTE' AS MAJOR_CODE, '土建综合' AS MAJOR_NAME, 'CIV' AS CATEGORY_CODE, '土建装饰' AS CATEGORY_NAME, '99TJ' AS ORIGIN_CODE, 5 AS ORDER_NUM FROM DUAL UNION ALL
SELECT '1', 'CIV-ARCH', '建筑与主体结构', 'CIV', '土建装饰', 'JZ', 10 FROM DUAL UNION ALL
SELECT '2', 'CIV-DECO', '建筑装饰装修', 'CIV', '土建装饰', 'ZSZX', 20 FROM DUAL UNION ALL
SELECT '3', 'CIV-SIGN', '导向标识系统', 'CIV', '土建装饰', 'DXBS', 30 FROM DUAL UNION ALL
SELECT '4', 'CIV-SITE', '室外附属工程', 'CIV', '土建装饰', 'SWGC', 40 FROM DUAL UNION ALL
SELECT '5', 'CIV-SWTF', '室外通风工程', 'CIV', '土建装饰', 'SWTF', 50 FROM DUAL UNION ALL
SELECT '6', 'CIV-SWPS', '室外给排水工程', 'CIV', '土建装饰', 'SWJPS', 60 FROM DUAL UNION ALL
-- 2. MEP 站后机电设备类 (10 项)
SELECT '27', 'MEP-TOTAL', '大机电系统综合', 'MEP', '机电设备', '99DJD', 65 FROM DUAL UNION ALL
SELECT '7', 'MEP-INTE', '风水电综合系统', 'MEP', '机电设备', '99FSD', 70 FROM DUAL UNION ALL
SELECT '8', 'MEP-HVAC', '通风空调系统', 'MEP', '机电设备', 'TF', 80 FROM DUAL UNION ALL
SELECT '9', 'MEP-WSD', '建筑给排水系统', 'MEP', '机电设备', 'JPS', 90 FROM DUAL UNION ALL
SELECT '10', 'MEP-POW', '动力照明系统', 'MEP', '机电设备', 'DZ', 100 FROM DUAL UNION ALL
SELECT '11', 'MEP-BRAC', '综合支吊架', 'MEP', '机电设备', 'ZHJDJ', 110 FROM DUAL UNION ALL
SELECT '12', 'MEP-ELEV', '自动扶梯与人行步道', 'MEP', '机电设备', 'ZDFT', 120 FROM DUAL UNION ALL
SELECT '13', 'MEP-PSD', '站台门系统', 'MEP', '机电设备', 'ZTM', 130 FROM DUAL UNION ALL
SELECT '14', 'MEP-FES', '气体灭火系统', 'MEP', '机电设备', 'QM', 140 FROM DUAL UNION ALL
SELECT '15', 'MEP-DEP', '车辆基地工艺设备', 'MEP', '机电设备', 'CCGY', 150 FROM DUAL UNION ALL
-- 3. SYS 弱电与智能系统类 (8 项)
SELECT '28', 'SYS-INTE', '弱电系统集成综合', 'SYS', '弱电系统', '99RD', 155 FROM DUAL UNION ALL
SELECT '16', 'SYS-SIG', '信号系统', 'SYS', '弱电系统', 'XH', 160 FROM DUAL UNION ALL
SELECT '17', 'SYS-COM', '通信系统', 'SYS', '弱电系统', 'TX', 170 FROM DUAL UNION ALL
SELECT '18', 'SYS-AFC', '自动售检票系统', 'SYS', '弱电系统', 'AFC', 180 FROM DUAL UNION ALL
SELECT '19', 'SYS-ISCS', '综合监控系统', 'SYS', '弱电系统', 'ZHJK', 190 FROM DUAL UNION ALL
SELECT '20', 'SYS-BAS', '环境与设备监控系统', 'SYS', '弱电系统', 'BAS', 200 FROM DUAL UNION ALL
SELECT '21', 'SYS-FAS', '火灾自动报警系统', 'SYS', '弱电系统', 'FAS', 210 FROM DUAL UNION ALL
SELECT '22', 'SYS-SEC', '安防与门禁系统', 'SYS', '弱电系统', 'AF', 220 FROM DUAL UNION ALL
-- 4. POW 供电与牵引动力类 (3 项)
SELECT '29', 'POW-INTE', '供电系统综合', 'POW', '供电系统', '99GD', 225 FROM DUAL UNION ALL
SELECT '23', 'POW-SUB', '供电设备系统', 'POW', '供电系统', 'GDSB', 230 FROM DUAL UNION ALL
SELECT '24', 'POW-LINE', '供电线路系统', 'POW', '供电系统', 'GDXL', 240 FROM DUAL UNION ALL
-- 5. INT 综合调试集成类 (1 项)
SELECT '25', 'INT-COMM', '系统综合联调', 'INT', '系统联调', 'XT', 250 FROM DUAL
) src
ON (dest.MAJOR_CODE = src.MAJOR_CODE)
WHEN MATCHED THEN
UPDATE SET dest.MAJOR_NAME = src.MAJOR_NAME, dest.CATEGORY_CODE = src.CATEGORY_CODE, dest.CATEGORY_NAME = src.CATEGORY_NAME, dest.ORDER_NUM = src.ORDER_NUM
WHEN NOT MATCHED THEN
INSERT (ID, MAJOR_CODE, MAJOR_NAME, CATEGORY_CODE, CATEGORY_NAME, ORIGIN_CODE, ORDER_NUM, DEL_FLAG)
VALUES (src.ID, src.MAJOR_CODE, src.MAJOR_NAME, src.CATEGORY_CODE, src.CATEGORY_NAME, src.ORIGIN_CODE, src.ORDER_NUM, '0');7. 存量主数据完整清洗与推导迁移方案(含参建单位自动建档)
历史方案说明(2026-10-12 口径修订):本章节记载的「线路归并收敛至 23 条物理主线、工点
LINE_ID重定向到归并主线」属于早期一次性迁移的候选方案,已被现行基线取代。现行基线为线路按建设期次/延线独立管理(见本文档「重要建表与迁移原则」第 4 条及需求分析),即LINE_ID直接表达具体工程建设期次(如 15号线一期、15号线二期),不再执行物理主线归并。因此:
- 本章 7.1 节「线路归并收敛至 23 条主线」、7.2 节「工点
LINE_ID重定向到归并主线」、§4.1「归并重号」及 §7.4.1「线路 23 条」等描述与校验数量,仅作历史来源追溯,不代表当前数据基线;- 现行有效线路以
BIZ_LINE实库为准(当前 Dev 有效线路 30 条,另含历史逻辑删除记录),迁移映射与校验数量应按「分期独立」重新核对后再执行;- 本章其余存量资产清洗(参建单位映射、标段下沉、专业字典、单位工程展开)逻辑仍然有效。
7.0 参建单位自动建档与业主/运营单位组织机构映射对照台账
在清洗线路、标段与项目之前,针对存量涉及的业主单位、运营单位与乙方参建单位(施工、监理、设计)明确主数据处理与清洗规则:
1. 业主建设单位与运营单位处理策略(已建单位精准映射,未建单位保留文本)
存量主数据中填报的业主单位(BUILD_UNIT)与运营公司(OPERATING_COMPANY)存在改制更名与历史文本口径差异。经与当前系统组织架构(SYS_DEPT)实际核对:
- 重庆交通建设管理有限公司(系统已建,ID: 101):原存量文本中的“重庆市铁路(集团)有限公司”、“重庆市铁路(集团)有限公司”是改制前历史名称,当前实体已在系统组织树中规范建档(
DEPT_ID=101, PARENT_ID=100, ORG_TYPE='company')。清洗时无需新建,直接映射关联该DEPT_ID并将名称规范更新为当前标准企业全称; - 重庆轨道交通运营有限公司(系统已建,ID: 2083453529837531162):原存量文本中的“重庆市轨道交通(集团)有限公司”、“重庆市轨道集团有限公司”、“重庆市轨道交通(集团)有限公司”及“重庆交通开投轨道运营有限公司”是历史不同阶段的表述,当前实体已在系统组织树中规范建档(
DEPT_ID=2083453529837531162, PARENT_ID=100, ORG_TYPE='company')。清洗时无需新建,直接映射关联该DEPT_ID并将名称规范更新为当前标准企业全称; - 未建档特殊运营公司:对于“重庆轨道九号线建设运营有限公司”、“重庆轨道四号线建设运营有限公司”、“重庆轨道十八号线建设运营有限公司”及分部描述(“运营一公司”、“运营二公司”),因暂未在集团统一组织架构中建档,严格遵循业务指示保留原文本字段描述,外键 ID 预留为空(NULL),后续待组织树完善时再统一关联。
2. 存量业主建设单位与运营单位改制重组映射对照台账
| 序号 | 历史存量文本记录 | 当前标准单位全称 (DEPT_NAME) | 系统部门 ID (DEPT_ID) | 上级部门 ID (PARENT_ID) | 组织属性 (ORG_TYPE) | 业务定位说明 | 处理策略 |
|---|---|---|---|---|---|---|---|
| 1 | 重庆市铁路(集团)有限公司 / 重庆市铁路(集团)有限公司 | 重庆交通建设管理有限公司 | 101 | 100 (开投集团) | company | 核心业主建管主体 (如 15号线、27号线) | 映射至系统已建部门,绑定 ID: 101 |
| 2 | 重庆市轨道交通(集团)有限公司 / 重庆市轨道集团有限公司 / 重庆市轨道交通(集团)有限公司 / 重庆交通开投轨道运营有限公司 | 重庆轨道交通运营有限公司 | 2083453529837531162 | 100 (开投集团) | company | 核心业主运营与建管主体 (如 4/6/7/17/18/24号线及环线/3/5/10号线) | 映射至系统已建部门,绑定 ID: 2083453529837531162 |
| 3 | 重庆轨道九号线建设运营有限公司 | 重庆轨道九号线建设运营有限公司 | NULL | — | — | PPP/特许经营项目线路单位 | 遵循指示保留原文字描述,ID 设为 NULL |
| 4 | 重庆轨道四号线建设运营有限公司 | 重庆轨道四号线建设运营有限公司 | NULL | — | — | PPP/特许经营项目线路单位 | 遵循指示保留原文字描述,ID 设为 NULL |
| 5 | 重庆轨道十八号线建设运营有限公司 | 重庆轨道十八号线建设运营有限公司 | NULL | — | — | PPP/特许经营项目线路单位 | 遵循指示保留原文字描述,ID 设为 NULL |
| 6 | 运营一公司 / 运营二公司 | 运营一公司 / 运营二公司 | NULL | — | — | 历史运营分部口径 | 遵循指示保留原文字描述,ID 设为 NULL |
3. 参建单位处理策略(23 家纯乙方施工/监理/设计自动建档)
- 从
BIZ_PROJECT_NODE_INFO中去重提取施工单位(CONSTRUCT_UNIT)、监理单位(SUPERVISE_UNIT)、设计单位(DESIGN_UNIT); - 组织树规范挂接:存量缺失的 23 家参建单位统一挂载在现有“参建单位”根分组(
PARENT_ID=2199000000000100013)下。注意区分根节点自身与新建子单位的属性:参建单位根节点2199000000000100013自身为ORG_TYPE='group'、ANCESTORS='0'、PARENT_ID=0;下述属性是新建子单位取值——ANCESTORS='0,2199000000000100013'、ORG_TYPE='company'、DEPT_TYPE='2'、STATUS='0'; - 过滤脏数据:剔除历史测试字符串(如
'2199000000000100001'与'哈哈'),清理名称换行符; - 主键生成:采用 19 位独立大整数序列
SEQ_SYS_DEPT_MIGRATE START WITH 2199000000000200001。
sql
-- 1. 幂等创建预清洗主键序列 (起始值位于独立大整数安全区间)
BEGIN
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_SYS_DEPT_MIGRATE START WITH 2199000000000200001 INCREMENT BY 1';
EXCEPTION
WHEN OTHERS THEN NULL;
END;
-- 2. 批量将缺失的乙方参建单位档案规范插入 SYS_DEPT (统一挂载至参建单位根节点)
INSERT INTO SYS_DEPT (
DEPT_ID, PARENT_ID, ANCESTORS, DEPT_NAME, ORDER_NUM,
STATUS, DEL_FLAG, DEPT_TYPE, ORG_TYPE, CREATE_TIME
)
SELECT
SEQ_SYS_DEPT_MIGRATE.NEXTVAL AS DEPT_ID,
2199000000000100013 AS PARENT_ID,
'0,2199000000000100013' AS ANCESTORS,
u.UNIT_NAME AS DEPT_NAME,
0 AS ORDER_NUM,
'0' AS STATUS,
'0' AS DEL_FLAG,
'2' AS DEPT_TYPE,
'company' AS ORG_TYPE,
SYSDATE AS CREATE_TIME
FROM (
SELECT DISTINCT TRIM(REPLACE(REPLACE(UNIT_NAME, CHR(10), ' '), CHR(13), ' ')) AS UNIT_NAME FROM (
SELECT CONSTRUCT_UNIT AS UNIT_NAME FROM BIZ_PROJECT_NODE_INFO WHERE CONSTRUCT_UNIT IS NOT NULL
UNION
SELECT SUPERVISE_UNIT AS UNIT_NAME FROM BIZ_PROJECT_NODE_INFO WHERE SUPERVISE_UNIT IS NOT NULL
UNION
SELECT DESIGN_UNIT AS UNIT_NAME FROM BIZ_PROJECT_NODE_INFO WHERE DESIGN_UNIT IS NOT NULL
) t
WHERE t.UNIT_NAME IS NOT NULL
AND TRIM(t.UNIT_NAME) <> ''
AND t.UNIT_NAME NOT IN ('2199000000000100001', '哈哈')
) u
WHERE NOT EXISTS (
SELECT 1 FROM SYS_DEPT d WHERE d.DEPT_NAME = u.UNIT_NAME AND d.DEL_FLAG = '0'
);附:存量清洗待自动建档的 23 家参建单位档案台账(纯乙方施工/监理/设计)
| 序号 | 抽取企业/联合体全称快照 | 归属根节点 | 分类 (DEPT_TYPE) | 专业类型说明 |
|---|---|---|---|---|
| 1 | 中建二局、中铁十八局、中建五局 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 施工总承包联合体 |
| 2 | 中国铁建股份有限公司、中国水利水电第四工程局 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 施工总承包联合体 |
| 3 | 中国中铁股份有限公司联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 施工总承包联合体 |
| 4 | 中国建筑股份有限公司联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 施工总承包联合体 |
| 5 | 中国电力建设股份有限公司联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 施工总承包联合体 |
| 6 | 中国建筑第八工程局有限公司 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 施工总承包单位 |
| 7 | 中铁第一勘察设计院集团有限公司、重庆市轨道交通设计研究院有限责任公司 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 总体总包设计联合体 |
| 8 | 上海市隧道工程轨道交通设计研究院、中铁二院工程集团有限责任公司 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 设计联合体 |
| 9 | 北京城建设计发展集团股份有限公司、中铁第六勘察设计院集团有限公司 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 设计联合体 |
| 10 | 中铁一院、广州华申监理联合体,中铁华铁、智通建设监理联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 监理联合体 |
| 11 | 中铁二院/重庆公诚监理联合体、北京中铁诚业/重庆联盛 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 监理联合体 |
| 12 | 天津新亚太工程建设监理有限公司;浙江江南工程管理股份有限公司、上海建浩工程顾问有限公司(联合体) | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 监理联合体 |
| 13 | 河南长城铁路工程建设咨询有限公司(牵头人)、西恒工程咨询集团有限公司 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 监理联合体 |
| 14 | 浙江江南工程管理股份有限公司·四川省城市建设工程咨询集团有限公司(联合体) | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 监理联合体 |
| 15 | 铁四院、同致诚监理联合体,四川铁科、中煤科工监理联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 监理联合体 |
| 16 | 兰州交大工程咨询有限公司、湖南长顺项目管理有限公司(联合体) | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 监理联合体 |
| 17 | 中国交建股份有限公司、中交路建南方公司等联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 总承包联合体 |
| 18 | 中国电力建设股份有限公司、中国水利水电第四工程局等联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 总承包联合体 |
| 19 | 重庆轨道院 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 设计单位 |
| 20 | 北京城建设计发展集团股份有限公司、中铁第四/第六勘察设计院联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 总体总包设计联合体 |
| 21 | 京城建设计发展集团股份有限公司等联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 设计联合体 |
| 22 | 中国交通建设股份有限公司等联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 总承包联合体 |
| 23 | 中国中铁/中国建筑等联合体 | 参建单位 (ID:2199000000000100013) | 2 (参建单位) | 总承包联合体 |
7.1 线路主数据分期与延线独立建线(规范编码,精确绑定工点与参建主体)
原工程树中存在 33 个线路分期节点。在工程建设管理平台中,线路的业务管理粒度为工程建设主线与分期/延线(例如:15号线一期与二期为两条独立线路,4号线西延、5号线北延、6号线东延、18号线北延作为独立工程延线建线,全网共维护 28 条分期主线与延线)。 线路编码采用统一规范:
- 主线/全线:
L01、L02、L03、L04、L05、L06、L09、L10、L26、L27、L28、L-LOOP、L-GB、L-JT、L-BT、L-BSYB、L-CQDZ; - 工程分期:两位线号加两位期数,如
L07-01、L15-01、L15-02、L17-01、L18-01、L19-01、L24-01; - 工程延线:线号加延线简称,如
L04-XY(西延)、L05-BY(北延)、L06-DY(东延)、L18-BY(北延)。 工点与标段按实际建设界面准确归属于对应的分期线路或延线线路。线路本身不挂接企业法人与组织单位(BIZ_LINE实测 22 列中不含BUILD_UNIT_ID/BUILD_UNIT_NAME/OPERATING_COMPANY_ID/OPERATING_COMPANY_NAME),业主与运营主体统一在建设项目与参建主体侧表达:
历史脚本说明(2026-10-13):以下 SQL 为早期「按物理主线归并 23 条线路」的候选脚本,已被现行「分期独立建线」基线取代,仅作历史来源追溯,禁止执行。该脚本仍向
BIZ_LINE写入BUILD_UNIT_ID/BUILD_UNIT_NAME/OPERATING_COMPANY_ID/OPERATING_COMPANY_NAME四个已不存在的列,直接执行会因「无法解析的成员访问表达式」报错;其归并逻辑也与本节的分期独立口径冲突。现行线路迁移以BIZ_LINE实库为准,按分期独立核对后再执行。
sql
-- 1. 创建线路临时映射表 (记录原节点 ID 映射到归并后的主线路 ID)
CREATE TABLE TMP_LINE_MAP (
OLD_NODE_ID BIGINT NOT NULL,
NEW_LINE_ID BIGINT NOT NULL,
LINE_CODE VARCHAR(64) NOT NULL
);
-- 2. 插入映射关系并执行归并迁移至 BIZ_LINE
WITH raw_lines AS (
SELECT
n.NODE_ID,
n.NODE_NAME,
n.ORDER_NUM,
info.LINE_STAGE,
info.LINE_COLOR,
info.LINE_LENGTH,
info.ORIGIN_DESTINATION,
info.SERVICE_AREA,
info.BUILD_UNIT,
info.OPERATING_COMPANY,
CASE
WHEN n.NODE_NAME LIKE '%10号线%' THEN '10号线'
WHEN n.NODE_NAME LIKE '%15号线%' THEN '15号线'
WHEN n.NODE_NAME LIKE '%17号线%' THEN '17号线'
WHEN n.NODE_NAME LIKE '%18号线%' THEN '18号线'
WHEN n.NODE_NAME LIKE '%19号线%' THEN '19号线'
WHEN n.NODE_NAME LIKE '%1号线%' THEN '1号线'
WHEN n.NODE_NAME LIKE '%24号线%' THEN '24号线'
WHEN n.NODE_NAME LIKE '%26号线%' THEN '26号线'
WHEN n.NODE_NAME LIKE '%27号线%' THEN '27号线'
WHEN n.NODE_NAME LIKE '%28号线%' THEN '28号线'
WHEN n.NODE_NAME LIKE '%2号线%' THEN '2号线'
WHEN n.NODE_NAME LIKE '%3号线%' THEN '3号线'
WHEN n.NODE_NAME LIKE '%4号线%' THEN '4号线'
WHEN n.NODE_NAME LIKE '%5号线%' THEN '5号线'
WHEN n.NODE_NAME LIKE '%6号线%' THEN '6号线'
WHEN n.NODE_NAME LIKE '%7号线%' THEN '7号线'
WHEN n.NODE_NAME LIKE '%9号线%' THEN '9号线'
WHEN n.NODE_NAME LIKE '%国博线%' THEN '国博线'
WHEN n.NODE_NAME LIKE '%江跳线%' THEN '江跳线'
WHEN n.NODE_NAME LIKE '%环线%' THEN '环线'
WHEN n.NODE_NAME LIKE '%璧山云巴%' THEN '璧山云巴'
WHEN n.NODE_NAME LIKE '%璧铜线%' THEN '璧铜线'
WHEN n.NODE_NAME LIKE '%重庆东站%' THEN '重庆东站'
ELSE '测试线路'
END AS MERGED_NAME,
CASE
WHEN n.NODE_NAME LIKE '%10号线%' THEN 'L10'
WHEN n.NODE_NAME LIKE '%15号线%' THEN 'L15'
WHEN n.NODE_NAME LIKE '%17号线%' THEN 'L17'
WHEN n.NODE_NAME LIKE '%18号线%' THEN 'L18'
WHEN n.NODE_NAME LIKE '%19号线%' THEN 'L19'
WHEN n.NODE_NAME LIKE '%1号线%' THEN 'L01'
WHEN n.NODE_NAME LIKE '%24号线%' THEN 'L24'
WHEN n.NODE_NAME LIKE '%26号线%' THEN 'L26'
WHEN n.NODE_NAME LIKE '%27号线%' THEN 'L27'
WHEN n.NODE_NAME LIKE '%28号线%' THEN 'L28'
WHEN n.NODE_NAME LIKE '%2号线%' THEN 'L02'
WHEN n.NODE_NAME LIKE '%3号线%' THEN 'L03'
WHEN n.NODE_NAME LIKE '%4号线%' THEN 'L04'
WHEN n.NODE_NAME LIKE '%5号线%' THEN 'L05'
WHEN n.NODE_NAME LIKE '%6号线%' THEN 'L06'
WHEN n.NODE_NAME LIKE '%7号线%' THEN 'L07'
WHEN n.NODE_NAME LIKE '%9号线%' THEN 'L09'
WHEN n.NODE_NAME LIKE '%国博线%' THEN 'L-GB'
WHEN n.NODE_NAME LIKE '%江跳线%' THEN 'L-JT'
WHEN n.NODE_NAME LIKE '%环线%' THEN 'L-LOOP'
WHEN n.NODE_NAME LIKE '%璧山云巴%' THEN 'L-BSYB'
WHEN n.NODE_NAME LIKE '%璧铜线%' THEN 'L-BT'
WHEN n.NODE_NAME LIKE '%重庆东站%' THEN 'L-CQDZ'
ELSE 'L-TEST'
END AS MERGED_CODE
FROM BIZ_PROJECT_NODE n
LEFT JOIN BIZ_PROJECT_NODE_INFO info ON n.NODE_ID = info.NODE_ID
WHERE n.NODE_TYPE = 'LINE' AND n.DEL_FLAG = '0'
)
INSERT INTO TMP_LINE_MAP (OLD_NODE_ID, NEW_LINE_ID, LINE_CODE)
SELECT
r.NODE_ID AS OLD_NODE_ID,
first_v.FIRST_ID AS NEW_LINE_ID,
r.MERGED_CODE AS LINE_CODE
FROM raw_lines r
JOIN (
SELECT MERGED_CODE, MIN(NODE_ID) AS FIRST_ID
FROM raw_lines
GROUP BY MERGED_CODE
) first_v ON r.MERGED_CODE = first_v.MERGED_CODE;
-- 3. 归并写入 BIZ_LINE 表 (收敛至 23 条真实物理主线路,保留业主/运营原文字描述)
INSERT INTO BIZ_LINE (
LINE_ID, LINE_CODE, LINE_NAME, LINE_STAGE, COLOR_HEX,
TOTAL_LENGTH_KM, ORIGIN_DESTINATION, SERVICE_AREA,
BUILD_UNIT_ID, BUILD_UNIT_NAME,
OPERATING_COMPANY_ID, OPERATING_COMPANY_NAME,
STATION_COUNT, BIZ_STATUS, ORDER_NUM, DEL_FLAG,
CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, CREATE_DEPT
)
SELECT
m.NEW_LINE_ID AS LINE_ID,
m.LINE_CODE,
MAX(r.MERGED_NAME) AS LINE_NAME,
COALESCE(LISTAGG(DISTINCT NULLIF(NULLIF(r.LINE_STAGE, '不分期'), ''), ',') WITHIN GROUP (ORDER BY r.NODE_ID), '全线') AS LINE_STAGE,
COALESCE(MAX(r.LINE_COLOR), '#007ACC') AS COLOR_HEX,
SUM(COALESCE(r.LINE_LENGTH, 0)) AS TOTAL_LENGTH_KM,
MAX(r.ORIGIN_DESTINATION) AS ORIGIN_DESTINATION,
MAX(r.SERVICE_AREA) AS SERVICE_AREA,
CASE
WHEN MAX(r.BUILD_UNIT) LIKE '%铁路%集团%' THEN 101
WHEN MAX(r.BUILD_UNIT) LIKE '%轨道%集团%' OR MAX(r.BUILD_UNIT) LIKE '%轨道交通%集团%' THEN 2083453529837531162
ELSE NULL
END AS BUILD_UNIT_ID,
CASE
WHEN MAX(r.BUILD_UNIT) LIKE '%铁路%集团%' THEN '重庆交通建设管理有限公司'
WHEN MAX(r.BUILD_UNIT) LIKE '%轨道%集团%' OR MAX(r.BUILD_UNIT) LIKE '%轨道交通%集团%' THEN '重庆轨道交通运营有限公司'
ELSE MAX(r.BUILD_UNIT)
END AS BUILD_UNIT_NAME,
CASE
WHEN MAX(r.OPERATING_COMPANY) LIKE '%铁路%集团%' THEN 101
WHEN MAX(r.OPERATING_COMPANY) LIKE '%轨道%集团%' OR MAX(r.OPERATING_COMPANY) LIKE '%轨道交通%集团%' OR MAX(r.OPERATING_COMPANY) LIKE '%开投轨道运营%' THEN 2083453529837531162
ELSE NULL
END AS OPERATING_COMPANY_ID,
CASE
WHEN MAX(r.OPERATING_COMPANY) LIKE '%铁路%集团%' THEN '重庆交通建设管理有限公司'
WHEN MAX(r.OPERATING_COMPANY) LIKE '%轨道%集团%' OR MAX(r.OPERATING_COMPANY) LIKE '%轨道交通%集团%' OR MAX(r.OPERATING_COMPANY) LIKE '%开投轨道运营%' THEN '重庆轨道交通运营有限公司'
ELSE MAX(r.OPERATING_COMPANY)
END AS OPERATING_COMPANY_NAME,
0 AS STATION_COUNT,
'CONSTRUCT' AS BIZ_STATUS,
MIN(COALESCE(r.ORDER_NUM, 0)) AS ORDER_NUM,
'0' AS DEL_FLAG,
MIN(r.CREATE_BY), MIN(r.CREATE_TIME), MIN(r.UPDATE_BY), MIN(r.UPDATE_TIME), MIN(r.CREATE_DEPT)
FROM TMP_LINE_MAP m
JOIN (
SELECT
n.NODE_ID, n.ORDER_NUM, n.CREATE_BY, n.CREATE_TIME, n.UPDATE_BY, n.UPDATE_TIME, n.CREATE_DEPT,
info.LINE_STAGE, info.LINE_COLOR, info.LINE_LENGTH, info.ORIGIN_DESTINATION, info.SERVICE_AREA,
info.BUILD_UNIT, info.OPERATING_COMPANY,
CASE
WHEN n.NODE_NAME LIKE '%10号线%' THEN '10号线'
WHEN n.NODE_NAME LIKE '%15号线%' THEN '15号线'
WHEN n.NODE_NAME LIKE '%17号线%' THEN '17号线'
WHEN n.NODE_NAME LIKE '%18号线%' THEN '18号线'
WHEN n.NODE_NAME LIKE '%19号线%' THEN '19号线'
WHEN n.NODE_NAME LIKE '%1号线%' THEN '1号线'
WHEN n.NODE_NAME LIKE '%24号线%' THEN '24号线'
WHEN n.NODE_NAME LIKE '%26号线%' THEN '26号线'
WHEN n.NODE_NAME LIKE '%27号线%' THEN '27号线'
WHEN n.NODE_NAME LIKE '%28号线%' THEN '28号线'
WHEN n.NODE_NAME LIKE '%2号线%' THEN '2号线'
WHEN n.NODE_NAME LIKE '%3号线%' THEN '3号线'
WHEN n.NODE_NAME LIKE '%4号线%' THEN '4号线'
WHEN n.NODE_NAME LIKE '%5号线%' THEN '5号线'
WHEN n.NODE_NAME LIKE '%6号线%' THEN '6号线'
WHEN n.NODE_NAME LIKE '%7号线%' THEN '7号线'
WHEN n.NODE_NAME LIKE '%9号线%' THEN '9号线'
WHEN n.NODE_NAME LIKE '%国博线%' THEN '国博线'
WHEN n.NODE_NAME LIKE '%江跳线%' THEN '江跳线'
WHEN n.NODE_NAME LIKE '%环线%' THEN '环线'
WHEN n.NODE_NAME LIKE '%璧山云巴%' THEN '璧山云巴'
WHEN n.NODE_NAME LIKE '%璧铜线%' THEN '璧铜线'
WHEN n.NODE_NAME LIKE '%重庆东站%' THEN '重庆东站'
ELSE '测试线路'
END AS MERGED_NAME
FROM BIZ_PROJECT_NODE n
LEFT JOIN BIZ_PROJECT_NODE_INFO info ON n.NODE_ID = info.NODE_ID
WHERE n.NODE_TYPE = 'LINE' AND n.DEL_FLAG = '0'
) r ON m.OLD_NODE_ID = r.NODE_ID
GROUP BY m.NEW_LINE_ID, m.LINE_CODE;7.2 工点主数据线路外键重定向对齐
通过临时映射表,将原属于分期节点(如属于 15号线二期)的工点,其 LINE_ID 统一重定向到归并后的主线路 ID(例如重庆西站与全线 82 个工点全部统一挂在 L15 15号线下):
sql
UPDATE BIZ_SITE_MASTER s
SET s.LINE_ID = (SELECT m.NEW_LINE_ID FROM TMP_LINE_MAP m WHERE m.OLD_NODE_ID = s.LINE_ID)
WHERE EXISTS (SELECT 1 FROM TMP_LINE_MAP m WHERE m.OLD_NODE_ID = s.LINE_ID);覆盖度与冲突说明(2026-10-10 实测):
- 存量 920 条有效工点的
LINE_ID全部指向NODE_TYPE='LINE'的旧节点(920/920,无 NULL、无其他类型),因此本步骤对全部有效工点生效,不存在漏重定向的记录; - 归并后会出现 96 组
(LINE_ID, STATION_CODE)重号,但 §4 的唯一键已取(LINE_ID, STATION_NAME),本UPDATE不会违反唯一约束;重号的成因、分布与处置见 §4.1。
7.3 标段主数据下沉提取(重定向线路 ID,PROJECT_ID 置空避免悬空外键)
sql
INSERT INTO BIZ_BID_SECTION (
BID_ID, PROJECT_ID, LINE_ID, BID_CODE, BID_NAME,
COVERAGE_MODE, BID_CATEGORY, BID_TYPE,
GENERAL_CONTRACT_UNIT_ID, GENERAL_CONTRACT_UNIT_NAME,
SUPERVISE_UNIT_ID, SUPERVISE_UNIT_NAME,
START_DATE, END_DATE, BIZ_STATUS, DEL_FLAG,
CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, CREATE_DEPT
)
SELECT
n.NODE_ID AS BID_ID,
NULL AS PROJECT_ID, -- 存量 BIZ_PROJECT 当前为 0 行,避免悬空外键;待后续在建设项目管理中正式立项后关联合同
COALESCE(m.NEW_LINE_ID, n.PARENT_ID) AS LINE_ID,
COALESCE(n.NODE_CODE, 'BID_' || n.NODE_ID) AS BID_CODE,
n.NODE_NAME AS BID_NAME,
'SPECIFIED' AS COVERAGE_MODE,
info.BID_CATEGORY,
info.BID_TYPE,
d_const.DEPT_ID AS GENERAL_CONTRACT_UNIT_ID,
info.CONSTRUCT_UNIT AS GENERAL_CONTRACT_UNIT_NAME,
d_sup.DEPT_ID AS SUPERVISE_UNIT_ID,
info.SUPERVISE_UNIT AS SUPERVISE_UNIT_NAME,
info.PLAN_START_DATE AS START_DATE,
info.PLAN_END_DATE AS END_DATE,
'CONSTRUCT' AS BIZ_STATUS,
'0' AS DEL_FLAG,
n.CREATE_BY, n.CREATE_TIME, n.UPDATE_BY, n.UPDATE_TIME, n.CREATE_DEPT
FROM BIZ_PROJECT_NODE n
LEFT JOIN BIZ_PROJECT_NODE p ON n.PARENT_ID = p.NODE_ID
LEFT JOIN TMP_LINE_MAP m ON m.OLD_NODE_ID = (CASE WHEN p.NODE_TYPE = 'PACKAGE' THEN p.PARENT_ID ELSE n.PARENT_ID END)
LEFT JOIN BIZ_PROJECT_NODE_INFO info ON n.NODE_ID = info.NODE_ID
LEFT JOIN SYS_DEPT d_const ON d_const.DEPT_NAME = info.CONSTRUCT_UNIT AND d_const.DEL_FLAG = '0'
LEFT JOIN SYS_DEPT d_sup ON d_sup.DEPT_NAME = info.SUPERVISE_UNIT AND d_sup.DEL_FLAG = '0'
WHERE n.NODE_TYPE = 'BID' AND n.DEL_FLAG = '0';存量标段管辖模式说明:存量 35 个标段一律写为 COVERAGE_MODE='SPECIFIED',即按 §7.4 推导出的实际管辖工点清单逐条落 BIZ_BID_SITE_SCOPE,不把任何存量标段自动识别为 FULL_LINE。原因是存量数据没有"全线统包"的结构化标记,只能从标段专业类型推测,属推断事实。因此:
- 存量标段(含信号、供电等实际为全线统包的标段)迁移后按"指定工点型"运行,后续新增工点不会自动级联补齐单位工程(§3.2 级联机制只对
FULL_LINE生效); - 业务需在“工程标段管理”页面把这些标段改为
FULL_LINE,改后由 §3.2 机制补齐后续新增工点的单位工程; - 是否在迁移脚本中按
BID_CATEGORY/BID_TYPE预判FULL_LINE属业务决策,本次不做,避免按推测改写标段管辖语义。
7.4 存量单位工程节点推导归入(BID-SITE 精确外键关联与单位工程落库)
sql
-- 1. 推导标段管辖工点明细表 BIZ_BID_SITE_SCOPE (427 个父级为 BID 的节点)
INSERT INTO BIZ_BID_SITE_SCOPE (ID, BID_ID, SITE_ID, DEL_FLAG, CREATE_TIME)
SELECT
n.NODE_ID AS ID,
n.PARENT_ID AS BID_ID,
n.SITE_MASTER_ID AS SITE_ID,
'0' AS DEL_FLAG,
n.CREATE_TIME
FROM BIZ_PROJECT_NODE n
WHERE n.NODE_TYPE = 'SITE'
AND n.DEL_FLAG = '0'
AND EXISTS (SELECT 1 FROM BIZ_BID_SECTION b WHERE b.BID_ID = n.PARENT_ID);
-- 2. 推导标段涵盖专业 BIZ_BID_MAJOR (使用幂等序列生成主键防溢出,废除 LATERAL 改用 CTE,支持多专业统包标段展开)
-- 【次要专业推导说明】:以下针对机电复合标段(BID_CATEGORY='JD' 且未指定细分弱电系统)默认扩展建筑装饰专业(CIV-DECO),
-- 属于存量无结构化字典关联时的数据初始化推断规则;上线后由业务方/工程部在前端“标段涵盖专业”界面进行最终核对与灵活维护调整。
BEGIN
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_BIZ_BID_MAJOR START WITH 100001 INCREMENT BY 1';
-- 起始值 100001 与平台雪花 ID 区间(约 1.76×10^18 / 2.08×10^18)相距极远,无碰撞风险;
-- 本表仅约 40 行,无需占用大整数安全区间。运行期新增由后端雪花 ID 生成。
EXCEPTION
WHEN OTHERS THEN NULL;
END;
WITH bid_majors_expanded AS (
-- (1) 单专业标段与按 BID_TYPE 精准映射的系统专业
SELECT
b.BID_ID,
CASE
WHEN b.BID_TYPE = 'GD' THEN 'POW-SUB'
WHEN b.BID_TYPE = 'XH' THEN 'SYS-SIG'
WHEN b.BID_TYPE = 'TX' THEN 'SYS-COM'
WHEN b.BID_TYPE = 'ZHJK' THEN 'SYS-ISCS'
WHEN b.BID_TYPE = 'AFC' THEN 'SYS-AFC'
WHEN b.BID_TYPE = 'ZTM' THEN 'MEP-PSD'
WHEN b.BID_TYPE = 'DFT' THEN 'MEP-ELEV'
WHEN b.BID_TYPE = 'CCGY' THEN 'MEP-DEP'
WHEN b.BID_CATEGORY = 'TJ' OR b.BID_CATEGORY LIKE '%土建%' THEN 'CIV-ARCH'
WHEN b.BID_CATEGORY = 'JD' OR b.BID_CATEGORY LIKE '%机电%' THEN 'MEP-INTE'
ELSE 'CIV-ARCH'
END AS MAJOR_CODE,
'1' AS IS_PRIMARY
FROM BIZ_BID_SECTION b
UNION ALL
-- (2) 多专业统包复合标段 (如机电-01标~05标) 扩展建筑装饰专业
SELECT
b.BID_ID,
'CIV-DECO' AS MAJOR_CODE,
'0' AS IS_PRIMARY
FROM BIZ_BID_SECTION b
WHERE b.BID_CATEGORY = 'JD' AND (b.BID_TYPE IS NULL OR b.BID_TYPE = '')
)
INSERT INTO BIZ_BID_MAJOR (ID, BID_ID, MAJOR_CODE, MAJOR_NAME, IS_PRIMARY, DEL_FLAG, CREATE_TIME)
SELECT
SEQ_BIZ_BID_MAJOR.NEXTVAL AS ID,
e.BID_ID,
e.MAJOR_CODE,
m.MAJOR_NAME,
e.IS_PRIMARY,
'0' AS DEL_FLAG,
SYSDATE
FROM bid_majors_expanded e
JOIN BIZ_MAJOR_DICT m ON m.MAJOR_CODE = e.MAJOR_CODE;
-- 3. 平滑落库法定单位工程 BIZ_UNIT_PROJECT (遵循国标规范命名: {线路}-{标段}-{工点}-{专业})
-- 幂等创建单位工程序列 (杜绝多专业展开时复用 n.NODE_ID 导致的主键冲突)
BEGIN
EXECUTE IMMEDIATE 'CREATE SEQUENCE SEQ_BIZ_UNIT_PROJECT START WITH 3000000000000000001 INCREMENT BY 1';
EXCEPTION
WHEN OTHERS THEN NULL;
END;
INSERT INTO BIZ_UNIT_PROJECT (
UNIT_PROJECT_ID, BID_ID, SITE_ID, LINE_ID,
UNIT_PROJECT_CODE, UNIT_PROJECT_NAME,
MAJOR_CODE, MAJOR_NAME, ACCEPT_STATUS, DEL_FLAG,
CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, CREATE_DEPT
)
SELECT
SEQ_BIZ_UNIT_PROJECT.NEXTVAL AS UNIT_PROJECT_ID,
n.PARENT_ID AS BID_ID,
s.SITE_MASTER_ID AS SITE_ID,
b.LINE_ID,
l.LINE_CODE || '-' || b.BID_CODE || '-' || s.STATION_CODE || '-' || bm.MAJOR_CODE AS UNIT_PROJECT_CODE,
s.STATION_NAME || ' ' || bm.MAJOR_NAME || '工程' AS UNIT_PROJECT_NAME,
bm.MAJOR_CODE,
bm.MAJOR_NAME,
CASE
WHEN n.BIZ_STATUS = 'PASSED' THEN 'PASSED'
WHEN n.BIZ_STATUS = 'CHECKING' THEN 'CHECKING'
ELSE 'PENDING'
END AS ACCEPT_STATUS,
'0' AS DEL_FLAG,
n.CREATE_BY, n.CREATE_TIME, n.UPDATE_BY, n.UPDATE_TIME, n.CREATE_DEPT
FROM BIZ_PROJECT_NODE n
JOIN BIZ_SITE_MASTER s ON n.SITE_MASTER_ID = s.SITE_MASTER_ID
JOIN BIZ_BID_SECTION b ON n.PARENT_ID = b.BID_ID
JOIN BIZ_LINE l ON b.LINE_ID = l.LINE_ID
JOIN BIZ_BID_MAJOR bm ON b.BID_ID = bm.BID_ID
WHERE n.NODE_TYPE = 'SITE'
AND n.DEL_FLAG = '0';
-- 4. 清理临时映射表
DROP TABLE TMP_LINE_MAP;7.4.1 迁移目标行数(用于执行后逐表校验)
| 目标表 | 预期行数 | 口径 |
|---|---|---|
BIZ_LINE | 23 | 33 个 LINE 节点按物理主线归并 |
BIZ_BID_SECTION | 35 | 有效 BID 节点 |
BIZ_BID_SITE_SCOPE | 427 | 父级为 BID 的有效 SITE 节点 |
BIZ_BID_MAJOR | 40 | 35 个标段各 1 个主专业 + 5 个机电复合标段(BID_CATEGORY='JD' 且 BID_TYPE 为空)各追加 1 个 CIV-DECO |
BIZ_UNIT_PROJECT | 484 | 逐标段 工点数 × 专业数 求和(427 个节点展开后为 484) |
BIZ_MAJOR_DICT | 29 | §6 脚本 MERGE 的专业条数 |
SYS_DEPT 新增参建单位 | 23 | §7.0 从 BIZ_PROJECT_NODE_INFO 去重提取的乙方单位 |
434 个父级为 LINE 的 SITE 节点不生成单位工程(无标段归属),其工点已由
BIZ_SITE_MASTER完整收录;待后续创建标段时正向关联。执行后按上表逐表COUNT(*)回读,任一不符即视为迁移异常。
7.4.2 单位工程编码消歧规则
UNIT_PROJECT_CODE 按 {LINE_CODE}-{BID_CODE}-{STATION_CODE}-{MAJOR_CODE} 生成。由于 §4.1 所述 STATION_CODE 在归并线路内可能重号,编码文本在同一线路内可能重复,故补充消歧规则:
- 生成编码时,若同一线路内该
STATION_CODE不唯一,则改用{LINE_CODE}-{BID_CODE}-{STATION_CODE}-{SEQ}-{MAJOR_CODE},其中SEQ为该工点在重号组内按SITE_MASTER_ID升序的两位序号(01、02…); - 单位工程的唯一性不依赖编码文本,由
UK_UNIT_PROJECT(BID_ID, SITE_ID, MAJOR_CODE)保证;UNIT_PROJECT_CODE只作展示与人工核对用; - 迁移脚本需按上述规则生成编码,确保编码文本全局不重复(可通过
COUNT(*)与COUNT(DISTINCT UNIT_PROJECT_CODE)相等校验)。
7.5 下游业务表外键改造清单(2026-10-10 按真实列名核对)
存量下游业务表全部 0 行(已逐表回读确认),因此外键改造只做结构变更、无需数据回填。下表按真实列名列出改造动作;PROJECT_NODE_ID、*_NODE_ID、UNIT_NODE_ID 一律退场,改为指向新主数据的标准外键。
7.5.1 携带旧工程树引用、必须改造的表(19 张)
实施状态(2026-10-11 已完成):19 张表的下游 ALTER(新增
BID_ID/SITE_ID/LINE_ID/UNIT_PROJECT_ID列)已全部执行并回读确认;代码已全部切换至新外键(旧树 API/Service/页面退场);PROJECT_NODE_ID/UNIT_NODE_ID/SITE_NODE_ID/LINE_NODE_ID/BID_NODE_ID共 15 个旧树列已按用户授权物理删除(*_NODE_NAME/*_NODE_PATH保留为派生快照列)。
| # | 真实表名 | 现存旧树列 | 改造动作 |
|---|---|---|---|
| 1 | BIZ_ENGINEERING_CHANGE | PROJECT_NODE_ID、NODE_RECORD_JSON、LINE_NAME | 增 BID_ID、SITE_ID、UNIT_PROJECT_ID、LINE_ID;删 PROJECT_NODE_ID;NODE_RECORD_JSON 改为标段/工点/单位工程路径快照;LINE_NAME 保留为快照 |
| 2 | BIZ_ENGINEERING_PROCEDURE_UNIT | UNIT_NODE_ID、BID_ID(已有) | 增 UNIT_PROJECT_ID、SITE_ID;删 UNIT_NODE_ID;BID_ID 语义改为 BIZ_BID_SECTION.BID_ID |
| 3 | BIZ_ENGINEERING_PROCEDURE_PROGRESS | UNIT_NODE_ID | 增 UNIT_PROJECT_ID;删 UNIT_NODE_ID |
| 4 | BIZ_ENGINEERING_PROCEDURE_RESULT | UNIT_NODE_ID | 增 UNIT_PROJECT_ID;删 UNIT_NODE_ID |
| 5 | BIZ_ENGINEERING_PROCEDURE_STAGE_UNIT | UNIT_NODE_ID | 增 UNIT_PROJECT_ID;删 UNIT_NODE_ID |
| 6 | BIZ_BIDDING_TENDER_DOCUMENT | PROJECT_NODE_ID、LINE_NAME | 增 PROJECT_ID、BID_ID;删 PROJECT_NODE_ID |
| 7 | BIZ_BIDDING_SUBORDINATE_TENDER | PROJECT_NODE_ID、LINE_NAME | 同上 |
| 8 | BIZ_BIDDING_PROJECT_APPROVAL | PROJECT_NODE_ID、LINE_NAME | 同上 |
| 9 | BIZ_BIDDING_EVALUATION | PROJECT_NODE_ID、LINE_NAME | 同上 |
| 10 | BIZ_BIDDING_FILE_REVIEW | PROJECT_NODE_ID、LINE_NAME | 同上 |
| 11 | BIZ_BIDDING_ACTIVITY_LOG | PROJECT_NODE_ID | 增 PROJECT_ID、BID_ID;删 PROJECT_NODE_ID |
| 12 | BIZ_CZW_SLAG_LEDGER | LINE_NODE_ID/_NAME/_PATH、BID_NODE_ID/_NAME/_PATH | 增 LINE_ID、BID_ID、SITE_ID;删 *_NODE_ID;*_NODE_NAME/*_NODE_PATH 保留为快照 |
| 13 | BIZ_OPERATION_DOCK_TRANSFER | LINE_ID(指向旧树)、LINE_NAME | LINE_ID 语义改为 BIZ_LINE.LINE_ID;增 SITE_ID |
| 14 | BIZ_OPERATION_DOCK_PROBLEM | LINE_ID(同上)、LINE_NAME | 同上 |
| 15 | BIM_MODEL_ASSET | SITE_NODE_ID | 增 SITE_ID;删 SITE_NODE_ID;DISCIPLINE_CODE 与 BIZ_MAJOR_DICT.MAJOR_CODE 对齐 |
| 17 | BIZ_PROJECT_ENGINEERING_SCOPE | NODE_ID | 整表退场(见 §8) |
| 18 | BIZ_USER_PROJECT_SCOPE | NODE_ID | 整表退场(见 §8) |
| 19 | BIZ_PROJECT_SCOPE_TEMPLATE_ITEM | NODE_ID | 整表退场(见 §8) |
招投标其余表(
BIZ_BIDDING_AWARD、BID_OPENING、PUBLIC_NOTICE、EVALUATION_BIDDER、CLARIFICATION_BATCH、LISTING_VERSION)实测不含PROJECT_NODE_ID,通过上级单据关联,不改造。
7.5.2 已具备标准外键、仅需语义对齐的表(5 张)
| # | 真实表名 | 现有列 | 动作 |
|---|---|---|---|
| 1 | BIZ_QUALITY_RECORD | LINE_ID、BID_ID、SITE_ID、DIVISION_ID | 三维外键已具备,ID 语义对齐新主数据;增 UNIT_PROJECT_ID 以对齐单位工程台账;DIVISION_ID(分部)语义待核对 |
| 2 | BIZ_QUALITY_CATALOG | SITE_ID | 确认指向 BIZ_SITE_MASTER;补 LINE_ID 以支持线路维度过滤 |
| 3 | BIZ_ENGINEERING_PROCEDURE | LINE_ID、BID_CATEGORY | 确认 LINE_ID 语义;BID_CATEGORY 与 BIZ_BID_SECTION.BID_CATEGORY 对齐 |
| 4 | BIZ_INVEST_PLAN_ITEM | LINE_ID、LINE_NAME、PROJECT_ID | 确认 LINE_ID 语义对齐 BIZ_LINE |
| 5 | BIZ_CZW_SLAG_LEDGER_PLAN | SITE_ID、SITE_NAME | 该 SITE_ID 指消纳场(BIZ_CZW_DISPOSAL_SITE),不是工点;不改名、不参与工点过滤 |
7.5.3 明确不改造的表
- 安质环
BIZ_SQE_*七张表(ACCIDENT、ASSESSMENT、MONTHLY_SUPERVISION、RECTIFICATION_REPLY、TARGET、TARGET_UNIT、WORK_PLAN):实测均无 line/bid/site/node 列。按业务地图 · 权限模型现行基线,安质环为“有意不过滤”,本方案不新增标段/工点过滤;如需按标段/工点隔离,属新建维度,须另行立项并同步该基线表。 - 规划管理
BIZ_PLANNING_*:CURRENT_NODE_CODE/NODE_CODE/NODE_NAME是流程节点编码,不是工程树节点,不改造。 - 工程投资
BIZ_INVEST_PLAN/BIZ_INVEST_IMPLEMENTATION/BIZ_INVEST_ISSUE*:其CURRENT_NODE_CODE/NODE_NAME同为流程节点,不改造。 - 造价单位
BIZ_COST_UNIT*、公文相关表:无工程树引用。 - 联合体资料:全局档案与成员表保留;旧项目联合体相关表保留历史,不再作为现行参建引用来源,现行引用见
BIZ_PROJECT_PARTICIPANT。
7.5.4 改造顺序
与 §7.1—§7.4 主数据迁移同批次执行,顺序为:建表与索引(§4)→ 既有表 ALTER(§5)→ 专业字典初始化(§6)→ 主数据迁移(§7.0—§7.4)→ 下游表 ALTER(本节) → 旧表退场(§8)。每张表 ALTER 后回读列结构确认;下游表均为 0 行,无需数据回填与一致性校验。
8. 真实废弃表清单与安全退场顺序(共 10 张表)
在完成上述存量数据清洗和验证后,按依赖逆序归档并废除真实存在的 10 张旧表:
执行授权提示:
DROP TABLE属共享对象的破坏性 DDL,按仓库协作规则需要用户对具体表清单明确授权后才能执行,不得由实施方自行决定。本节的清单是方案建议,实施时必须先取得授权,执行前逐表核对环境、对象与引用情况,执行后回读确认;建议先RENAME归档(如_BAK_20261010后缀)并观察一个验证周期后再物理删除。
| 序号 | 废除表名 | 真实存在性 | 原用途 | 废除原因与承接关系 | 实施状态 (2026-10-10) |
|---|---|---|---|---|---|
| 1 | BIZ_PROJECT_NODE_INFO | 曾存在 | 旧工程节点扩展信息表 | 45项属性全量下沉至 BIZ_LINE 与 BIZ_BID_SECTION | 已物理删除 (DROP CASCADE) |
| 2 | BIZ_PROJECT_NODE | 曾存在 | 旧工程树主表(968行) | 主数据解耦为 BIZ_LINE、BIZ_BID_SECTION、BIZ_UNIT_PROJECT | 已物理删除 (DROP CASCADE) |
| 3 | BIZ_BID_COVERAGE_EXCLUSION | 曾存在 | 标段排除工点例外表 | 新架构由笛卡尔积自然控制,无需排除补丁 | 已物理删除 (DROP CASCADE) |
| 4 | BIZ_BID_COVERAGE_RULE | 曾存在 | 标段覆盖规则表 | 由 BIZ_BID_SECTION.COVERAGE_MODE 和 BIZ_BID_MAJOR 替代 | 已物理删除 (DROP CASCADE) |
| 5 | BIZ_USER_PROJECT_SCOPE | 曾存在 | 旧用户工程范围表 | 由极简 BIZ_USER_DATA_SCOPE 全面替代 | 已物理删除 (DROP CASCADE) |
| 6 | BIZ_PROJECT_ENGINEERING_SCOPE | 曾存在 | 旧工程范围关联表 | 废弃旧工程树体系 | 已物理删除 (DROP CASCADE) |
| 7 | BIZ_PROJECT_USER_SCOPE | 曾存在 | 旧用户项目关联表 | 废弃旧树体系 | 已物理删除 (DROP CASCADE) |
| 8 | BIZ_PROJECT_SCOPE_TEMPLATE | 曾存在 | 旧范围模板表 | 废弃繁复的模板授权机制 | 已物理删除 (DROP CASCADE) |
| 9 | BIZ_PROJECT_SCOPE_TEMPLATE_ITEM | 曾存在 | 旧范围模板明细表 | 废弃旧模板体系 | 已物理删除 (DROP CASCADE) |
| 10 | BIZ_PROJECT_SCOPE_TEMPLATE_USER | 曾存在 | 旧范围模板用户表 | 废弃旧模板体系 | 已物理删除 (DROP CASCADE) |
退场执行证据:2026-10-10 获得用户明确授权(方案 B)后,通过 DM8 驱动按依赖逆序逐表执行
DROP TABLE CASCADE并COMMIT。执行后回读ALL_TABLES WHERE OWNER='DIGITAL_CONSTRUCTION'确认以上 10 张旧表已 100% 物理清除。
9. 技术债与命名约定(随本方案一并收口)
本方案是工程基础与工程数据权限的一次结构重构,下列平台级遗留随本次实施一并处理或明确定性。状态为 2026-10-10 代码核对结果,未核对项已注明。
9.1 超管双 ID 硬编码收敛
- 现状:
SystemConstants.java:63-91定义SUPER_ADMIN_USER_ID=1761100000000000001、LEGACY_SUPER_ADMIN_USER_ID=1、SUPER_ADMIN_ROLE_ID、LEGACY_SUPER_ADMIN_ROLE_ID并提供超管判定入口;ProjectScopeServiceImpl.java:366-367仍直接引用两个用户 ID 常量拼装候选集。 - 处理:本方案退场
ProjectScopeServiceImpl的工程树授权逻辑后,删除该处直接引用;超管判定统一走SystemConstants的单一入口,业务代码不直接引用 ID 常量。本方案新增的数据权限切面同样只调用该入口。
9.2 权限刷新异常处理
SaPermissionImpl.refreshLoginUserPermission已于 2026-09-30 补log.warn,并保留“刷新失败保留失效标记、下次请求按最新数据重试”的降级语义(已实施)。- 同文件
isPermissionStale(:113-115)与getPermissionService(:126-128)仍为静默降级(分别返回false/null),属有意容错;建议至少补 debug 级日志,便于排查 Redis 不可用与容器启动期问题。
9.3 首页接口权限定性
HomepageController的/business/homepage/todo-summary(HomepageController.java:42)仅要求登录态,无@SaCheckPermission。- 定性为设计如此:聚合数据已按当前登录人裁剪,接口不返回他人数据,不新增权限码。结论记录于本模块文档;后续若新增跨人聚合字段须重新评估授权。
9.4 字典 biz_node_type 残留值
- 开发库
SYS_DICT_DATA中biz_node_type现存LINE/PACKAGE/BID/SITE/PROJECT五个值。本方案退场折叠工程树后,PACKAGE、PROJECT不再有对应节点类型;LINE/BID/SITE也不再作为节点类型使用(线路、标段、工点各自成为独立主数据表)。 - 处理:实施完成后确认无引用即停用该字典或整组下线,列入数据清理批次;停用属数据操作,按项目 MCP 执行并回读。
9.5 Scope 一族命名约定
本方案落地后,范围与权限相关的载体收敛如下:
| 概念 | 载体 | 状态 |
|---|---|---|
| 用户数据范围授权 | BIZ_USER_DATA_SCOPE | 本方案新建,唯一的数据权限载体 |
| 标段 / 工点 / 线路授权 | BIZ_USER_DATA_SCOPE.SCOPE_TYPE 的 BID/SITE/LINE | 本方案新建 |
| 标段管辖工点范围 | BIZ_BID_SITE_SCOPE | 本方案新建(业务范围,非权限) |
| 用户工程范围(旧) | BIZ_USER_PROJECT_SCOPE | 本方案退场 |
| 项目用户关联(旧) | BIZ_PROJECT_USER_SCOPE | 本方案退场 |
| 项目工程范围(旧) | BIZ_PROJECT_ENGINEERING_SCOPE | 本方案退场 |
| 工程范围模板(旧) | BIZ_PROJECT_SCOPE_TEMPLATE 三表 | 本方案退场 |
约定:
- 上述旧四张表退场后,权限侧只保留
BIZ_USER_DATA_SCOPE,不再新增以Scope结尾的近义表名; - 数据权限切面的注解不沿用
@DataScope命名——该名称与 2026-09-29 已整体移除的@DataPermission/DataScopeType机制近似,易被误读为旧机制回归。详细设计 §4.2 的注解名按@EngDataScope(工程数据范围)执行,切面类ProjectBidSiteScopeAspect名称保留; - 同一业务含义只允许一个名称;禁止再出现“用户工程范围 / 项目用户范围 / 项目工程范围 / 范围模板”这类互相近似的并列命名。
10. 变更记录
| 版本 | 日期 | 变更内容 | 变更原因 | 确认人 |
|---|---|---|---|---|
| v1.0 | 2026-10-10 | 完成全新双核四维解耦架构数据库设计初稿 | 彻底替代旧折叠工程树结构 | AI Pair Designer |
| v1.1 | 2026-10-10 | 规范统一权限码为 business:<资源>:<动作>;增加 CASE WHEN DEL_FLAG='0' THEN ... 函数条件唯一索引方案 | 解决 DM8 不支持标准 WHERE 条件唯一索引问题 | AI Pair Designer / 用户审核中 |
| v1.2 | 2026-10-10 | 增加参建单位与业主单位外键强关联 (SYS_DEPT.DEPT_ID) 与缺少自动建档机制;补充 32 家待清洗企业台账 | 解决企业仅存文本无关联问题 | AI Pair Designer / 用户审核中 |
| v1.3 | 2026-10-10 | 解决线路分期归并(收敛至23条主线);废除 LATERAL 改用 CTE;序列防溢出 | 根除 LINE_CODE 冲突与 DM8 语法不兼容 | AI Pair Designer / 用户审核中 |
| v1.4 | 2026-10-10 | 多专业标段在工点下全量展开生成单位工程;主键采用独立序列 SEQ_BIZ_UNIT_PROJECT | 满足多专业统包标段法定验收实体展开需求 | AI Pair Designer / 用户审核中 |
| v1.5 | 2026-10-10 | 规范 6.0 自动建档挂接至集团(100)与参建单位(2199000000000100013)根节点;补齐 ANCESTORS 与 ORG_TYPE | 对齐既有组织架构树规范 | AI Pair Designer / 用户审核中 |
| v1.6 | 2026-10-10 | ① 增加执行顺序总览,将专业字典初始化前置为第 6 节(存量迁移前置依赖,根除 0 行缺陷);② 删除第 5 节 SITUATION 反向收窄操作,保留实际 TEXT 物理列;③ 按实际物理列更新 3.2 字段矩阵,并补齐设计 vs 实际差异对照表;④ 将轨道交通/铁路集团 3 家企业校准为业主分类(挂接100);⑤ 补充多专业次要专业推导业务确认说明;⑥ 同步单位工程主键序列与雪花 ID 体系设计说明 | 响应实施前最后把关审核意见,确保脚本执行顺序与数据物理完整性 100% 具备可执行性 | AI Pair Designer / 用户审核中 |
| v1.7 | 2026-10-10 | 补充核心业主与运营单位改制重组映射台账:明确重庆市铁路(集团)对应已建的重庆交通建设管理有限公司(DEPT_ID=101)、重庆市轨道交通(集团)对应已建的重庆轨道交通运营有限公司(DEPT_ID=2083453529837531162),未建档特殊运营公司保留文本、ID 置空;7.0 节改为按业主/运营/参建三类分别给出处理策略 | 响应业务方关于改制更名与已建单位直接复用的指示 | AI Pair Designer / 用户审核中 |
| v1.8 | 2026-10-10 | 新增第 9 节“技术债与命名约定”:超管双 ID 收敛、权限刷新异常处理现状、首页接口权限定性、字典 biz_node_type 残留值清理、Scope 一族命名对照与命名规则(切面注解改 @EngDataScope,不沿用已移除机制的 @DataScope);原第 9 节变更记录顺延为第 10 节 | 承接 2026-09-30 权限治理方案稿中仍然有效的平台级遗留项,避免其随方案稿删除而失档 | 待用户确认 |
| v1.9 | 2026-10-10 | 按开发库实测与真实列名复核修正:① §4 工点唯一键由 (LINE_ID, STATION_CODE) 改为 (LINE_ID, STATION_NAME) 并新增 §4.1 说明 96 组归并重号的成因与处置,使 §7.2 重定向不再撞唯一索引;② 新增 §7.4.1 迁移目标行数(线路 23/标段 35/管辖工点 427/标段专业 40/单位工程 484/字典 25)与 §7.4.2 单位工程编码消歧规则;③ 新增 §7.5 下游业务表外键改造清单(19 张需改造 + 5 张语义对齐 + 不改造范围),替换原错列的模块级清单;④ 删除 §5 对 BIZ_PROJECT 的三处反向收窄(INTRO 实际为 TEXT 却被改 VARCHAR(4000) 等),并按实际列修正 §3.3 字段类型;⑤ §3.2/§3.2.1 修正 IS_HUB/LNG/LAT 等实际类型与“22 项字段”口径;⑥ §7.0/§7.2 澄清参建单位根节点与子单位属性区别、补重定向覆盖度说明;⑦ §7.3 补存量标段 COVERAGE_MODE 说明;⑧ §8 补 DROP 需明确授权的执行提示;⑨ 专业字典口径统一为 25 项 | 承接 2026-10-10 开发库回读结论,消除方案与真实结构、真实数据的不一致,使脚本与清单可直接执行 | 待用户确认 |
| v2.1 | 2026-10-11 | 扩充 §6 行业标准专业字典 BIZ_MAJOR_DICT 初始化脚本至 29 项(大类 5 个:CIV 7 项、MEP 10 项、SYS 8 项、POW 3 项、INT 1 项),新增 4 项综合性专业类别:CIV-INTE(土建综合)、MEP-TOTAL(大机电系统综合,含机电+弱电+供电)、SYS-INTE(弱电系统集成综合)、POW-INTE(供电系统综合);同步更新 §2 表目录、§3.11 阶段路线图与 §7.4.1 迁移目标行数校验指标(字典行数由 25 改为 29) | 响应用户业务指示,支撑土建总包、站后大机电系统总包等统包标段模式,从源头避免笛卡尔积展开导致的单位工程膨胀 | 已确认 |
项目参建主体引用增量表 BIZ_PROJECT_PARTICIPANT
| 物理列 | 类型 | 可空 | 约束与含义 |
|---|---|---|---|
| PROJECT_ID | BIGINT | 否 | 项目 ID;复合主键第 1 列 |
| PARTICIPANT_ROLE | VARCHAR(20) | 否 | DESIGN/SUPERVISE/CONSTRUCT;复合主键第 2 列 |
| SUBJECT_TYPE | VARCHAR(20) | 否 | UNIT/CONSORTIUM;复合主键第 3 列 |
| SUBJECT_ID | BIGINT | 否 | 企业 SYS_DEPT.DEPT_ID 或联合体 BIZ_CONSORTIUM.ID;复合主键第 4 列 |
| ORDER_NUM | INT | 否 | 同角色选择顺序 |
复合主键为四个身份列,服务端事务校验跨表引用。旧三类参建 CSV 仅为独立 UNIT 项的兼容投影,不展开联合体成员。旧项目联合体表保留历史,不执行 DROP/TRUNCATE,不再写入现行关联。用户提供的两分页 126 条资料作为本轮分组复核来源;上一轮摊平数量不能证明联合体分组正确,实际执行与回读见本轮测试报告。
项目候选权限与存量分组计划补充
项目角色只凭项目 query/add/edit 任一权限读取项目专用企业/联合体候选,不要求单位或联合体管理菜单权限;项目查询直接返回联合体牵头/成员名称的只读投影,详情不另外请求联合体档案。此投影仅服务项目选择和详情,不能借项目权限修改联合体档案。
2026-10-14 开发库已按源数据分组完成迁移:126 个项目 × 3 角色 = 378 个角色范围,其中 111 个非空角色字段,实际保存 175 项混合主体(127 UNIT + 48 CONSORTIUM),新增 22 个联合体及 70 条成员关系;回读共 49 个有效联合体、145 条成员关系。用户已确认其中 19 种原资料未明确牵头的组合暂按原首成员登记,备注保留牵头待核对,不解释为已确认实际牵头。实际写入、页面回归与组织身份纠正见最新测试报告。
2026-10-14 企业身份与组织归属精确治理
| 对象 | 实际变更字段 | 结果与边界 |
|---|---|---|
原枢纽档案 2199000000000600036 | SYS_DEPT.DEL_FLAG、UPDATE_TIME | 与资源公司 2083453529837531163 同一主体;引用迁移后逻辑删除重复档案,不物理删除历史记录 |
| 13 个项目建设引用 | BIZ_PROJECT.BUILD_UNIT_IDS、BUILD_UNIT_ID、BUILD_UNIT、UPDATE_TIME | 12 项单企业引用及 1 项学院+枢纽多选只替换枢纽身份与现名;原集合顺序、其他企业和所属公司不改 |
通远 2199000000000600051 | SYS_DEPT.PARENT_ID、ANCESTORS、UPDATE_TIME | 父级资源公司,祖级 0,100,2083453529837531163;保留 dept_type=1/org_type=company。依据历史体系归属,当前股权及存续沿革待核对 |
渝西 2199000000000600042 | SYS_DEPT.PARENT_ID、ANCESTORS、ORG_TYPE、UPDATE_TIME | 父级交通建设 101,祖级 0,100,101,分类 joint_venture;项目建设角色和企业 ID 保留 |
本任务临时项目 2110047346210955264 | BIZ_PROJECT.DEL_FLAG、UPDATE_TIME;精确关系清理 | 页面清空保存及数据库回读后软删;参建关系已为 0,未删除其他项目或共享档案 |
执行前扫描开发库 450 个 ID/集合字段及组织子节点。枢纽旧 ID 仅在上述 13 个项目建设字段引用,无其他模块引用;资源公司的 2 个既有已删岗位不迁移。三个待调整组织均无子节点。通过项目 MCP 的一个带旧值校验与行锁的匿名事务块执行,不新增业务 SQL 文件,不修改受保护配置。回读旧枢纽项目/参建关系/联合体成员/牵头引用均为 0,有效项目恢复 126、有建设单位项目 111,混合主体仍为 175。SYS_DEPT 无 REMARK 列,待核对沿革只记录业务文档,不臆造字段。
江跳线运营公司分类精确纠正(2026-10-14)
SYS_DEPT.DEPT_ID=2109011604266926081(重庆江跳线轨道交通运营管理有限公司)仅将 ORG_TYPE 从 company 改为 joint_venture,同时维护 UPDATE_TIME,精确影响 1 行。保留 DEPT_TYPE=1、PARENT_ID=100、ANCESTORS=0,100、启用状态和稳定 ID;集团下节点在此表示参股企业,不能解释为一级直属全资公司。当前改组后直接归属待核对,不猜测挂交通建设或轨道运营;不与江跳二期及重庆轨道江跳建设运营等不同主体合并。执行前全库 450 个 ID/集合字段与子节点扫描仅命中该企业自身,无业务、岗位、用户绑定或子节点,无项目引用需要迁移。带企业名、旧类型、父级及状态条件更新后回读一致。
标段—建设项目多对多关系增量(2026-10-14)
| 物理列 | 类型 | 可空 | 约束与含义 |
|---|---|---|---|
| BIZ_BID_PROJECT_REL.BID_ID | BIGINT | 否 | 标段身份;复合主键第1列 |
| BIZ_BID_PROJECT_REL.PROJECT_ID | BIGINT | 否 | 建设项目身份;复合主键第2列 |
复合主键 (BID_ID, PROJECT_ID),不添加主项目、状态或审计继承字段。旧 BIZ_BID_SECTION.PROJECT_ID 为单关联兼容投影:恰好一个关系时保留,零/多关系置 NULL。共同项目内编码唯一由关系范围和项目锁下后端校验实现;不能继续用旧 PROJECT_ID 单列唯一规则限制多项目合同。BIZ_UNIT_PROJECT.BID_ID 不改变,不增加项目字段,不复制429单位工程。
迁移范围:全库既有有效旧单项目关联回填关系;15号线31标段的原PROJECT_ID全部悬空,本任务按原description明确证据及用户确认范围计划处理为13项单期、8项系统标双期、10项未知清悬空留空待核。原graph一期土建11标在当前标段中缺失,不擅自建标段;其余无关悬空关系不扩展治理。实际DDL、影响行数、关系数量及回读以本轮测试证据为准,本节不预判执行通过。
多项目关系实际建表与15号线迁移(2026-10-14)
通过项目 MCP 在开发库建立 BIZ_BID_PROJECT_REL,两列均为 BIGINT NOT NULL,复合主键 (BID_ID, PROJECT_ID);BID_ID 外键指向 BIZ_BID_SECTION.BID_ID,PROJECT_ID 外键指向 BIZ_PROJECT.PROJECT_ID;新增项目索引 IDX_BID_PROJECT_REL_PROJECT(PROJECT_ID)。表无金额副本、无主项目字段、不复用单列 BaseMapper 按 ID 操作。关系由标段保存事务按集合替换,删除标段时同步清理。
建表后仅回填有效标段的有效旧项目关联,实际0条(当前31标段均指向不存在的历史项目)。随后按锁定项目及标段、旧值精确匹配的一个原子事务调整15号线31个标段,新增39条关系,并更新兼容 BIZ_BID_SECTION.PROJECT_ID:单项目23行存唯一项目ID,跨期8行置NULL;其余商务字段、工点、单位工程和授权均不改。匿名块只返回末条语句影响数1,总影响31标段/39关系通过前后逐对象回读确认。
| 关联集合 | 标段编码(前缀均为CQ15) | 数量 | 依据 |
|---|---|---|---|
| 一期 PJ0641(2110000000000000025) | TJ01、TJ02、TJ03、TJ04、TJ05、TJ06、TJ07、TJ08、TJ09、JD01、JD02、JD03 | 12 | 老源土建描述;住建及承建方公开土建5/9标;机电1/2标所辖车站区间均在一期,机电3标仅九曲河主所且环评明示一期 |
| 二期 PJ0642(2110000000000000017) | TJ12、TJ13、TJ14、TJ15、TJ16、TJ17、TJ18、TJ19、TJ-CLJD、JD04、JD05 | 11 | 老源土建描述;政府明示土建16/19;车辆基地为张家湾,公开招标明示二期;机电4/5标管辖范围位于二期(欢乐谷至九曲河东边界区间属于二期,不把边界终点误当一期合同) |
| 一期及二期 | AFC01、DFT01、GD01、GY01、JK01、TX01、XH01、ZTM01 | 8 | 当前合同范围含两期车站、区间或两期场段;机电总包公告明确覆盖一期与二期,不能按“全线”二字或一个工点推断所有合同都跨期 |
来源:老平台两页126条中的一期/二期项目UUID及图节点 description;官方土建05施工信息、承建方一期土建5/9标说明、政府二期土建16标及范围、政府二期土建19铺轨范围、一期环评主所与停车场、两期站点及场段的业主资料、张家湾车辆段二期招标、两期机电总包招标范围。机电子标合同期别根据已维护管辖范围与官方分期交叉确认,是本轮证据推导,不把总包公告当作逐个JD编号的明示。
回读:一期筛选20个唯一标段,二期筛选19个唯一标段,两者交集为8个同ID标段;合并去重仍为31,不是39个合同。旧悬空项目ID引用0。429个单位工程、431条标段工点关系及1条BID授权的逐行完整快照在迁移前后完全一致。两列关系不会扩大BID授权,也不把跨期合同总金额分别复制到项目金额账。
参建单位与联合体历史对象
2026-10-12 的开发库结构清理记录显示,早期项目内联合体维护使用的 BIZ_PROJECT_CONSORTIUM 与 BIZ_PROJECT_CONSORTIUM_MEMBER 在删除前均为空,执行后回读不存在。当前联合体档案和成员分别由 BIZ_CONSORTIUM、BIZ_CONSORTIUM_MEMBER 维护,项目当前参建主体关系使用 BIZ_PROJECT_PARTICIPANT;历史 BIZ_PROJECT_CONSORTIUM_REL 不作为当前项目参建主体来源。上述为当时结构记录,当前实际库以纳管入口回读为准。