主题
勘察管理 · 数据库设计
文档版本:1.10 | 最近核对日期:2026-11-03
| 项目 | 内容 |
|---|---|
| 结构核验 | 2026-11-03 已通过项目纳管入口在开发库创建六表及索引并回读;生产未访问 |
需求见需求分析,读写契约见详细设计。当前 DM8 只是运行环境,以下物理类型为建议映射,不是已存在表结构,也不是可直接执行的建表脚本。
1. 对象、关系与取舍
设计六张业务表,不创建审批历史副本、不存文件二进制、不创建通用动态表单表。计划调整与生效使用计划扩展表自关联表达,不新增通用版本表。本次数量从选孔明细派生,累计在查询时求和,不存可反复累加的累计计数器。
主数据逻辑关系:task.project_id → BIZ_PROJECT.PROJECT_ID;line_id → BIZ_LINE.LINE_ID;bid_id → BIZ_BID_SECTION.BID_ID;site_id → BIZ_SITE_MASTER.SITE_MASTER_ID;oss_id → SYS_OSS.OSS_ID;发起单位/人员 → SYS_DEPT/SYS_USER;instance_id 为 Warm-Flow 实例关联。不为文件、工程、用户主数据复制维护表,不把旧工程树节点 ID 写入新主数据列。
关系默认采用项目现有的逻辑关联与 Service 校验;是否增加物理 FK 在开发库结构核对时沿用同模块约定,禁止假称当前已建立 FK。主键为项目雪花 Long;前端大整数保持原值。所有表的审计列明示在下方每张完整矩阵中。
公共矩阵约定
每行同时列出逻辑类型、建议 DM8 物理类型及长度/精度、空值、默认、键/索引、来源与核验状态。无表示无数据库默认值,不能自动推断空串或 0;矩阵核验状态已按 2026-11-03 开发库回读填写;生产结构仍待发布前核对。时间采用 TIMESTAMP,日期 DATE,文案 VARCHAR 长度需按数据库字符语义核对。表不含 tenant_id、version 等无需求字段;逻辑删除显式声明,不假设 BaseEntity 提供。
2. biz_survey_task:共同任务头
此表完整列为本矩阵全部行,包含 BaseEntity 审计列和显式逻辑删除列。
| 字段 | 业务含义 | 逻辑类型 | 物理类型及长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验状态 |
|---|---|---|---|---|---|---|---|---|
| task_id | 任务主键 | Long | BIGINT | 否 | 无 | PK | 服务端雪花ID | 已建(开发库) |
| task_type | 五类业务类型 | String | VARCHAR(20) | 否 | 无 | 索引I_TASK_LIST | outline/fieldPlan/progress/special/result;由Controller确定 | 已建(开发库) |
| project_id | 关联项目 | Long | BIGINT | 是 | 无 | 逻辑关联BIZ_PROJECT | 项目选择;与线路不同 | 已建(开发库) |
| project_name | 项目名称快照 | String | VARCHAR(500) | 是 | 无 | — | 服务端取主数据 | 已建(开发库) |
| line_id | 线路归属 | Long | BIGINT | 否 | 无 | I_TASK_LIST | 工程选择及后端归属校验 | 已建(开发库) |
| line_name | 线路名称快照 | String | VARCHAR(200) | 否 | 无 | — | 服务端取主数据 | 已建(开发库) |
| bid_id | 勘察标段归属 | Long | BIGINT | 是 | 无 | I_TASK_SCOPE | 标段暂未建立时允许为空;有值必须属于当前线路 | 已建(开发库);2026-11-03 改为可空 |
| bid_name | 标段名称快照 | String | VARCHAR(200) | 是 | 无 | — | 服务端取主数据;标段为空时为空 | 已建(开发库);2026-11-03 改为可空 |
| site_id | 工点归属 | Long | BIGINT | 是 | 无 | I_TASK_SCOPE | 工点可空;有标段时必须在标段管辖范围内,无标段时按工点共享范围 | 已建(开发库) |
| site_name | 工点名称快照 | String | VARCHAR(200) | 是 | 无 | — | 服务端取主数据 | 已建(开发库) |
| contract_no | 合同编号快照 | String | VARCHAR(100) | 是 | 无 | — | 适用合同核对;不从项目名截取 | 已建(开发库) |
| survey_stage | 勘察阶段编码 | String | VARCHAR(32) | 是 | 无 | — | 草稿可空;提交时核对字典 | 已建(开发库) |
| task_name | 任务名称 | String | VARCHAR(300) | 是 | 无 | — | 草稿可未完成;提交必备 | 已建(开发库) |
| content | 报审内容说明 | String | CLOB | 是 | 无 | — | 大纲/专项/成果说明;服务端设合理输入长度 | 已建(开发库) |
| status | 业务状态 | String | VARCHAR(20) | 否 | 'draft' | I_TASK_LIST | BusinessStatusEnum稳定编码;引擎驱动 | 已建(开发库) |
| instance_id | 流程实例关联 | Long | BIGINT | 是 | 无 | 普通索引I_TASK_INSTANCE | 提交后回写 | 已建(开发库) |
| initiator_dept_id | 发起单位 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_DEPT | 发起时服务端解析单位,不能直接用任意部门冒充单位 | 已建(开发库) |
| initiator_dept_name | 发起单位快照 | String | VARCHAR(200) | 是 | 无 | — | 发起时主数据快照 | 已建(开发库) |
| initiator_id | 发起人 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_USER | 首次提交当前登录人 | 已建(开发库) |
| initiator_name | 发起人快照 | String | VARCHAR(100) | 是 | 无 | — | 首次提交用户名快照 | 已建(开发库) |
| submit_time | 首次发起时间 | LocalDateTime | TIMESTAMP | 是 | 无 | — | 首次提交;退回重提不改写首报时间 | 已建(开发库) |
| create_dept | 创建部门 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_DEPT | BaseEntity插入填充 | 已建(开发库) |
| create_by | 创建者 | Long | BIGINT | 否 | 无 | 逻辑关联SYS_USER | BaseEntity插入填充 | 已建(开发库) |
| create_time | 创建时间 | LocalDateTime | TIMESTAMP | 否 | 无 | — | BaseEntity插入填充 | 已建(开发库) |
| update_by | 更新者 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_USER | BaseEntity更新填充 | 已建(开发库) |
| update_time | 更新时间 | LocalDateTime | TIMESTAMP | 是 | 无 | — | BaseEntity更新填充 | 已建(开发库) |
| del_flag | 逻辑删除 | String | CHAR(1) | 否 | '0' | 逻辑删除有效值0/删除值1 | 实体@TableLogic显式配置;同平台逻辑删除契约 | 已建(开发库) |
2.1 标段可选变更(2026-11-03)
用户确认开发库暂未建立勘察标段主数据,标段先不作为必选。通过项目纳管入口在开发库执行并回读:
| 对象 | 变更 | 回读结果 |
|---|---|---|
BIZ_SURVEY_TASK.BID_ID | BIGINT NULL | NULLABLE='Y' |
BIZ_SURVEY_TASK.BID_NAME | VARCHAR(200) NULL | NULLABLE='Y' |
现有 20 行测试数据未修改;生产未访问。标段为空时,任务按线路+工点或线路级范围判定授权;后续建立勘察标段后,新记录必须校验标段属于线路、工点在标段管辖范围内、项目属于标段关联项目。
3. biz_survey_plan:外业计划扩展
此表完整列为本矩阵全部行,包含 BaseEntity 审计列和显式逻辑删除列。
| 字段 | 业务含义 | 逻辑类型 | 物理类型及长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验状态 |
|---|---|---|---|---|---|---|---|---|
| task_id | 计划任务ID | Long | BIGINT | 否 | 无 | PK;逻辑FK task.task_id | 必须是fieldPlan任务 | 已建(开发库) |
| root_plan_task_id | 同一业务计划的根任务ID | Long | BIGINT | 否 | 无 | I_PLAN_ROOT;逻辑FK plan.task_id | 初始版为自身task_id;调整版复制根ID | 已建(开发库) |
| revision_no | 调整记录序号 | Integer | INTEGER | 否 | 0 | U_PLAN_REV(root_plan_task_id,revision_no) | 初始0;服务端取同根含软删除行的最大序号+1,创建调整时分配,编辑/重提不变 | 已建(开发库) |
| previous_plan_task_id | 调整来源有效版本 | Long | BIGINT | 是 | 无 | 逻辑FK plan.task_id | 初始版为空;调整创建时取当前有效版本 | 已建(开发库) |
| effective_plan_task_id | 当前生效版本指针 | Long | BIGINT | 是 | 无 | 逻辑FK plan.task_id | 仅根记录维护;初次通过指自身,调整最终通过后切换 | 已建(开发库) |
| effective_time | 本版本实际生效时间 | LocalDateTime | TIMESTAMP | 是 | 无 | — | 最终通过并生效时写入一次;用于历史与调整计数 | 已建(开发库) |
| plan_start_date | 计划开始 | LocalDate | DATE | 是 | 无 | — | 录入;提交完整性校验 | 已建(开发库) |
| plan_end_date | 计划完成 | LocalDate | DATE | 是 | 无 | — | 录入;不得早于开始 | 已建(开发库) |
| urgency | 紧急程度编码 | String | VARCHAR(32) | 是 | 无 | — | 平台字典待核定值集 | 已建(开发库) |
| machine_count | 计划钻机台数 | Integer | INTEGER | 是 | 无 | — | 录入非负整数 | 已建(开发库) |
| description | 计划说明 | String | CLOB | 是 | 无 | — | 录入 | 已建(开发库) |
| create_dept | 创建部门 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_DEPT | BaseEntity插入填充 | 已建(开发库) |
| create_by | 创建者 | Long | BIGINT | 否 | 无 | 逻辑关联SYS_USER | BaseEntity插入填充 | 已建(开发库) |
| create_time | 创建时间 | LocalDateTime | TIMESTAMP | 否 | 无 | — | BaseEntity插入填充 | 已建(开发库) |
| update_by | 更新者 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_USER | BaseEntity更新填充 | 已建(开发库) |
| update_time | 更新时间 | LocalDateTime | TIMESTAMP | 是 | 无 | — | BaseEntity更新填充 | 已建(开发库) |
| del_flag | 逻辑删除 | String | CHAR(1) | 否 | '0' | 逻辑删除有效值0/删除值1 | 实体@TableLogic显式配置;同平台逻辑删除契约 | 已建(开发库) |
4. biz_survey_borehole:计划钻孔明细
此表完整列为本矩阵全部行,包含 BaseEntity 审计列和显式逻辑删除列。
| 字段 | 业务含义 | 逻辑类型 | 物理类型及长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验状态 |
|---|---|---|---|---|---|---|---|---|
| borehole_id | 钻孔记录主键 | Long | BIGINT | 否 | 无 | PK | 服务端雪花ID;进度引用后保持身份稳定 | 已建(开发库) |
| plan_task_id | 所属计划任务 | Long | BIGINT | 否 | 无 | I_HOLE_PLAN;逻辑FK plan.task_id | 父级服务端校验 | 已建(开发库) |
| source_borehole_id | 调整前钻孔版本行ID | Long | BIGINT | 是 | 无 | 逻辑FK borehole.borehole_id | 复制来源孔时由后端赋值;新孔为空;仅可指向previous_plan_task_id所属孔,用于前后比对 | 已建(开发库) |
| hole_code | 地探孔编号 | String | VARCHAR(100) | 否 | 无 | 有效行内同计划唯一U_HOLE_CODE | 录入或导入;去首尾空白,不擅自改大小写 | 已建(开发库) |
| design_x | 设计坐标X,m | BigDecimal | DECIMAL(18,4) | 是 | 无 | — | 录入/导入;精度为设计建议,禁止套原型坐标系 | 已建(开发库) |
| design_y | 设计坐标Y,m | BigDecimal | DECIMAL(18,4) | 是 | 无 | — | 同上;坐标系未给不做GIS定位 | 已建(开发库) |
| expected_depth | 预计孔深,m | BigDecimal | DECIMAL(10,3) | 是 | 无 | — | 已填非负;超精度报错,不静默截断 | 已建(开发库) |
| order_num | 行序 | Integer | INTEGER | 否 | 0 | I_HOLE_PLAN | 保存时按页面顺序生成 | 已建(开发库) |
| create_dept | 创建部门 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_DEPT | BaseEntity插入填充 | 已建(开发库) |
| create_by | 创建者 | Long | BIGINT | 否 | 无 | 逻辑关联SYS_USER | BaseEntity插入填充 | 已建(开发库) |
| create_time | 创建时间 | LocalDateTime | TIMESTAMP | 否 | 无 | — | BaseEntity插入填充 | 已建(开发库) |
| update_by | 更新者 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_USER | BaseEntity更新填充 | 已建(开发库) |
| update_time | 更新时间 | LocalDateTime | TIMESTAMP | 是 | 无 | — | BaseEntity更新填充 | 已建(开发库) |
| del_flag | 逻辑删除 | String | CHAR(1) | 否 | '0' | 逻辑删除有效值0/删除值1 | 实体@TableLogic显式配置;同平台逻辑删除契约 | 已建(开发库) |
5. biz_survey_progress:进度上报扩展
此表完整列为本矩阵全部行,包含 BaseEntity 审计列和显式逻辑删除列。
| 字段 | 业务含义 | 逻辑类型 | 物理类型及长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验状态 |
|---|---|---|---|---|---|---|---|---|
| task_id | 进度任务ID | Long | BIGINT | 否 | 无 | PK;逻辑FK task.task_id | 必须是progress任务 | 已建(开发库) |
| plan_task_id | 关联计划版本任务 | Long | BIGINT | 否 | 无 | I_PROGRESS_PLAN;逻辑FK plan.task_id | 创建时引用当前有效已通过版本;已保存进度不静默改绑 | 已建(开发库) |
| root_plan_task_id | 业务计划根ID | Long | BIGINT | 否 | 无 | I_PROGRESS_ROOT;逻辑FK plan.task_id | 后端从计划版本读取,跨调整归组累计 | 已建(开发库) |
| plan_start_date | 计划开始快照 | LocalDate | DATE | 是 | 无 | — | 选计划时服务端读取并保存 | 已建(开发库) | | plan_end_date | 计划完成快照 | LocalDate | DATE | 是 | 无 | — | 同上 | 已建(开发库) | | actual_start_date | 实际开始时间 | LocalDate | DATE | 是 | 无 | — | 录入;与逐孔汇总关系未明确不自动覆写 | 已建(开发库) | | actual_end_date | 实际完成时间 | LocalDate | DATE | 是 | 无 | — | 录入;已填起止合法 | 已建(开发库) | | description | 完成说明 | String | CLOB | 是 | 无 | — | 录入 | 已建(开发库) | | create_dept | 创建部门 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_DEPT | BaseEntity插入填充 | 已建(开发库) | | create_by | 创建者 | Long | BIGINT | 否 | 无 | 逻辑关联SYS_USER | BaseEntity插入填充 | 已建(开发库) | | create_time | 创建时间 | LocalDateTime | TIMESTAMP | 否 | 无 | — | BaseEntity插入填充 | 已建(开发库) | | update_by | 更新者 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_USER | BaseEntity更新填充 | 已建(开发库) | | update_time | 更新时间 | LocalDateTime | TIMESTAMP | 是 | 无 | — | BaseEntity更新填充 | 已建(开发库) | | del_flag | 逻辑删除 | String | CHAR(1) | 否 | '0' | 逻辑删除有效值0/删除值1 | 实体@TableLogic显式配置;同平台逻辑删除契约 | 已建(开发库) |
6. biz_survey_progress_hole:逐孔进度及计划快照
此表完整列为本矩阵全部行,包含 BaseEntity 审计列和显式逻辑删除列。
| 字段 | 业务含义 | 逻辑类型 | 物理类型及长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验状态 |
|---|---|---|---|---|---|---|---|---|
| progress_hole_id | 上报逐孔主键 | Long | BIGINT | 否 | 无 | PK | 服务端雪花ID | 已建(开发库) |
| progress_task_id | 所属进度任务 | Long | BIGINT | 否 | 无 | I_PROGRESS_HOLE;逻辑FK progress.task_id | 父级任务校验 | 已建(开发库) |
| borehole_id | 来源计划钻孔 | Long | BIGINT | 否 | 无 | 有效行同上报单唯一U_PROGRESS_HOLE;逻辑FK borehole | 不能引用其他计划的孔 | 已建(开发库) |
| hole_code | 钻孔编号快照 | String | VARCHAR(100) | 否 | 无 | — | 服务端从计划读取 | 已建(开发库) |
| design_x | 设计坐标X快照,m | BigDecimal | DECIMAL(18,4) | 是 | 无 | — | 服务端取计划 | 已建(开发库) |
| design_y | 设计坐标Y快照,m | BigDecimal | DECIMAL(18,4) | 是 | 无 | — | 服务端取计划 | 已建(开发库) |
| expected_depth | 预计孔深快照,m | BigDecimal | DECIMAL(10,3) | 是 | 无 | — | 服务端取计划 | 已建(开发库) |
| actual_depth | 实际孔深,m | BigDecimal | DECIMAL(10,3) | 是 | 无 | — | 录入;不以达到预计孔深强行推断已完成 | 已建(开发库) |
| actual_start_date | 该孔实际开始 | LocalDate | DATE | 是 | 无 | — | 录入 | 已建(开发库) |
| actual_end_date | 该孔实际完成 | LocalDate | DATE | 是 | 无 | — | 录入;不参与选孔计数,未填完成日期的已选孔仍计入本次数量 | 已建(开发库) |
| order_num | 行序 | Integer | INTEGER | 否 | 0 | I_PROGRESS_HOLE | 页面选择顺序 | 已建(开发库) |
| create_dept | 创建部门 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_DEPT | BaseEntity插入填充 | 已建(开发库) |
| create_by | 创建者 | Long | BIGINT | 否 | 无 | 逻辑关联SYS_USER | BaseEntity插入填充 | 已建(开发库) |
| create_time | 创建时间 | LocalDateTime | TIMESTAMP | 否 | 无 | — | BaseEntity插入填充 | 已建(开发库) |
| update_by | 更新者 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_USER | BaseEntity更新填充 | 已建(开发库) |
| update_time | 更新时间 | LocalDateTime | TIMESTAMP | 是 | 无 | — | BaseEntity更新填充 | 已建(开发库) |
| del_flag | 逻辑删除 | String | CHAR(1) | 否 | '0' | 逻辑删除有效值0/删除值1 | 实体@TableLogic显式配置;同平台逻辑删除契约 | 已建(开发库) |
7. biz_survey_attachment:按任务/钻孔分类附件
此表完整列为本矩阵全部行,包含 BaseEntity 审计列和显式逻辑删除列。
| 字段 | 业务含义 | 逻辑类型 | 物理类型及长度/精度 | 可空 | 默认 | 键/索引 | 来源/生成规则 | 核验状态 |
|---|---|---|---|---|---|---|---|---|
| attachment_id | 附件关系主键 | Long | BIGINT | 否 | 无 | PK | 服务端雪花ID | 已建(开发库) |
| task_id | 所属业务任务 | Long | BIGINT | 否 | 无 | I_ATTACHMENT_TASK;逻辑FK task | 业务任务鉴权 | 已建(开发库) |
| progress_hole_id | 所属上报钻孔 | Long | BIGINT | 是 | 无 | I_ATTACHMENT_HOLE;逻辑FK progress_hole | 仅HOLE_IMAGE使用;必须属于该task | 已建(开发库) |
| category | 资料分类 | String | VARCHAR(32) | 否 | 无 | I_ATTACHMENT_TASK | OUTLINE/SAFETY_ORGANIZATION/SPECIAL_REPORT/RESULT_REPORT/OTHER/PLAN_LAYOUT/PROGRESS_LAYOUT/HOLE_IMAGE | 已建(开发库) |
| oss_id | 文件对象ID | Long | BIGINT | 否 | 无 | 逻辑FK SYS_OSS | 上传后关联;文件可访问性校验 | 已建(开发库) |
| file_name | 文件名称快照 | String | VARCHAR(500) | 否 | 无 | — | 服务端查OSS元数据,不能信前端URL | 已建(开发库) |
| order_num | 排序 | Integer | INTEGER | 否 | 0 | — | 分类内顺序 | 已建(开发库) |
| create_dept | 创建部门 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_DEPT | BaseEntity插入填充 | 已建(开发库) |
| create_by | 创建者 | Long | BIGINT | 否 | 无 | 逻辑关联SYS_USER | BaseEntity插入填充 | 已建(开发库) |
| create_time | 创建时间 | LocalDateTime | TIMESTAMP | 否 | 无 | — | BaseEntity插入填充 | 已建(开发库) |
| update_by | 更新者 | Long | BIGINT | 是 | 无 | 逻辑关联SYS_USER | BaseEntity更新填充 | 已建(开发库) |
| update_time | 更新时间 | LocalDateTime | TIMESTAMP | 是 | 无 | — | BaseEntity更新填充 | 已建(开发库) |
| del_flag | 逻辑删除 | String | CHAR(1) | 否 | '0' | 逻辑删除有效值0/删除值1 | 实体@TableLogic显式配置;同平台逻辑删除契约 | 已建(开发库) |
8. 约束、索引与删除
| 名称 | 目标字段/语义 | 设计原因 |
|---|---|---|
| I_TASK_LIST | task_type, line_id, status, create_time | 类型与线路筛选、时间排序;实际执行计划核验后决定列序 |
| I_TASK_SCOPE | bid_id, site_id | 工程范围关联;权限EXISTS仍需查实际计划 |
| I_TASK_INSTANCE | instance_id | 流程事件回写定位,不声明一对多历史实例已支持 |
| I_HOLE_PLAN | plan_task_id, order_num | 计划明细分页及展示 |
| U_HOLE_CODE | 同计划有效 hole_code 不重复 | Service去空白查重;物理有效行唯一实现依DM8能力核对 |
| I_PROGRESS_PLAN | plan_task_id | 按实际引用版本穿透 |
| I_PROGRESS_ROOT | root_plan_task_id | 同一业务计划跨版本累计归组;通过task_id关联主任务的create_time、task_id限定累计前缀 |
| I_PLAN_ROOT | root_plan_task_id | 版本历史及生效调整次数 |
| U_PLAN_REV | root_plan_task_id, revision_no | 调整序号唯一;逻辑删除不释放序号,不与业务生效次数混用 |
| I_PROGRESS_HOLE | progress_task_id, order_num | 逐孔列表 |
| U_PROGRESS_HOLE | 同上报单有效 borehole_id 不重复 | 防止同一单重复选择一孔;不同单能否重复上报不据此禁止 |
| I_ATTACHMENT_TASK | task_id, category, order_num | 分类附件回显 |
| I_ATTACHMENT_HOLE | progress_hole_id | 逐孔影像数量与明细 |
软删除与唯一性必须联动:不要简单用 (plan_task_id,hole_code,del_flag) 唯一索引而导致同编号二次删除失败。优先复用项目有效行唯一模式;若当前库未有可移植实现,则 Service 校验有效行唯一,并把数据库约束能力如实记录,不为理论并发新增锁和版本字段。所有派生查询排除已删除行。
主任务删除必须先校验状态及关联。被任何有效进度引用的计划/钻孔不得物理删除或重建ID;不能用“删光明细再插入”更新已引用计划。已通过计划仅以新调整版本修改,原版本及其孔ID保持不变。删除草稿任务在一个事务中处理本任务扩展、明细和附件引用;不删除OSS原文件,不删除引擎历史,不清理其他任务。
9. 累计派生值与计划版本生效
本次数量currentCompletedCount为本单有效progress_hole行数,明细就是已勾选要报的孔,同单重复borehole_id拒绝;不存current_completed_count列,不以日期、深度或影像判定数量,也不另存isSelected。计划孔数为本单plan_task_id指向版本的有效borehole数;影像数为有效附件数。先按progress_task_id分别聚合选孔数和附件数,再连接父任务,禁止孔与附件一对多连接放大孔数。累计按root_plan_task_id归组、task.create_time/task_id稳定顺序,取截至本单的有效已提交记录;主任务和扩展del_flag=0、submit_time非空、status IN(waiting,back,finish),选孔明细del_flag=0。草稿/cancel/invalid/termination/删除排除;草稿仅本单编辑预览临时加当前选孔数,退回编辑替换本单旧值。跨上报不按孔去重,不累计累计值,不写增量计数器。求和用Long且正确序列化;空选孔为0。列表/详情/导出/预览共享计算,筛选分页不改变基数。完成率以本单引用版本孔数为分母,BigDecimal乘100后除法保留2位HALF_UP,响应十进制字符串;分母0为null,前端“—”,超过100不截断。完整预览与排除状态展示见详细设计4.3节。
计划原版和各调整版各占一条fieldPlan任务与plan扩展,使用root_plan_task_id归组、previous_plan_task_id指向来源。仅根行的effective_plan_task_id表示当前有效版,任意调整版本详情必须回查根行解析该指针;effective_time记录版本曾生效;调整通过前指针不变,通过后与业务状态在同一事务切换。旧版本仍finish且不可覆盖。调整次数按同根非初始且effective_time非空的版本计数,不因保存、提交或重提加一。root/previous/effective指针与effective_time均由服务端维护,普通BO不得绑定。调整继承根的项目/线路/标段/工点/阶段,复制时清除审批实例、生效和原审计字段。版本钻孔是独立行,source_borehole_id指向来源版本行,用于识别改号等修改;新增孔为空。revision_no标识调整记录序号,previous_plan_task_id保存前侧,当前task_id为后侧,历史比对不需另存一份易失配的差异JSON。已有进度始终引用旧行;无需通用版本框架或额外并发锁。
计划表单布孔图用 PLAN_LAYOUT,进度布孔/进度图用 PROGRESS_LAYOUT,逐孔影像用 HOLE_IMAGE,审批意见附件由平台流程历史承载。分类必须与task_type、progress_hole_id匹配;非进度附件不得挂孔ID。
10. 实际结构差异与核验清单
2026-11-03 仓库检索未发现本设计的勘察业务实现;BaseEntity 源码已核对五个审计字段。开发库已通过纳管入口完成六表、主键与业务索引创建并逐项回读;生产库未访问,生产状态待发布前回读。
| 对象 | 设计目标 | 当前实际核验 | 后续处理 |
|---|---|---|---|
| 六张新表及全部列 | 上述矩阵 | 开发库已创建并回读:BIZ_SURVEY_TASK、BIZ_SURVEY_PLAN、BIZ_SURVEY_BOREHOLE、BIZ_SURVEY_PROGRESS、BIZ_SURVEY_PROGRESS_HOLE、BIZ_SURVEY_ATTACHMENT;2026-11-03 将 BID_ID、BID_NAME 改为可空并回读 | 生产发布前回读生产库并同步结构 |
| 主数据关系、唯一性、索引 | 本文逻辑模型 | 主键及业务索引已建:I_TASK_LIST、I_TASK_SCOPE、I_TASK_INSTANCE、I_PLAN_ROOT、U_PLAN_REV、I_HOLE_PLAN、I_PROGRESS_PLAN、I_PROGRESS_ROOT、I_PROGRESS_HOLE、I_ATTACHMENT_TASK、I_ATTACHMENT_HOLE;未建立物理外键,沿用项目逻辑关联与 Service 校验 | 生产发布前回读索引状态 |
| 审批关联 | instance_id + task_id字符串businessId | 五条流程已在开发库导入、发布并回读节点与连线;实例、任务与业务记录关联已验证 | 生产按流程专项规则同步 |
| 计划调整版本与统计 | 计划自关联、有效指针、选孔明细派生数量与查询累计 | 已按六表实现;V0→V1 调整通过后有效指针切换、初始版自身生效、退回/重提同实例均已验证 | 生产发布前回读结构与定义 |
实施时必须通过 dcp-dm8-dev 或 .agents/mcp/launch.ps1 纳管入口执行结构查询、DDL/DML和回读;仓库不保存业务SQL,禁止外部连接。写前核对目标环境与对象,写后核对列/默认/索引及影响对象;验证主表、扩展、附件多表回滚、空值、Decimal精度、雪花ID和逻辑删除。不得执行DROP/TRUNCATE、无WHERE整表写入或清理无关数据。普通表结构开发与生产发布分离,本次仅完成开发库结构,生产未访问、待发布。
11. 开发库实施结果
2026-11-03 通过项目纳管入口在开发库执行了 6 条 CREATE TABLE、11 条业务索引及 U_PLAN_REV 唯一索引,并逐项回读:
| 对象类别 | 实际结果 |
|---|---|
| 表 | 六表均存在,列、类型、可空、默认值与本文矩阵一致;审计列显式建列 |
| 主键 | 六表主键均为 BIGINT,实体按任务/明细分别使用 ASSIGN_ID 或由任务主键写入 |
| 业务索引 | 任务列表/范围/实例、计划根、调整序号唯一、钻孔计划、进度计划/根、逐孔、附件任务/孔索引均存在 |
| 逻辑删除 | DEL_FLAG CHAR(1) DEFAULT '0',实体 @TableLogic(value="0", delval="1"),与平台默认一致 |
| 物理外键 | 未建立,沿用项目逻辑关联与 Service 校验,避免跨厂商迁移限制 |
| 标段可选 | 2026-11-03 执行 ALTER TABLE BIZ_SURVEY_TASK MODIFY BID_ID BIGINT NULL、MODIFY BID_NAME VARCHAR(200) NULL,回读 NULLABLE='Y';现有 20 行未修改 |
| 测试数据 | 仅使用本任务可识别的 UI验证 草稿/计划/进度数据;未清理共享对象,未删除无关数据 |
兼容人大金仓、openGauss 时,重点核验 CLOB→文本类型、字符长度语义、DATE/TIMESTAMP、逻辑删除的有效行唯一索引及大小写。厂商差异集中在持久化适配层,不成为业务规则。