# 巫溪县安全评价在线监管一件事 — 数据库设计文档 > 版本:v1.2 > 依据:产品原型 PDF(设计文件 1–12) > 数据库:MySQL 8.0+ / InnoDB / utf8mb4_unicode_ci > ORM:MyBatis-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. 大 JSON(snapshot_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_id(1: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)、字段节引用块 |