safety-eval-service/docs/sql/database-design.md

994 lines
47 KiB
Markdown
Raw Permalink Normal View History

2026-06-18 10:23:51 +08:00
# 巫溪县安全评价在线监管一件事 — 数据库设计文档
> 版本v1.2
> 依据:产品原型 PDF设计文件 112
> 数据库MySQL 8.0+ / InnoDB / utf8mb4_unicode_ci
> ORMMyBatis-Plus通用字段与 `@TableLogic` 对齐)
---
## 1. 文档说明
### 1.1 设计目标
| 业务域 | 原型模块 | 核心表 |
|--------|----------|--------|
| 机构认证 | 认证信息(填写→审核中→通过) | `org_info`、`org_certification_audit` |
| 企业信息管理 | 机构信息、资质、人员、部门岗位、装备 | `org_*`、`staff_*`、`equip_info` |
| 人员异动 | 人员变更、离职申请 | `staff_change_log`、`staff_resignation_apply` |
| 资质备案 | 备案申请4步、变更、已备案 | `filing_*` |
| 系统支撑 | 用户、附件、审核、字典、区划 | `sys_*`、`audit_record` |
> **阅读指引**§2 ER 图与关联矩阵 → **§3 每张表作用与关系(核心)** → §4§8 字段明细 → §11 表清单总览
### 1.2 命名规范
| 项 | 规范 |
|----|------|
| 表名 | 小写 + 下划线;前缀 `sys_` / `org_` / `staff_` / `filing_` / `equip_` |
| 字段 | Java 驼峰 → 数据库下划线,如 `createTime``create_time` |
| 主键 | `id` BIGINT UNSIGNED |
| 外键 | `{实体}_id`,逻辑外键,应用层约束 |
| 日期 | **DATE**:仅年月日(出生日期、证书有效期、签署日期等) |
| 时间 | **DATETIME**:年月日时分秒(创建、提交、审核、登录等) |
| 逻辑删除 | 字段名固定 **`deleted`**(不转下划线),`0` 未删 / `1` 已删 |
### 1.3 通用字段(与 MyBatis-Plus BaseEntity 对齐)
业务表(可增删改)均包含以下 5 个字段:
```java
/** 创建时间 */
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新时间 */
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
/** 更新人 */
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/** 删除标识 0-否 1-是 */
@TableLogic(value = "0", delval = "1")
@TableField(fill = FieldFill.INSERT)
private Integer deleted;
```
对应 DDL
```sql
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
create_by VARCHAR(64) DEFAULT NULL COMMENT '创建人',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
update_by VARCHAR(64) DEFAULT NULL COMMENT '更新人',
deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标识0-否1-是'
```
**例外(只增不改的流水表)** 仅保留 `create_time`、`create_by`(及业务时间字段):
- `audit_record` — 审核流水
- `org_certification_audit` — 认证审核历史
- `staff_change_log` — 人员变更记录
- `filing_change_detail` — 备案变更明细
### 1.4 附件设计
证书图片、材料扫描件、离职报告、单位介绍附件等 **不单独建业务字段存 URL**,统一走 `sys_attachment`
| biz_type | 关联 biz_id | 原型场景 |
|----------|-------------|----------|
| org_intro | filing_application.id / org_info.id | 单位基本情况介绍上传 |
| org_cert | org_qualification_cert.id | 机构资质证书图片 |
| staff_cert | staff_certificate.id | 人员证书附件 |
| filing_material | filing_application_material.id | 申请材料扫描件 |
| filing_commitment_sign | filing_commitment.id | 法人签名 |
| filing_commitment_seal | filing_commitment.id | 单位盖章 |
| resign_report | staff_resignation_apply.id | 离职通知报告 PDF |
| staff_ability_proof | staff_info.id | 申报专业能力证明材料 |
---
## 2. ER 关系总览
> 以下为全局 ER 与关联矩阵;**每张表的业务职责、上游引用、下游被引用** 见 [§3 数据表作用与关系说明](#3-数据表作用与关系说明)。
```mermaid
erDiagram
org_info ||--o{ org_department : "org_id"
org_department ||--o{ org_position : "dept_id"
org_info ||--o{ staff_info : "org_id"
org_department ||--o{ staff_info : "dept_id"
org_position ||--o{ staff_info : "position_id"
staff_info ||--o{ staff_certificate : "staff_id"
org_info ||--o{ org_qualification_cert : "org_id"
org_info ||--o{ org_certification_audit : "org_id"
org_info ||--o{ equip_info : "org_id"
org_info ||--o{ filing_application : "org_id"
filing_application ||--o{ filing_application_material : "application_id"
filing_application ||--o{ filing_application_staff : "application_id"
filing_application_staff ||--o{ filing_application_staff_cert : "application_staff_id"
filing_application ||--o| filing_commitment : "application_id"
filing_application ||--o| filing_record : "application_id"
filing_record ||--o{ filing_change_record : "filing_record_id"
filing_change_record ||--o{ filing_change_detail : "change_record_id"
staff_info ||--o{ staff_change_log : "staff_id"
staff_info ||--o{ staff_resignation_apply : "staff_id"
sys_user ||--o| staff_info : "user_id"
sys_user }o--|| org_info : "org_id"
sys_region ||--o{ filing_record : "filing_region_id"
sys_region ||--o{ org_info : "region_*_id"
```
### 2.1 关联矩阵
| 主表 | 从表 | 关系 | 关联字段 | 说明 |
|------|------|------|----------|------|
| org_info | org_department | 1:N | org_id | 部门树 |
| org_department | org_position | 1:N | dept_id | 部门下岗位 |
| org_info | staff_info | 1:N | org_id | 机构人员 |
| org_department | staff_info | 1:N | dept_id | 人员所属部门 |
| org_position | staff_info | 1:N | position_id | 人员岗位 |
| staff_info | staff_certificate | 1:N | staff_id | 人员证书 |
| staff_info | staff_change_log | 1:N | staff_id | 变更追溯 |
| staff_info | staff_resignation_apply | 1:N | staff_id | 离职申请 |
| org_info | org_qualification_cert | 1:N | org_id | 机构资质 |
| org_info | equip_info | 1:N | org_id | 装备 |
| org_info | filing_application | 1:N | org_id | 备案申请 |
| filing_application | filing_application_material | 1:N | application_id | 步骤2材料 |
| filing_application | filing_application_staff | 1:N | application_id | 步骤3人员 |
| filing_application_staff | filing_application_staff_cert | 1:N | application_staff_id | 步骤3人员证书 |
| filing_application | filing_commitment | 1:1 | application_id | 步骤4承诺书 |
| filing_application | filing_record | 1:1 | application_id | 审核通过后生成 |
| filing_record | filing_change_record | 1:N | filing_record_id | 备案变更 |
| filing_change_record | filing_change_detail | 1:N | change_record_id | 变更明细 |
| filing_change_record | filing_application | N:1 | change_application_id | 变更类申请 |
| sys_user | staff_info | 1:1 | user_id | 可选绑定 |
| sys_attachment | 各业务 | N:1 | biz_type + biz_id | 附件 |
| sys_region | org_info | 1:N | region_county_id 等 | 机构所属区划 |
| sys_region | filing_application / filing_record | 1:N | filing_region_id | 备案属地 |
| sys_dict | sys_dict_item | 1:N | dict_id | 字典项 |
| audit_record | 各审核业务 | N:1 | biz_type + biz_id | 审核流水 |
| org_info | org_certification_audit | 1:N | org_id | 认证审核历史 |
| org_info | sys_user | 1:N | org_id | 机构用户 |
| staff_info | filing_application_staff | 1:N | staff_id | 备案时引用人员(可选) |
| staff_certificate | filing_application_staff_cert | 1:N | staff_cert_id | 备案时引用证书(可选) |
---
## 3. 数据表作用与关系说明
> 本节按业务域列出 **全部 24 张表** 的职责及与其他表的关联,便于开发理解数据流向。
> 箭头含义:`A → B` 表示 A 表通过外键字段引用 B 表(或多对一归属 B
### 3.1 系统支撑域
#### sys_user — 系统用户
| 项 | 说明 |
|----|------|
| **作用** | 存储平台登录账号,支撑机构端、监管端身份认证;人员开通账号、重置密码均操作此表。 |
| **对应原型** | 人员信息管理(账号列、重置密码);认证/备案各模块的操作主体。 |
| **引用(上游)** | `org_info``org_id`,机构用户必填;监管用户为空) |
| **被引用(下游)** | `staff_info.user_id`(人员与账号 1:1 可选绑定) |
| **关联方式** | 机构用户:`sys_user.org_id = org_info.id`;人员账号:`staff_info.user_id = sys_user.id` |
#### sys_region — 行政区划
| 项 | 说明 |
|----|------|
| **作用** | 维护省→市→区县→街道→社区树形区划,供机构地址、备案属地下拉选择与列表展示。 |
| **对应原型** | 机构信息「所属县区/镇街道/村社区」;备案列表「备案属地」。 |
| **引用(上游)** | 自关联 `parent_id → sys_region.id`(树形结构) |
| **被引用(下游)** | `org_info.region_county_id / region_street_id / region_community_id``filing_application.filing_region_id``filing_record.filing_region_id` |
| **关联方式** | 树查询:`parent_id`;机构/备案:`filing_region_id = sys_region.id` |
#### sys_dict — 数据字典
| 项 | 说明 |
|----|------|
| **作用** | 字典类型主表,定义下拉选项分类(备案状态、审核状态、设备状态等)。 |
| **对应原型** | 各页面「请选择」类筛选项、状态标签的后端枚举来源。 |
| **引用(上游)** | 无 |
| **被引用(下游)** | `sys_dict_item.dict_id` |
| **关联方式** | `sys_dict_item.dict_id = sys_dict.id` |
#### sys_dict_item — 字典项
| 项 | 说明 |
|----|------|
| **作用** | 字典具体选项值与展示标签,如「已备案」「未审核」「启用/禁用」。 |
| **对应原型** | 备案状态、离职审核状态、设备状态等下拉框选项。 |
| **引用(上游)** | `sys_dict``dict_id` |
| **被引用(下游)** | 业务表通过 `dict_code + item_value` 逻辑引用,无物理外键 |
| **关联方式** | 查询:`sys_dict.dict_code = 'filing_status'` JOIN `sys_dict_item` |
#### sys_attachment — 通用附件
| 项 | 说明 |
|----|------|
| **作用** | 统一管理各业务上传文件PDF 扫描件、证书图片、签名盖章等),避免各表重复存 URL。 |
| **对应原型** | 资质证书图片、申请材料上传、离职通知报告、承诺书签章、单位介绍附件等。 |
| **引用(上游)** | 无物理 FK通过 `biz_type + biz_id` 逻辑关联各业务主键 |
| **被引用(下游)** | 见 §1.4 `biz_type` 映射表 |
| **关联方式** | `WHERE biz_type = 'org_cert' AND biz_id = org_qualification_cert.id` |
#### audit_record — 审核流水
| 项 | 说明 |
|----|------|
| **作用** | 记录各类业务的提交、通过、驳回、退回操作及意见,用于审计追溯与状态机还原。 |
| **对应原型** | 机构认证审核、备案审核、离职审核、备案变更审核的状态流转历史。 |
| **引用(上游)** | 无;`biz_type + biz_id` 指向具体业务记录 |
| **被引用(下游)** | 无(只增不改的流水表) |
| **关联方式** | `biz_type='filing_application' AND biz_id=filing_application.id` |
---
### 3.2 机构与企业域
#### org_info — 机构基本信息
| 项 | 说明 |
|----|------|
| **作用** | **核心主数据表**。存储安全评价机构主体信息,承载首次「认证信息」填报、日常「机构信息管理」维护,并为备案申请提供基础数据。 |
| **对应原型** | 认证信息(填写→审核中→通过);机构信息管理;备案申请第一步单位信息。 |
| **引用(上游)** | `sys_region`(三区划 ID |
| **被引用(下游)** | `sys_user`、`org_department`、`org_position`、`staff_info`、`org_qualification_cert`、`equip_info`、`filing_application`、`filing_record`、`org_certification_audit`、`staff_change_log`、`staff_resignation_apply`(均含 `org_id` |
| **关联方式** | 机构维度数据隔离:`*.org_id = org_info.id` |
#### org_certification_audit — 机构认证审核记录
| 项 | 说明 |
|----|------|
| **作用** | 每次提交机构认证时生成一条审核记录,保留提交快照与审核结果,支持「认证审核中/通过/驳回」历史查询。 |
| **对应原型** | 认证信息步骤条:填写信息 → 认证审核中 → 认证通过。 |
| **引用(上游)** | `org_info``org_id` |
| **被引用(下游)** | 无;可与 `audit_record``biz_type=org_certification`)并行写入 |
| **关联方式** | `org_certification_audit.org_id = org_info.id` |
#### org_qualification_cert — 机构资质证书
| 项 | 说明 |
|----|------|
| **作用** | 维护机构持有的安全评价等资质证书(等级、编号、有效期、发证机关),证书图片走 `sys_attachment`。 |
| **对应原型** | 企业信息管理 → 资质信息管理(新增/编辑/禁用/删除证书)。 |
| **引用(上游)** | `org_info``org_id`);附件 `sys_attachment``biz_type=org_cert` |
| **被引用(下游)** | 备案变更:资质变更时触发 `filing_change_record``change_type=qualification` |
| **关联方式** | `org_qualification_cert.org_id = org_info.id` |
---
### 3.3 组织与人员域
#### org_department — 部门
| 项 | 说明 |
|----|------|
| **作用** | 机构内部组织架构,支持多级部门树(原型左侧过滤树:第一级别、第二级别…)。 |
| **对应原型** | 企业信息管理 → 部门岗位管理 → 部门列表/新增/编辑。 |
| **引用(上游)** | `org_info``org_id`);自关联 `parent_id` |
| **被引用(下游)** | `org_position.dept_id``staff_info.dept_id` |
| **关联方式** | 树:`parent_id = 0` 为根;人员:`staff_info.dept_id = org_department.id` |
#### org_position — 岗位
| 项 | 说明 |
|----|------|
| **作用** | 定义部门下的岗位及职责,人员录入时选择岗位。 |
| **对应原型** | 部门岗位管理 → 添加岗位/编辑岗位(岗位名称、岗位职责、备注)。 |
| **引用(上游)** | `org_info``org_id``org_department``dept_id` |
| **被引用(下游)** | `staff_info.position_id` |
| **关联方式** | `org_position.dept_id = org_department.id``staff_info.position_id = org_position.id` |
#### staff_info — 人员信息
| 项 | 说明 |
|----|------|
| **作用** | 机构从业人员主数据,含基本信息、学历经历、专业能力;列表展示部门/岗位/证照摘要;变更时写 `staff_change_log`。 |
| **对应原型** | 人员信息管理(列表、新增、查看、编辑);备案向导第三步人员(可引用本表)。 |
| **引用(上游)** | `org_info`、`org_department`、`org_position`、`sys_user`(均可空) |
| **被引用(下游)** | `staff_certificate`、`staff_change_log`、`staff_resignation_apply``filing_application_staff.staff_id`(可选) |
| **关联方式** | `staff_info.org_id = org_info.id`;证书:`staff_certificate.staff_id = staff_info.id` |
#### staff_certificate — 人员证书
| 项 | 说明 |
|----|------|
| **作用** | 人员持有的各类执业/作业证书,含类别、编号、有效期;证书附件走 `sys_attachment`。 |
| **对应原型** | 人员信息管理 → 添加证书/编辑证书/查看证书详情。 |
| **引用(上游)** | `staff_info``staff_id``org_info``org_id` 冗余便于按机构查);`sys_attachment``biz_type=staff_cert` |
| **被引用(下游)** | `filing_application_staff_cert.staff_cert_id`(备案快照可选来源) |
| **关联方式** | `staff_certificate.staff_id = staff_info.id` |
#### staff_change_log — 人员变更记录
| 项 | 说明 |
|----|------|
| **作用** | 人员信息修改时逐字段记录变更前后值,支撑「人员变更管理」列表的变更次数与变更明细查看。 |
| **对应原型** | 人员变更管理(变更事项、变更时间、操作人);变更内容如「法人:张三→李四」。 |
| **引用(上游)** | `staff_info``staff_id``org_info``org_id` |
| **被引用(下游)** | 无;变更可能间接触发 `filing_change_record`(机构已有备案时) |
| **关联方式** | `staff_change_log.staff_id = staff_info.id`;同步更新 `staff_info.change_count` |
#### staff_resignation_apply — 人员离职申请
| 项 | 说明 |
|----|------|
| **作用** | 人员离职申请单,含离职原因、预计离职日期、离职通知报告;机构管理员审核后更新人员就职状态。 |
| **对应原型** | 人员离职申请(新增/查看);人员变更管理 → 离职审核(通过/退回)。 |
| **引用(上游)** | `staff_info``staff_id``org_info``org_id``sys_attachment``biz_type=resign_report` |
| **被引用(下游)** | `audit_record``biz_type=staff_resignation`);审核通过 → 更新 `staff_info.employment_status=2` |
| **关联方式** | `staff_resignation_apply.staff_id = staff_info.id` |
---
### 3.4 装备域
#### equip_info — 装备信息
| 项 | 说明 |
|----|------|
| **作用** | 评价机构检测仪器设备台账,含分类、型号、流量、校准信息及启用/禁用状态。 |
| **对应原型** | 企业信息管理 → 装备信息管理(新增/编辑/查看/启用禁用/删除)。 |
| **引用(上游)** | `org_info``org_id` |
| **被引用(下游)** | 无(独立主数据;二期监控模块可引用) |
| **关联方式** | `equip_info.org_id = org_info.id` |
---
### 3.5 资质备案域
#### filing_application — 备案申请主表
| 项 | 说明 |
|----|------|
| **作用** | 备案业务**流程主表**,驱动 4 步向导(基本→材料→人员→承诺书),管理草稿/提交/审核状态;新备案与变更备案共用,通过后生成 `filing_record`。 |
| **对应原型** | 资质申请管理 → 资质备案申请;备案变更管理中的编辑表单。 |
| **引用(上游)** | `org_info``org_id``sys_region``filing_region_id``filing_record``parent_filing_record_id`,变更备案时) |
| **被引用(下游)** | `filing_application_material`、`filing_application_staff`、`filing_commitment`;审核通过 → `filing_record``filing_change_record.change_application_id` |
| **关联方式** | 子表均 `application_id = filing_application.id`;通过后 `filing_record.application_id = filing_application.id` |
#### filing_application_material — 备案申请材料
| 项 | 说明 |
|----|------|
| **作用** | 备案向导第 2 步「申请材料清单」行数据,每条材料对应扫描件附件。 |
| **对应原型** | 资质备案申请 → 申请材料清单(内容、格式 pdf、注释、上传附件。 |
| **引用(上游)** | `filing_application``application_id``sys_attachment``biz_type=filing_material` |
| **被引用(下游)** | 无 |
| **关联方式** | `filing_application_material.application_id = filing_application.id` |
#### filing_application_staff — 备案申请人员快照
| 项 | 说明 |
|----|------|
| **作用** | 备案向导第 3 步人员列表;申请提交时从 `staff_info` 复制或手工录入,**与主数据隔离**,保证备案历史不受后续人员变更影响。 |
| **对应原型** | 资质备案申请 → 人员信息(姓名、类型、职务、职称、查看证书)。 |
| **引用(上游)** | `filing_application``application_id``staff_info``staff_id`,可选) |
| **被引用(下游)** | `filing_application_staff_cert``application_staff_id` |
| **关联方式** | `filing_application_staff.application_id = filing_application.id` |
#### filing_application_staff_cert — 备案申请人员证书快照
| 项 | 说明 |
|----|------|
| **作用** | 备案人员关联证书的时点快照,字段对齐 `staff_certificate`,支持「查看证书」而不回查已变更的主数据。 |
| **对应原型** | 备案人员信息 → 查看证书(证书类型、作业类别、编号、有效期等)。 |
| **引用(上游)** | `filing_application``application_id``filing_application_staff``application_staff_id``staff_certificate``staff_cert_id`,可选) |
| **被引用(下游)** | `sys_attachment``biz_type=filing_staff_cert` |
| **关联方式** | `application_staff_id = filing_application_staff.id` |
#### filing_commitment — 法定代表人承诺书
| 项 | 说明 |
|----|------|
| **作用** | 备案向导第 4 步,记录法人签署信息;签名、盖章文件存 `sys_attachment`。 |
| **对应原型** | 资质备案申请 → 申请单位法定代表人承诺书(签名、盖章、日期)。 |
| **引用(上游)** | `filing_application``application_id`1:1 |
| **被引用(下游)** | `sys_attachment``filing_commitment_sign` / `filing_commitment_seal` |
| **关联方式** | `filing_commitment.application_id = filing_application.id`(唯一) |
#### filing_record — 已备案资质记录
| 项 | 说明 |
|----|------|
| **作用** | 备案审核通过后的**正式备案台账**,含备案编号、属地、业务范围、状态、变更次数;列表即「已备案资质管理」。 |
| **对应原型** | 已备案资质管理;资质备案/变更列表中的「已备案」状态行。 |
| **引用(上游)** | `org_info``org_id``filing_application``application_id``sys_region``filing_region_id` |
| **被引用(下游)** | `filing_application.filing_record_id``filing_change_record.filing_record_id``filing_application.parent_filing_record_id`(变更备案) |
| **关联方式** | `filing_record.application_id = filing_application.id`;变更:`filing_change_record.filing_record_id = filing_record.id` |
#### filing_change_record — 备案变更记录
| 项 | 说明 |
|----|------|
| **作用** | 已备案机构发生人员/资质/单位信息变更时的变更批次主记录,对应「备案变更管理」与「历史变更记录」。 |
| **对应原型** | 备案变更管理(变更次数、备案状态);说明:人员或资质变更后备案数据进入变更管理。 |
| **引用(上游)** | `filing_record``filing_record_id``org_info``org_id``filing_application``change_application_id`,变更类申请) |
| **被引用(下游)** | `filing_change_detail``change_record_id`);完成后 `filing_record.change_count + 1` |
| **关联方式** | `filing_change_record.filing_record_id = filing_record.id` |
#### filing_change_detail — 备案变更明细
| 项 | 说明 |
|----|------|
| **作用** | 单次备案变更的字段级明细,展示「由 A 变更为 B」如法人、联系电话变更。 |
| **对应原型** | 备案变更查看 → 变更内容由张三变更为李四、由152…变更为187…。 |
| **引用(上游)** | `filing_change_record``change_record_id` |
| **被引用(下游)** | 无(只增不改) |
| **关联方式** | `filing_change_detail.change_record_id = filing_change_record.id` |
---
### 3.6 表关系分层图
```
【租户根】 org_info
├── sys_user 登录账号
├── org_certification_audit 认证审核历史
├── org_qualification_cert ──→ sys_attachment(org_cert)
├── org_department
│ └── org_position
├── staff_info ──→ sys_user
│ ├── staff_certificate ──→ sys_attachment(staff_cert)
│ ├── staff_change_log
│ └── staff_resignation_apply ──→ sys_attachment(resign_report)
├── equip_info
└── filing_application ──→ sys_region(备案属地)
├── sys_attachment(org_intro)
├── filing_application_material ──→ sys_attachment(filing_material)
├── filing_application_staff ──→ staff_info(可选)
│ └── filing_application_staff_cert ──→ staff_certificate(可选)
├── filing_commitment ──→ sys_attachment(sign/seal)
└── [审核通过] filing_record ──→ sys_region
└── filing_change_record ──→ filing_application(变更类)
└── filing_change_detail
【全局】 sys_region / sys_dict / sys_dict_item / sys_attachment / audit_record
```
---
## 4. 系统与基础表(字段明细)
### 4.1 sys_user — 系统用户
> **作用**:平台登录账号,机构用户绑定机构,人员可关联账号。
> **关系**`org_id → org_info`;被 `staff_info.user_id` 引用。
原型:人员列表「账号」、重置密码;机构/监管登录主体。
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT | PK |
| org_id | BIGINT | 所属机构,监管用户 NULL |
| username | VARCHAR(64) | 登录账号UK(username, deleted) |
| password_hash | VARCHAR(255) | 密码 |
| real_name | VARCHAR(64) | 姓名 |
| phone | VARCHAR(20) | 手机 |
| user_type | TINYINT | 1机构 2监管 3管理员 |
| status | TINYINT | 0禁用 1正常 |
| last_login_time | **DATETIME** | 最后登录 |
| + 通用字段 | | |
### 4.2 sys_region — 行政区划
> **作用**:省市区街道社区树形区划,支撑机构地址与备案属地下拉。
> **关系**:自关联 `parent_id`;被 `org_info`、`filing_application`、`filing_record` 引用。
原型:备案属地列表(省市区)、机构「所属县区/镇街道/村社区」。
| 字段 | 类型 | 说明 |
|------|------|------|
| id | BIGINT | PK |
| parent_id | BIGINT | 父级 |
| region_code | VARCHAR(12) | 国标码 |
| region_name | VARCHAR(64) | 名称 |
| region_level | TINYINT | 1省2市3区县4街道5社区 |
| sort_order | INT | 排序 |
| + 通用字段 | | |
### 4.3 sys_dict / sys_dict_item — 数据字典
> **作用**`sys_dict` 定义字典类型;`sys_dict_item` 存储具体选项值,供各业务状态下拉与展示。
> **关系**`sys_dict_item.dict_id → sys_dict.id`;业务表通过 dict_code 逻辑引用。
| dict_code | 用途 |
|-----------|------|
| filing_status | 未备案 / 已备案 / 驳回 |
| cert_audit_status | 草稿 / 审核中 / 已通过 / 已驳回 |
| org_business_status | 开业 / 停业等 |
| staff_employment_status | 在职 / 离职 |
| resign_audit_status | 未审核 / 已审核 / 已退回 |
| equip_enable_status | 启用 / 禁用 |
| material_format | pdf 等 |
### 4.4 sys_attachment — 通用附件
> **作用**:各业务上传文件的统一存储入口,通过 `biz_type + biz_id` 关联业务记录。
> **关系**:逻辑关联多表,无物理外键;详见 §1.4。
见 §1.4。
### 4.5 audit_record — 审核流水(无 deleted
> **作用**:跨业务审核操作流水,记录提交/通过/驳回/退回及意见。
> **关系**`biz_type + biz_id` 指向 org_certification / filing_application / staff_resignation / filing_change 等业务记录。
| 字段 | 类型 | 说明 |
|------|------|------|
| biz_type | VARCHAR(32) | org_certification / filing_application / staff_resignation / filing_change |
| biz_id | BIGINT | 业务ID |
| action | VARCHAR(16) | submit / approve / reject / return |
| from_status / to_status | VARCHAR(32) | 状态流转 |
| opinion | TEXT | 意见 |
| operate_time | **DATETIME** | 操作时间 |
| create_time | **DATETIME** | |
| create_by | VARCHAR(64) | 操作人 |
---
## 5. 机构与企业信息(字段明细)
### 5.1 org_info — 机构基本信息
> **作用**:机构核心主数据,承载认证填报与日常维护,是多数业务表的租户根。
> **关系**`region_*_id → sys_region`;被 org/staff/filing/equip 等全部 `org_id` 子表引用。详见 §3.2。
原型:认证信息、机构信息管理、备案申请第一步字段。
| 字段 | 类型 | 原型字段 |
|------|------|----------|
| org_name | VARCHAR(200) | 生产经营单位名称 |
| credit_code | VARCHAR(18) | 统一社会信用代码 |
| register_address | VARCHAR(500) | 注册地址 |
| business_address | VARCHAR(500) | 经营地址 / 办公地址 |
| longitude / latitude | DECIMAL | 所在地坐标 |
| region_county_id / region_street_id / region_community_id | BIGINT | 所属县区、镇街道、村社区 |
| safety_industry_category | VARCHAR(100) | 安全生产监管行业类别 |
| ownership_type | VARCHAR(32) | 归属类型 |
| gb_industry_code | VARCHAR(20) | 国民经济行业分类 |
| legal_representative / legal_rep_phone | | 法定代表人及电话 |
| principal / principal_phone | | 主要负责人 |
| safety_dept_head / safety_dept_phone | | 安全管理部门负责人 |
| safety_vp / safety_vp_phone | | 主管安全副总 |
| production_date | **DATE** | 投产日期 |
| business_status | VARCHAR(16) | 企业经营状态 |
| disclosure_url | VARCHAR(500) | 信息公开网址 |
| workplace_area / archive_room_area | DECIMAL | 工作场所/档案室面积 |
| full_time_evaluator_count | INT | 专职安全评价师数量 |
| registered_safety_engineer_count | INT | 注册安全工程师数量 |
| fixed_asset_total | DECIMAL | 固定资产总值(万元) |
| org_intro | TEXT | 单位基本情况介绍 |
| cert_status | TINYINT | 0草稿1审核中2已通过3已驳回 |
| cert_submit_time | **DATETIME** | 认证提交 |
| cert_approve_time | **DATETIME** | 认证通过 |
| + 通用字段 | | |
### 5.2 org_certification_audit — 机构认证审核
> **作用**:记录每次机构认证提交与审核结果,保留提交快照。
> **关系**`org_id → org_info`;可与 `audit_record`biz_type=org_certification并行。
| 字段 | 类型 | 说明 |
|------|------|------|
| org_id | BIGINT | 机构 |
| audit_status | TINYINT | 1审核中2通过3驳回 |
| submit_snapshot | JSON | 提交快照 |
| audit_opinion | TEXT | 意见 |
| audit_by | VARCHAR(64) | 审核人 |
| audit_time | **DATETIME** | 审核时间 |
| create_time / create_by | | 仅创建字段 |
### 5.3 org_qualification_cert — 机构资质证书
> **作用**:机构持有的资质证书台账,变更时可触发备案变更流程。
> **关系**`org_id → org_info`;附件 `sys_attachment(biz_type=org_cert)`。
原型:资质信息管理(证照类型、证书名称、编号、有效期、发证机关、证书图片)。
| 字段 | 类型 | 说明 |
|------|------|------|
| org_id | BIGINT | 机构 |
| cert_type | VARCHAR(64) | 证照类型 |
| cert_name | VARCHAR(128) | 证书名称 |
| cert_no | VARCHAR(64) | 证明编号 |
| issue_org | VARCHAR(128) | 发证机关 |
| issue_date | **DATE** | 发证日期 |
| valid_start_date / valid_end_date | **DATE** | 有效期 |
| remark | VARCHAR(500) | 备注 |
| enable_status | TINYINT | 1正常0禁用原型「禁用」 |
| 附件 | sys_attachment | biz_type=org_cert |
| + 通用字段 | | |
---
## 6. 组织与人员(字段明细)
### 6.1 org_department — 部门
> **作用**:机构组织架构树,支撑部门岗位管理与人员部门归属。
> **关系**`org_id → org_info``parent_id` 自关联;被 `org_position`、`staff_info` 引用。
原型:部门岗位管理,树形筛选(第一级别、第二级别…)。
| 字段 | 类型 | 说明 |
|------|------|------|
| org_id | BIGINT | 机构 |
| parent_id | BIGINT | 父部门0根 |
| dept_name | VARCHAR(64) | 部门名称 |
| dept_level | VARCHAR(32) | 部门级别 |
| leader_name | VARCHAR(64) | 负责人 |
| sort_order | INT | 排序 |
| tree_path | VARCHAR(256) | 物化路径 |
| + 通用字段 | | |
### 6.2 org_position — 岗位
> **作用**:部门下岗位定义,含岗位职责说明。
> **关系**`org_id → org_info``dept_id → org_department`;被 `staff_info.position_id` 引用。
| 字段 | 类型 | 说明 |
|------|------|------|
| org_id / dept_id | BIGINT | 机构、部门 |
| position_name | VARCHAR(64) | 岗位名称 |
| duty_desc | VARCHAR(500) | 岗位职责 |
| remark | VARCHAR(255) | 备注 |
| + 通用字段 | | |
### 6.3 staff_info — 人员信息
> **作用**:机构从业人员主数据,关联部门岗位与账号,是证书/变更/离职的上游。
> **关系**`org_id → org_info``dept_id → org_department``position_id → org_position``user_id → sys_user`;下游见 staff_* / filing_application_staff。
原型:人员列表(用户名称、账号、部门、岗位、证照名称);详情(出生日期、性别、身份证、学历、资质范围、专业能力等)。
| 字段 | 类型 | 原型 |
|------|------|------|
| staff_name | VARCHAR(64) | 姓名 |
| gender | TINYINT | 性别 |
| id_card_no | VARCHAR(18) | 身份证号 |
| birth_date | **DATE** | 出生日期 |
| account | VARCHAR(32) | 账号 |
| dept_id / position_id | BIGINT | 部门、岗位 |
| education / graduate_school / major | | 学历、院校、专业 |
| home_address / office_address | | 现住/办公地址 |
| person_type | VARCHAR(32) | 人员类型 |
| job_title / professional_title | | 职务、职称 |
| qualification_scope | VARCHAR(255) | 资质范围 |
| career_level_cert_no | VARCHAR(64) | 职业等级及证书编号 |
| is_registered_safety_engineer | TINYINT | 是否注册安全工程师 |
| self_declared_ability | TEXT | 自我申报专业能力 |
| work_experience | TEXT | 主要学习工作经历 |
| publications | TEXT | 专著专利论文等 |
| employment_status | TINYINT | 1在职2离职 |
| change_count | INT | 信息变更数(列表冗余) |
| user_id | BIGINT | 关联 sys_user |
| + 通用字段 | | |
### 6.4 staff_certificate — 人员证书
> **作用**:人员执业/作业证书明细,列表「证照名称」数据来源。
> **关系**`staff_id → staff_info``org_id → org_info`;附件 `sys_attachment(staff_cert)`;可被 `filing_application_staff_cert` 快照引用。
原型:证书类型、作业类别、编号、有效期、复核日期、证书图片。
| 字段 | 类型 | 说明 |
|------|------|------|
| staff_id / org_id | BIGINT | 人员、机构 |
| cert_name / cert_category / cert_work_category | | 证照名称、类别、作业类别 |
| cert_no | VARCHAR(64) | 证书编号 |
| issue_org | VARCHAR(128) | 发证机关 |
| valid_start_date / valid_end_date / review_date | **DATE** | 有效期、复核 |
| 附件 | sys_attachment | biz_type=staff_cert |
| + 通用字段 | | |
### 6.5 staff_change_log — 人员变更记录
> **作用**:人员字段变更的审计日志,驱动「信息变更数」统计。
> **关系**`staff_id → staff_info``org_id → org_info`;只增不改,无 deleted。
原型:变更事项、变更时间、操作人;人员变更管理列表「信息变更数」。
| 字段 | 类型 | 说明 |
|------|------|------|
| staff_id / org_id | BIGINT | |
| change_item | VARCHAR(64) | 变更事项 |
| field_name | VARCHAR(64) | 程序字段名 |
| old_value / new_value | VARCHAR(500) | 变更前后 |
| change_time | **DATETIME** | 变更时间 |
| create_time / create_by | | 操作人 |
### 6.6 staff_resignation_apply — 人员离职申请
> **作用**:离职申请与审核,通过后更新 `staff_info.employment_status`。
> **关系**`staff_id → staff_info``org_id → org_info`;附件 `sys_attachment(resign_report)`;可写 `audit_record`。
原型:申请人、申请时间、离职原因、备注、预计离职日期、离职通知报告;审核状态、退回原因。
| 字段 | 类型 | 说明 |
|------|------|------|
| staff_id / org_id | BIGINT | |
| applicant_name | VARCHAR(64) | 申请人 |
| apply_time | **DATETIME** | 申请时间 |
| expected_leave_date | **DATE** | 预计离职日期 |
| leave_reason / remark | TEXT | 离职原因、备注 |
| audit_status | TINYINT | 0未审核1已审核2已退回 |
| reject_reason | TEXT | 退回原因 |
| audit_by / audit_time | | 审核人、审核时间 |
| 附件 | sys_attachment | biz_type=resign_report |
| + 通用字段 | | |
---
## 7. 装备管理(字段明细)
### 7.1 equip_info — 装备信息
> **作用**:评价机构仪器设备台账,独立主数据。
> **关系**`org_id → org_info`;无下游业务表(二期监控可引用)。
原型:仪器分类、设备类型、设备名称、型号、流量、厂家、校准单位/初值、现场校验类型、是否双路、启用/禁用。
| 字段 | 类型 | 说明 |
|------|------|------|
| instrument_category / instrument_type / device_type | VARCHAR | 分类 |
| device_name / model | | 名称、型号 |
| flow_desc / min_flow / max_flow | | 流量说明 |
| manufacturer | VARCHAR(128) | 厂家 |
| calibration_unit / calibration_initial_value | | 校准 |
| on_site_calibration_type | VARCHAR(64) | 现场校验类型 |
| is_dual_channel | TINYINT | 是否双路 |
| enable_status | TINYINT | 1启用0禁用 |
| purchase_date | **DATE** | 登记日期 |
| + 通用字段 | | |
---
## 8. 资质备案(字段明细)
### 8.1 filing_application — 备案申请主表
> **作用**:备案 4 步向导流程主表,串联材料/人员/承诺书子表,审核通过后生成 `filing_record`。
> **关系**`org_id → org_info``filing_region_id → sys_region`;子表 `application_id`;详见 §3.5。
原型4 步向导 + 备案变更编辑;列表筛选项(备案编号、备案属地、备案状态、备案单位)。
| 字段 | 类型 | 步骤/说明 |
|------|------|-----------|
| application_no | VARCHAR(32) | 申请编号 |
| application_type | TINYINT | 1新备案2变更备案 |
| filing_region_id | BIGINT | 备案属地 |
| filing_unit_name / filing_unit_type | | 备案单位、类型 |
| register_address / office_address | | 注册/办公地址 |
| credit_code / qualification_cert_no | | 信用代码、资质证书编号 |
| legal_rep_and_phone / contact_and_phone | | 法人及电话、联系人及电话 |
| disclosure_url | | 信息公开网址 |
| fixed_asset_total / archive_room_area | | 固定资产、档案室面积 |
| full_time_evaluator_count / registered_safety_engineer_count | | 评价师、注安师数量 |
| workplace_area / org_intro | | 建筑面积、单位介绍 |
| business_scope | VARCHAR(500) | 备案安全评价业务范围 |
| current_step | TINYINT | 1基本2材料3人员4承诺书 |
| apply_status | TINYINT | 0草稿1提交2审核中3通过4驳回 |
| filing_record_id | BIGINT | 通过后关联 |
| parent_filing_record_id | BIGINT | 变更备案原记录 |
| submit_time / approve_time | **DATETIME** | 提交、通过时间 |
| 附件 | sys_attachment | biz_type=org_intro |
| + 通用字段 | | |
### 8.2 filing_application_material — 申请材料步骤2
> **作用**:备案向导第 2 步材料清单行。
> **关系**`application_id → filing_application`;附件 `sys_attachment(filing_material)`。
| 字段 | 类型 | 原型 |
|------|------|------|
| material_content | VARCHAR(255) | 申请材料目录 |
| material_type | VARCHAR(32) | 纸质版扫描件 |
| file_format | VARCHAR(16) | pdf |
| remark | VARCHAR(500) | 注释 |
| sort_order | INT | 内容序号 |
| 附件 | sys_attachment | biz_type=filing_material |
| + 通用字段 | | |
### 8.3 filing_application_staff — 备案人员快照步骤3
> **作用**:备案时点人员快照,与 `staff_info` 隔离。
> **关系**`application_id → filing_application``staff_id → staff_info`(可选);下游 `filing_application_staff_cert`。
| 字段 | 类型 | 原型 |
|------|------|------|
| staff_id | BIGINT | 可选,来自 staff_info |
| staff_name | VARCHAR(64) | 人员姓名 |
| person_type / job_title / professional_title | | 类型、职务、职称 |
| sort_order | INT | 序号 |
| + 通用字段 | | |
### 8.4 filing_application_staff_cert — 备案人员证书快照
> **作用**:备案人员证书时点快照,支持「查看证书」。
> **关系**`application_staff_id → filing_application_staff``staff_cert_id → staff_certificate`(可选)。
原型:人员信息步骤「查看证书」— 与 `staff_certificate` 字段对齐,申请时独立快照。
| 字段 | 类型 | 说明 |
|------|------|------|
| application_id | BIGINT | 备案申请 |
| application_staff_id | BIGINT | 备案人员 |
| staff_cert_id | BIGINT | 来源证书,可空 |
| cert_name / cert_category / cert_work_category / cert_no | | 同 staff_certificate |
| valid_start_date / valid_end_date / review_date | **DATE** | |
| 附件 | sys_attachment | biz_type=filing_staff_cert |
| + 通用字段 | | |
### 8.5 filing_commitment — 法定代表人承诺书步骤4
> **作用**:备案第 4 步法人承诺签署记录。
> **关系**`application_id → filing_application`1:1签章附件走 `sys_attachment`。
| 字段 | 类型 | 说明 |
|------|------|------|
| application_id | BIGINT | 1:1 |
| legal_rep_name | VARCHAR(64) | 法定代表人 |
| sign_date | **DATE** | 签署日期 |
| content_version | VARCHAR(16) | 模板版本 |
| 签名/盖章 | sys_attachment | filing_commitment_sign / seal |
| + 通用字段 | | |
### 8.6 filing_record — 已备案资质
> **作用**:备案通过后正式台账,「已备案资质管理」列表数据源。
> **关系**`org_id → org_info``application_id → filing_application``filing_region_id → sys_region`;下游 `filing_change_record`。
原型列表:备案属地、备案单位、备案编号、备案业务范围、备案状态、变更次数。
| 字段 | 类型 | 说明 |
|------|------|------|
| org_id | BIGINT | 机构 |
| application_id | BIGINT | 来源申请 |
| filing_no | VARCHAR(32) | 备案编号 |
| filing_region_id | BIGINT | 备案属地 |
| filing_unit_name | VARCHAR(200) | 备案单位 |
| business_scope | VARCHAR(500) | 备案业务范围 |
| filing_status | VARCHAR(16) | 未备案/已备案/驳回 |
| change_count | INT | 变更次数 |
| filing_time | **DATETIME** | 备案时间 |
| snapshot_json | JSON | 通过时全量快照 |
| + 通用字段 | | |
### 8.7 filing_change_record — 备案变更
> **作用**:已备案机构变更批次主记录,含变更次数统计。
> **关系**`filing_record_id → filing_record``change_application_id → filing_application`;下游 `filing_change_detail`。
原型:备案变更管理;人员/资质变更后进入;历史变更记录。
| 字段 | 类型 | 说明 |
|------|------|------|
| filing_record_id / org_id | BIGINT | |
| change_application_id | BIGINT | 变更类 filing_application |
| change_type | VARCHAR(32) | personnel / qualification / org_info / mixed |
| change_summary | VARCHAR(500) | 摘要 |
| change_status | TINYINT | 0进行中1完成2驳回 |
| change_time | **DATETIME** | 完成时间 |
| + 通用字段 | | |
### 8.8 filing_change_detail — 备案变更明细
> **作用**:备案变更字段级前后值对比明细。
> **关系**`change_record_id → filing_change_record`;只增不改。
原型「由张三变更为李四」「由152…变更为187…」。
| 字段 | 类型 | 说明 |
|------|------|------|
| change_record_id | BIGINT | 变更记录 |
| change_field / change_field_label | | 字段、展示名 |
| old_value / new_value | VARCHAR(500) | 变更前后 |
| create_time / create_by | | 仅创建 |
---
## 9. 业务流程与状态
### 9.1 机构认证org_info.cert_status
```
0草稿 --暂存/提交--> 1审核中 --通过--> 2已通过
└──驳回--> 3已驳回 --再提交--> 1审核中
```
### 9.2 备案申请向导
| current_step | 页面 | 表 |
|:--:|------|-----|
| 1 | 基本信息 + 上传附件 | filing_application + sys_attachment(org_intro) |
| 2 | 申请材料清单 | filing_application_material + sys_attachment |
| 3 | 人员信息 + 证书 | filing_application_staff + filing_application_staff_cert |
| 4 | 法定代表人承诺书 | filing_commitment + sys_attachment |
提交后 `apply_status` → 1/2监管审核通过 → 写入 `filing_record``filing_application.filing_record_id` 回写。
### 9.3 备案变更触发
机构存在有效 `filing_record` 时,以下变更应生成 `filing_change_record` + `filing_change_detail`,并 `change_count + 1`
- `staff_info` / `staff_certificate` 增删改
- `org_qualification_cert` 变更
- `org_info` 法人、联系方式等关键字段变更
### 9.4 人员离职
```
staff_resignation_apply.audit_status:
0未审核 --通过--> 1已审核 → staff_info.employment_status = 2
└──退回--> 2已退回
```
---
## 10. 索引与查询建议
1. 列表:`org_id + deleted + 状态字段 + create_time DESC`
2. 唯一键与逻辑删除:业务唯一键使用 `(code, deleted)` 组合,避免软删后无法重建
3. MyBatis-Plus 全局:`@TableLogic` 自动追加 `deleted = 0`
4. 流水表不加 `deleted`,不做更新
5. 大 JSONsnapshot_json可按年归档
---
## 11. 表清单总览(共 24 张)
| # | 表名 | 作用 | 主要关联 | 通用字段 |
|---|------|------|----------|----------|
| 1 | sys_user | 登录账号与权限主体 | org_info ← org_id→ staff_info | 完整 |
| 2 | sys_region | 行政区划树 | 自关联 parent_id→ org_info / filing_* | 完整 |
| 3 | sys_dict | 字典类型 | → sys_dict_item | 完整 |
| 4 | sys_dict_item | 字典选项值 | sys_dict ← dict_id | 完整 |
| 5 | sys_attachment | 统一文件存储 | 逻辑关联各业务 biz_type+biz_id | 完整 |
| 6 | audit_record | 跨业务审核流水 | 逻辑关联各审核业务 | 仅 create |
| 7 | org_info | **机构租户根**、认证与主数据 | → 几乎全部 org_id 子表 | 完整 |
| 8 | org_certification_audit | 机构认证审核历史 | org_info ← org_id | 仅 create |
| 9 | org_qualification_cert | 机构资质证书 | org_info ← org_id→ sys_attachment | 完整 |
| 10 | org_department | 部门组织树 | org_info ← org_id→ org_position / staff_info | 完整 |
| 11 | org_position | 部门岗位 | org_department ← dept_id→ staff_info | 完整 |
| 12 | staff_info | 人员主数据 | org_info / dept / position / sys_user→ staff_* | 完整 |
| 13 | staff_certificate | 人员证书 | staff_info ← staff_id→ filing_staff_cert 快照 | 完整 |
| 14 | staff_change_log | 人员变更审计 | staff_info ← staff_id | 仅 create |
| 15 | staff_resignation_apply | 离职申请与审核 | staff_info ← staff_id→ sys_attachment | 完整 |
| 16 | equip_info | 仪器设备台账 | org_info ← org_id | 完整 |
| 17 | filing_application | **备案流程主表** | org_info / sys_region→ filing_* 子表 / filing_record | 完整 |
| 18 | filing_application_material | 备案材料步骤2 | filing_application ← application_id | 完整 |
| 19 | filing_application_staff | 备案人员快照步骤3 | filing_application ← application_id→ staff_cert 快照 | 完整 |
| 20 | filing_application_staff_cert | 备案人员证书快照 | filing_application_staff ← application_staff_id | 完整 |
| 21 | filing_commitment | 法人承诺书步骤4 | filing_application ← application_id1:1 | 完整 |
| 22 | filing_record | **已备案正式台账** | filing_application ← application_id→ filing_change_record | 完整 |
| 23 | filing_change_record | 备案变更批次 | filing_record ← filing_record_id→ change_detail | 完整 |
| 24 | filing_change_detail | 备案变更字段明细 | filing_change_record ← change_record_id | 仅 create |
> 各表详细说明见 **§3 数据表作用与关系说明**;字段定义见 **§4§8**。
---
## 12. DDL 脚本
完整建表见 [`database-schema.sql`](./database-schema.sql)。
---
## 13. 修订记录
| 版本 | 日期 | 说明 |
|------|------|------|
| v1.0 | 2026-06-17 | 初版 |
| v1.1 | 2026-06-17 | 对齐 MyBatis-Plus 通用字段DATE/DATETIME 区分;新增 filing_application_staff_cert附件统一 sys_attachment |
| v1.2 | 2026-06-17 | 补充每张表作用与关系说明§3、表清单关联列§11、字段节引用块 |