zcloud_gbs_safetyDutyList/docs/安全责任清单表结构设计.md

567 lines
27 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 安全责任清单表结构设计
## 一、需求概述
### 1.1 业务流程
1. **股份端创建任务清单** → 填写(名称,级别,责任岗位,开关,创建公司,创建部门,创建人)
2. **根据任务清单ID进入任务列表** → 新建、查看
3. **下发** → 给某公司的执行人
4. **执行人按反馈周期按时提交反馈**
5. **清单已完成或已关闭后可评分**
### 1.2 反馈周期规则
| 周期类型 | 规则说明 |
|---------|---------|
| 每月 | 每个月必须要有反馈,否则判定为有异常并记录 |
| 每季度 | 按自然季度划分3个月为一个季度每个季度必须有一次反馈否则判定为异常 |
| 半年 | 按自然年划分6个月为半年每半年必须有一次反馈否则判定为异常 |
| 年 | 按自然年划分,每年必须有一次反馈,否则判定为异常 |
> **备注**:周期内可多次提交反馈
### 1.3 状态说明
- **已完成**:清单的周期时间结束
- **已关闭**:手动关闭
---
## 二、表结构设计
### 2.1 ER关系图
```
safety_accountability_task_list (任务清单表)
├── 1:N ──→ safety_accountability_task_detail (任务清单详细表)
│ │
│ ├── 1:N ──→ safety_accountability_feedback (执行反馈表)
│ │
│ └── 1:N ──→ safety_accountability_feedback_exception (反馈异常信息表)
└── 关联 ──→ 执行人信息user表
```
### 2.2 表清单
| 序号 | 表名 | 表中文名 | 说明 |
|-----|------|---------|------|
| 1 | safety_accountability_task_list | 任务清单表 | 存储任务清单主信息 |
| 2 | safety_accountability_task_detail | 任务清单详细表 | 存储任务详情及执行内容 |
| 3 | safety_accountability_feedback | 执行反馈表 | 存储执行人提交的反馈 |
| 4 | safety_accountability_feedback_exception | 反馈异常信息表 | 记录反馈异常信息 |
---
## 三、详细表结构
### 3.1 任务清单表 (safety_accountability_task_list)
**功能说明**:存储任务清单主信息,包括创建、下发、执行、评分等完整生命周期。
| 字段名 | 类型 | 是否必填 | 默认值 | 说明 |
|-------|------|---------|-------|------|
| id | bigint(20) | 是 | 自增 | 主键 |
| task_list_id | varchar(64) | 是 | - | 清单UUID业务主键 |
| task_list_name | varchar(255) | 是 | - | 清单名称 |
| task_level | tinyint(4) | 是 | - | 任务级别1-企业级 2-部门级 3-班组级 |
| responsibility_post | varchar(255) | 否 | NULL | 责任岗位 |
| switch_flag | tinyint(4) | 是 | 1 | 开启/关闭0-关 1-开 |
| status | tinyint(4) | 是 | 1 | 状态1-进行中 2-已完成 3-已关闭 |
| period_start_time | datetime | 是 | - | 执行周期开始时间 |
| period_end_time | datetime | 是 | - | 执行周期结束时间 |
| feedback_status | tinyint(4) | 否 | 1 | 反馈状态1-正常 2-存在异常 |
| score | decimal(5,2) | 否 | NULL | 评分数 |
| score_time | datetime | 否 | NULL | 评分时间 |
| score_user_id | bigint(20) | 否 | NULL | 评分人ID |
| score_user_name | varchar(50) | 否 | NULL | 评分人姓名 |
| score_department_id | bigint(20) | 否 | NULL | 评分部门ID |
| score_department_name | varchar(100) | 否 | NULL | 评分部门名称 |
| create_corp_id | bigint(20) | 否 | NULL | 创建公司ID |
| create_corp_name | varchar(100) | 否 | NULL | 创建公司名称 |
| create_department_id | bigint(20) | 否 | NULL | 创建部门ID |
| create_department_name | varchar(100) | 否 | NULL | 创建部门名称 |
| create_user_id | bigint(20) | 否 | NULL | 创建人ID |
| create_user_name | varchar(50) | 否 | NULL | 创建人姓名 |
| issue_status | tinyint(4) | 否 | 0 | 下发状态0-未下发 1-已下发 |
| issue_time | datetime | 否 | NULL | 下发时间 |
| issue_user_id | bigint(20) | 否 | NULL | 下发人ID |
| issue_user_name | varchar(50) | 否 | NULL | 下发人姓名 |
| execute_corp_id | bigint(20) | 否 | NULL | 执行公司ID |
| execute_corp_name | varchar(100) | 否 | NULL | 执行公司名称 |
| execute_department_id | bigint(20) | 否 | NULL | 执行部门ID |
| execute_department_name | varchar(100) | 否 | NULL | 执行部门名称 |
| execute_user_id | bigint(20) | 否 | NULL | 执行人员ID |
| execute_user_name | varchar(50) | 否 | NULL | 执行人员姓名 |
| close_time | datetime | 否 | NULL | 关闭时间 |
| close_user_id | bigint(20) | 否 | NULL | 关闭人ID |
| close_user_name | varchar(50) | 否 | NULL | 关闭人姓名 |
| close_reason | varchar(500) | 否 | NULL | 关闭原因 |
**索引设计**
| 索引名 | 索引类型 | 字段 |
|-------|---------|------|
| PRIMARY | 主键 | id |
| uk_task_list_id | 唯一索引 | task_list_id |
| idx_create_corp_id | 普通索引 | create_corp_id |
| idx_execute_corp_id | 普通索引 | execute_corp_id |
| idx_execute_user_id | 普通索引 | execute_user_id |
| idx_status | 普通索引 | status |
| idx_period_time | 普通索引 | period_start_time, period_end_time |
---
### 3.2 任务清单详细表 (safety_accountability_task_detail)
**功能说明**:存储任务详情,关联任务清单表,包含执行内容、反馈周期、评分等信息。
| 字段名 | 类型 | 是否必填 | 默认值 | 说明 |
|-------|------|---------|-------|------|
| id | bigint(20) | 是 | 自增 | 主键 |
| task_detail_id | varchar(64) | 是 | - | 任务详情UUID业务主键 |
| task_list_id | varchar(64) | 是 | - | 任务清单主键(关联任务清单表) |
| execute_content | text | 否 | NULL | 执行内容 |
| feedback_cycle | tinyint(4) | 是 | - | 反馈周期1-每月 2-季度 3-半年 4-年 |
| task_status | tinyint(4) | 是 | 1 | 任务状态1-进行中 2-已完成 3-已关闭 |
| feedback_status | tinyint(4) | 否 | 1 | 反馈状态1-正常 2-存在异常 |
| task_score | decimal(5,2) | 否 | NULL | 任务分值 |
| task_rating | decimal(5,2) | 否 | NULL | 任务评分 |
| score_time | datetime | 否 | NULL | 评分时间 |
| score_department_id | bigint(20) | 否 | NULL | 评分部门ID |
| score_department_name | varchar(100) | 否 | NULL | 评分部门名称 |
| score_user_id | bigint(20) | 否 | NULL | 评分人ID |
| score_user_name | varchar(50) | 否 | NULL | 评分人姓名 |
| current_period | varchar(20) | 否 | NULL | 当前周期标识 |
| last_feedback_time | datetime | 否 | NULL | 上次反馈时间 |
| last_feedback_period | varchar(20) | 否 | NULL | 上次反馈周期标识 |
| abnormal_count | int(11) | 否 | 0 | 异常次数(未按时反馈累计次数) |
**索引设计**
| 索引名 | 索引类型 | 字段 |
|-------|---------|------|
| PRIMARY | 主键 | id |
| uk_task_detail_id | 唯一索引 | task_detail_id |
| idx_task_list_id | 普通索引 | task_list_id |
| idx_task_status | 普通索引 | task_status |
| idx_feedback_status | 普通索引 | feedback_status |
| idx_current_period | 普通索引 | current_period |
---
### 3.3 执行反馈表 (safety_accountability_feedback)
**功能说明**:存储执行人提交的反馈信息,支持周期内多次反馈。
| 字段名 | 类型 | 是否必填 | 默认值 | 说明 |
|-------|------|---------|-------|------|
| id | bigint(20) | 是 | 自增 | 主键 |
| feedback_id | varchar(64) | 是 | - | 反馈UUID业务主键 |
| task_detail_id | varchar(64) | 是 | - | 任务详情UUID关联任务清单详细表 |
| task_list_id | varchar(64) | 是 | - | 任务清单UUID冗余字段便于查询 |
| feedback_period | varchar(20) | 是 | - | 反馈周期标识 |
| feedback_cycle | tinyint(4) | 是 | - | 反馈周期类型1-每月 2-季度 3-半年 4-年 |
| feedback_content | text | 否 | NULL | 反馈内容 |
| feedback_time | datetime | 是 | - | 反馈时间 |
| feedback_user_id | bigint(20) | 否 | NULL | 反馈人ID |
| feedback_user_name | varchar(50) | 否 | NULL | 反馈人姓名 |
| feedback_corp_id | bigint(20) | 否 | NULL | 反馈人公司ID |
| feedback_corp_name | varchar(100) | 否 | NULL | 反馈人公司名称 |
| feedback_department_id | bigint(20) | 否 | NULL | 反馈人部门ID |
| feedback_department_name | varchar(100) | 否 | NULL | 反馈人部门名称 |
| is_ontime | tinyint(4) | 否 | 1 | 是否按时反馈1-是 0-否 |
**索引设计**
| 索引名 | 索引类型 | 字段 |
|-------|---------|------|
| PRIMARY | 主键 | id |
| uk_feedback_id | 唯一索引 | feedback_id |
| idx_task_detail_id | 普通索引 | task_detail_id |
| idx_task_list_id | 普通索引 | task_list_id |
| idx_feedback_period | 普通索引 | feedback_period |
| idx_feedback_user_id | 普通索引 | feedback_user_id |
| idx_feedback_time | 普通索引 | feedback_time |
---
### 3.4 反馈异常信息表 (safety_accountability_feedback_exception)
**功能说明**:记录反馈异常信息,包括未按时反馈等情况。
| 字段名 | 类型 | 是否必填 | 默认值 | 说明 |
|-------|------|---------|-------|------|
| id | bigint(20) | 是 | 自增 | 主键 |
| exception_id | varchar(64) | 是 | - | 反馈异常UUID业务主键 |
| task_detail_id | varchar(64) | 是 | - | 任务详情主键(关联任务清单详细表) |
| task_list_id | varchar(64) | 否 | NULL | 任务清单主键(冗余字段) |
| feedback_id | varchar(64) | 否 | NULL | 关联的反馈ID如果是反馈触发的异常 |
| exception_period | varchar(20) | 否 | NULL | 异常周期标识 |
| exception_type | tinyint(4) | 是 | - | 异常类型1-未按时反馈 2-反馈内容异常 3-其他 |
| exception_info | text | 否 | NULL | 反馈异常信息 |
| exception_time | datetime | 否 | CURRENT_TIMESTAMP | 异常时间 |
| handle_status | tinyint(4) | 否 | 0 | 处理状态0-未处理 1-已处理 |
| handle_time | datetime | 否 | NULL | 处理时间 |
| handle_user_id | bigint(20) | 否 | NULL | 处理人ID |
| handle_user_name | varchar(50) | 否 | NULL | 处理人姓名 |
| handle_remark | varchar(500) | 否 | NULL | 处理备注 |
**索引设计**
| 索引名 | 索引类型 | 字段 |
|-------|---------|------|
| PRIMARY | 主键 | id |
| uk_exception_id | 唯一索引 | exception_id |
| idx_task_detail_id | 普通索引 | task_detail_id |
| idx_task_list_id | 普通索引 | task_list_id |
| idx_exception_type | 普通索引 | exception_type |
| idx_exception_period | 普通索引 | exception_period |
| idx_handle_status | 普通索引 | handle_status |
---
## 四、通用字段说明
所有表均包含以下通用字段:
| 字段名 | 类型 | 默认值 | 说明 |
|-------|------|-------|------|
| delete_enum | varchar(32) | 'FALSE' | 删除标识TRUE/FALSE |
| remarks | varchar(500) | NULL | 备注 |
| create_name | varchar(50) | NULL | 创建人姓名 |
| update_name | varchar(50) | NULL | 更新人姓名 |
| tenant_id | bigint(20) | NULL | 租户ID |
| org_id | bigint(20) | NULL | 单位ID |
| version | int(11) | 0 | 版本 |
| create_time | datetime | CURRENT_TIMESTAMP | 创建时间 |
| update_time | datetime | CURRENT_TIMESTAMP ON UPDATE | 修改时间 |
| create_id | bigint(20) | NULL | 创建人ID |
| update_id | bigint(20) | NULL | 修改人ID |
| env | varchar(50) | NULL | 环境标识 |
---
## 五、周期标识格式说明
### 5.1 周期标识格式定义
| 周期类型 | 周期标识格式 | 示例 | 说明 |
|---------|-------------|------|------|
| 每月 | `yyyy-MM` | `2026-05` | 表示2026年5月 |
| 每季度 | `yyyy-Qn` | `2026-Q1`、`2026-Q2`、`2026-Q3`、`2026-Q4` | Q1-Q4分别表示四个季度 |
| 半年 | `yyyy-Hn` | `2026-H1`、`2026-H2` | H1表示上半年H2表示下半年 |
| 年 | `yyyy` | `2026` | 表示2026年整年 |
### 5.2 季度划分规则
| 季度 | 包含月份 | 周期标识示例 |
|-----|---------|-------------|
| Q1第一季度 | 1月、2月、3月 | 2026-Q1 |
| Q2第二季度 | 4月、5月、6月 | 2026-Q2 |
| Q3第三季度 | 7月、8月、9月 | 2026-Q3 |
| Q4第四季度 | 10月、11月、12月 | 2026-Q4 |
### 5.3 半年划分规则
| 半年 | 包含月份 | 周期标识示例 |
|-----|---------|-------------|
| H1上半年 | 1月-6月 | 2026-H1 |
| H2下半年 | 7月-12月 | 2026-H2 |
---
## 六、设计优化说明
### 6.1 任务清单表优化
| 优化项 | 原设计 | 优化后 | 优化原因 |
|-------|-------|-------|---------|
| 下发相关字段 | 无 | 新增下发状态、下发时间、下发人 | 支持下发流程跟踪 |
| 关闭相关字段 | 无 | 新增关闭时间、关闭人、关闭原因 | 支持手动关闭记录 |
| 评分相关字段 | 评分数 | 新增评分时间、评分人、评分部门 | 完善评分信息 |
| 名称字段 | 无 | 新增创建公司名称、创建部门名称、执行公司名称等 | 减少关联查询,提升查询效率 |
### 6.2 任务详情表优化
| 优化项 | 原设计 | 优化后 | 优化原因 |
|-------|-------|-------|---------|
| 当前周期标识 | 无 | current_period | 快速判断当前应反馈的周期 |
| 上次反馈信息 | 无 | last_feedback_time, last_feedback_period | 追踪反馈历史 |
| 异常次数统计 | 无 | abnormal_count | 便于统计和展示异常情况 |
### 6.3 反馈表优化
| 优化项 | 原设计 | 优化后 | 优化原因 |
|-------|-------|-------|---------|
| 周期标识 | 反馈周期 | feedback_period具体周期标识 | 精确判断是否按时反馈 |
| 是否按时 | 无 | is_ontime | 便于统计按时/逾期反馈 |
| 冗余字段 | 无 | task_list_id | 减少关联查询,提升查询效率 |
| 反馈人详细信息 | 反馈人 | 新增反馈人公司、部门信息 | 完整记录反馈人信息 |
### 6.4 异常表优化
| 优化项 | 原设计 | 优化后 | 优化原因 |
|-------|-------|-------|---------|
| 异常类型 | 无 | exception_type | 区分不同类型的异常 |
| 处理相关字段 | 无 | 新增处理状态、处理时间、处理人、处理备注 | 支持异常处理流程 |
| 关联反馈 | 无 | feedback_id | 关联触发异常的反馈记录 |
---
## 七、完整建表SQL
```sql
-- =============================================
-- 任务清单表
-- =============================================
CREATE TABLE `safety_accountability_task_list` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`task_list_id` varchar(64) NOT NULL COMMENT '清单UUID业务主键',
`task_list_name` varchar(255) NOT NULL COMMENT '清单名称',
`task_level` tinyint(4) NOT NULL COMMENT '任务级别1-企业级 2-部门级 3-班组级',
`responsibility_post` varchar(255) DEFAULT NULL COMMENT '责任岗位',
`switch_flag` tinyint(4) NOT NULL DEFAULT '1' COMMENT '开启/关闭0-关 1-开',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态1-进行中 2-已完成 3-已关闭',
`period_start_time` datetime NOT NULL COMMENT '执行周期开始时间',
`period_end_time` datetime NOT NULL COMMENT '执行周期结束时间',
`feedback_status` tinyint(4) DEFAULT '1' COMMENT '反馈状态1-正常 2-存在异常',
`score` decimal(5,2) DEFAULT NULL COMMENT '评分数',
`score_time` datetime DEFAULT NULL COMMENT '评分时间',
`score_user_id` bigint(20) DEFAULT NULL COMMENT '评分人ID',
`score_user_name` varchar(50) DEFAULT NULL COMMENT '评分人姓名',
`score_department_id` bigint(20) DEFAULT NULL COMMENT '评分部门ID',
`score_department_name` varchar(100) DEFAULT NULL COMMENT '评分部门名称',
`create_corp_id` bigint(20) DEFAULT NULL COMMENT '创建公司ID',
`create_corp_name` varchar(100) DEFAULT NULL COMMENT '创建公司名称',
`create_department_id` bigint(20) DEFAULT NULL COMMENT '创建部门ID',
`create_department_name` varchar(100) DEFAULT NULL COMMENT '创建部门名称',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
`create_user_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`issue_status` tinyint(4) DEFAULT '0' COMMENT '下发状态0-未下发 1-已下发',
`issue_time` datetime DEFAULT NULL COMMENT '下发时间',
`issue_user_id` bigint(20) DEFAULT NULL COMMENT '下发人ID',
`issue_user_name` varchar(50) DEFAULT NULL COMMENT '下发人姓名',
`execute_corp_id` bigint(20) DEFAULT NULL COMMENT '执行公司ID',
`execute_corp_name` varchar(100) DEFAULT NULL COMMENT '执行公司名称',
`execute_department_id` bigint(20) DEFAULT NULL COMMENT '执行部门ID',
`execute_department_name` varchar(100) DEFAULT NULL COMMENT '执行部门名称',
`execute_user_id` bigint(20) DEFAULT NULL COMMENT '执行人员ID',
`execute_user_name` varchar(50) DEFAULT NULL COMMENT '执行人员姓名',
`close_time` datetime DEFAULT NULL COMMENT '关闭时间',
`close_user_id` bigint(20) DEFAULT NULL COMMENT '关闭人ID',
`close_user_name` varchar(50) DEFAULT NULL COMMENT '关闭人姓名',
`close_reason` varchar(500) DEFAULT NULL COMMENT '关闭原因',
`delete_enum` varchar(32) DEFAULT 'FALSE' COMMENT '删除标识TRUE/FALSE',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
`org_id` bigint(20) DEFAULT NULL COMMENT '单位ID',
`version` int(11) DEFAULT '0' COMMENT '版本',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`create_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint(20) DEFAULT NULL COMMENT '修改人ID',
`env` varchar(50) DEFAULT NULL COMMENT '环境标识',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_task_list_id` (`task_list_id`),
KEY `idx_create_corp_id` (`create_corp_id`),
KEY `idx_execute_corp_id` (`execute_corp_id`),
KEY `idx_execute_user_id` (`execute_user_id`),
KEY `idx_status` (`status`),
KEY `idx_period_time` (`period_start_time`, `period_end_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务清单表';
-- =============================================
-- 任务清单详细表
-- =============================================
CREATE TABLE `safety_accountability_task_detail` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`task_detail_id` varchar(64) NOT NULL COMMENT '任务详情UUID业务主键',
`task_list_id` varchar(64) NOT NULL COMMENT '任务清单主键(关联任务清单表)',
`execute_content` text COMMENT '执行内容',
`feedback_cycle` tinyint(4) NOT NULL COMMENT '反馈周期1-每月 2-季度 3-半年 4-年',
`task_status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务状态1-进行中 2-已完成 3-已关闭',
`feedback_status` tinyint(4) DEFAULT '1' COMMENT '反馈状态1-正常 2-存在异常',
`task_score` decimal(5,2) DEFAULT NULL COMMENT '任务分值',
`task_rating` decimal(5,2) DEFAULT NULL COMMENT '任务评分',
`score_time` datetime DEFAULT NULL COMMENT '评分时间',
`score_department_id` bigint(20) DEFAULT NULL COMMENT '评分部门ID',
`score_department_name` varchar(100) DEFAULT NULL COMMENT '评分部门名称',
`score_user_id` bigint(20) DEFAULT NULL COMMENT '评分人ID',
`score_user_name` varchar(50) DEFAULT NULL COMMENT '评分人姓名',
`current_period` varchar(20) DEFAULT NULL COMMENT '当前周期标识格式2026-05表示月2026-Q1表示季度2026-H1表示半年2026表示年',
`last_feedback_time` datetime DEFAULT NULL COMMENT '上次反馈时间',
`last_feedback_period` varchar(20) DEFAULT NULL COMMENT '上次反馈周期标识',
`abnormal_count` int(11) DEFAULT '0' COMMENT '异常次数(未按时反馈累计次数)',
`delete_enum` varchar(32) DEFAULT 'FALSE' COMMENT '删除标识TRUE/FALSE',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
`org_id` bigint(20) DEFAULT NULL COMMENT '单位ID',
`version` int(11) DEFAULT '0' COMMENT '版本',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`create_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint(20) DEFAULT NULL COMMENT '修改人ID',
`env` varchar(50) DEFAULT NULL COMMENT '环境标识',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_task_detail_id` (`task_detail_id`),
KEY `idx_task_list_id` (`task_list_id`),
KEY `idx_task_status` (`task_status`),
KEY `idx_feedback_status` (`feedback_status`),
KEY `idx_current_period` (`current_period`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务清单详细表';
-- =============================================
-- 执行反馈表
-- =============================================
CREATE TABLE `safety_accountability_feedback` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`feedback_id` varchar(64) NOT NULL COMMENT '反馈UUID业务主键',
`task_detail_id` varchar(64) NOT NULL COMMENT '任务详情UUID关联任务清单详细表',
`task_list_id` varchar(64) NOT NULL COMMENT '任务清单UUID冗余字段便于查询',
`feedback_period` varchar(20) NOT NULL COMMENT '反馈周期标识格式2026-05表示月2026-Q1表示季度2026-H1表示半年2026表示年',
`feedback_cycle` tinyint(4) NOT NULL COMMENT '反馈周期类型1-每月 2-季度 3-半年 4-年',
`feedback_content` text COMMENT '反馈内容',
`feedback_time` datetime NOT NULL COMMENT '反馈时间',
`feedback_user_id` bigint(20) DEFAULT NULL COMMENT '反馈人ID',
`feedback_user_name` varchar(50) DEFAULT NULL COMMENT '反馈人姓名',
`feedback_corp_id` bigint(20) DEFAULT NULL COMMENT '反馈人公司ID',
`feedback_corp_name` varchar(100) DEFAULT NULL COMMENT '反馈人公司名称',
`feedback_department_id` bigint(20) DEFAULT NULL COMMENT '反馈人部门ID',
`feedback_department_name` varchar(100) DEFAULT NULL COMMENT '反馈人部门名称',
`is_ontime` tinyint(4) DEFAULT '1' COMMENT '是否按时反馈1-是 0-否',
`delete_enum` varchar(32) DEFAULT 'FALSE' COMMENT '删除标识TRUE/FALSE',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
`org_id` bigint(20) DEFAULT NULL COMMENT '单位ID',
`version` int(11) DEFAULT '0' COMMENT '版本',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`create_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint(20) DEFAULT NULL COMMENT '修改人ID',
`env` varchar(50) DEFAULT NULL COMMENT '环境标识',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_feedback_id` (`feedback_id`),
KEY `idx_task_detail_id` (`task_detail_id`),
KEY `idx_task_list_id` (`task_list_id`),
KEY `idx_feedback_period` (`feedback_period`),
KEY `idx_feedback_user_id` (`feedback_user_id`),
KEY `idx_feedback_time` (`feedback_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='执行反馈表';
-- =============================================
-- 反馈异常信息表
-- =============================================
CREATE TABLE `safety_accountability_feedback_exception` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`exception_id` varchar(64) NOT NULL COMMENT '反馈异常UUID业务主键',
`task_detail_id` varchar(64) NOT NULL COMMENT '任务详情主键(关联任务清单详细表)',
`task_list_id` varchar(64) DEFAULT NULL COMMENT '任务清单主键(冗余字段)',
`feedback_id` varchar(64) DEFAULT NULL COMMENT '关联的反馈ID如果是反馈触发的异常',
`exception_period` varchar(20) DEFAULT NULL COMMENT '异常周期标识',
`exception_type` tinyint(4) NOT NULL COMMENT '异常类型1-未按时反馈 2-反馈内容异常 3-其他',
`exception_info` text COMMENT '反馈异常信息',
`exception_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '异常时间',
`handle_status` tinyint(4) DEFAULT '0' COMMENT '处理状态0-未处理 1-已处理',
`handle_time` datetime DEFAULT NULL COMMENT '处理时间',
`handle_user_id` bigint(20) DEFAULT NULL COMMENT '处理人ID',
`handle_user_name` varchar(50) DEFAULT NULL COMMENT '处理人姓名',
`handle_remark` varchar(500) DEFAULT NULL COMMENT '处理备注',
`delete_enum` varchar(32) DEFAULT 'FALSE' COMMENT '删除标识TRUE/FALSE',
`remarks` varchar(500) DEFAULT NULL COMMENT '备注',
`create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
`update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
`org_id` bigint(20) DEFAULT NULL COMMENT '单位ID',
`version` int(11) DEFAULT '0' COMMENT '版本',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`create_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
`update_id` bigint(20) DEFAULT NULL COMMENT '修改人ID',
`env` varchar(50) DEFAULT NULL COMMENT '环境标识',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_exception_id` (`exception_id`),
KEY `idx_task_detail_id` (`task_detail_id`),
KEY `idx_task_list_id` (`task_list_id`),
KEY `idx_exception_type` (`exception_type`),
KEY `idx_exception_period` (`exception_period`),
KEY `idx_handle_status` (`handle_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='反馈异常信息表';
```
---
## 八、业务流程数据流转示例
### 8.1 创建任务清单流程
```
1. 股份端用户创建任务清单
INSERT INTO safety_accountability_task_list
(task_list_id, task_list_name, task_level, ..., status=1, issue_status=0)
2. 添加任务详情
INSERT INTO safety_accountability_task_detail
(task_detail_id, task_list_id, execute_content, feedback_cycle, ...)
```
### 8.2 下发任务流程
```
1. 选择执行人,下发任务
UPDATE safety_accountability_task_list
SET issue_status=1, issue_time=NOW(),
execute_corp_id=xxx, execute_user_id=xxx, ...
WHERE task_list_id=xxx
```
### 8.3 提交反馈流程
```
1. 执行人提交反馈
INSERT INTO safety_accountability_feedback
(feedback_id, task_detail_id, feedback_period, feedback_content, ...)
2. 更新任务详情
UPDATE safety_accountability_task_detail
SET last_feedback_time=NOW(), last_feedback_period='2026-Q1', ...
WHERE task_detail_id=xxx
```
### 8.4 异常记录流程
```
1. 定时任务检测未按时反馈
INSERT INTO safety_accountability_feedback_exception
(exception_id, task_detail_id, exception_type=1, exception_period='2026-Q1', ...)
2. 更新异常次数
UPDATE safety_accountability_task_detail
SET abnormal_count=abnormal_count+1, feedback_status=2
WHERE task_detail_id=xxx
```
---
## 九、注意事项
1. **周期判断逻辑**:需要在应用层或定时任务中实现周期判断逻辑,自动检测是否按时反馈
2. **索引优化**:根据实际查询场景,可能需要调整或添加复合索引
3. **数据量预估**:反馈表数据量可能较大,建议定期归档历史数据
4. **并发控制**:使用 `version` 字段实现乐观锁,防止并发更新冲突