# 隐患排查审核不通过重提方案

## 目标

- 支持企业审核不通过后，驾驶员再次编辑并重新提交。
- 每次审核不通过时，保存当次提交快照、驳回原因、照片、签名等信息。
- 详情接口可返回多次审核不通过历史，便于企业端查看。

## 后端改动

### 主表 `hot_hidden_danger_inspection`

新增字段：

- `submit_version`：提交版本号
- `audit_result`：审核结果，`PASS` / `REJECT`
- `reject_count`：驳回次数
- `last_reject_reason`：最近一次驳回原因
- `last_reject_time`：最近一次驳回时间
- `last_reject_by_id`：最近一次驳回人ID
- `last_reject_by_name`：最近一次驳回人姓名

### 新表 `hot_hidden_danger_inspection_audit_history`

用于保存每次审核不通过时的完整快照：

- 主单ID、计划ID、项目信息
- 提交版本号、审核轮次
- 驳回原因、审核人、审核时间、审核签名
- 当次排查内容、隐患描述、附件、排查人签名、排查人、排查时间
- `submit_snapshot_json` 作为完整快照冗余

## 业务逻辑

### 驾驶员提交

- 首次提交时，沿用原有 `updateByBo` 提交流程。
- 驳回后再次编辑提交时，只要主单已经被回调置为：
  - `status = 1`
  - `flow_status = REJECTED`
  - `instance_id = null`
- 再次保存后会重新启动 `HIDDEN_DANGER_CHECK` 流程。
- 每次重提时：
  - `submit_version + 1`
  - 清空上一轮审核结论、审核签名、评估人等中间字段
  - 状态回到 `status = 2`

### 企业审核

审核新增两种结果：

- `PASS`：审核通过
- `REJECT`：审核不通过

处理规则：

- `PASS + auditHasDanger = 0`
  - 流程通过
  - 主单最终状态在回调中置为 `3`
- `PASS + auditHasDanger = 1`
  - 流程通过
  - 主单在回调中置为 `6`
  - 自动创建隐患治理流程
- `REJECT`
  - 先写入驳回历史表
  - 主单记录最近一次驳回信息
  - 流程按驳回处理
  - 回调把主单恢复为可再次编辑状态

### 流程回调

`HiddenDangerCheckCallback` 调整为：

- 成功：
  - `flow_status = APPROVED`
  - 无隐患：`status = 3`
  - 有隐患：`status = 6`
  - 仅在成功且存在隐患时创建治理流程
- 驳回：
  - `flow_status = REJECTED`
  - `status = 1`
  - `instance_id = null`
  - 允许驾驶员再次提交

## 详情接口

`queryById` 返回主单详情时，额外附带：

- `rejectHistoryList`

该字段按驳回轮次倒序返回，可直接给前端做历史展开。

## SQL 文件

SQL 已写入：

- `sql/update_hidden_danger_inspection_reject_history.sql`

## 注意事项

- 当前版本只改后端，未改前端和移动端展示。
- 前端后续只要在详情页读取 `rejectHistoryList` 即可展示多次驳回历史。
- 审核接口调用时建议明确传 `auditResult`，不要再仅依赖 `auditHasDanger` 推断审核结果。
