zcloud_gbs_safetyDutyList/docs/安全责任清单接口文档.md

1246 lines
38 KiB
Markdown
Raw Normal View History

2026-05-21 14:12:22 +08:00
# 安全责任清单接口文档
## 一、概述
### 1.1 项目结构
项目采用六边形架构Hexagonal Architecture遵循 CQRS 模式:
```
zcloud_gbs_safety_accountability_list/
├── start/ # 应用启动入口
├── web-adapter/ # 控制器层REST API
├── web-app/ # 应用服务层Command/Query 执行器)
├── web-domain/ # 领域模型层
├── web-infrastructure/ # 基础设施层(持久化实现)
└── web-client/ # 客户端层DTO、CO、Cmd、Qry
```
### 1.2 模块职责
| 模块 | 职责 |
|-----|------|
| web-adapter | Controller 层,负责接收 HTTP 请求,调用 Service |
| web-app | 应用层,包含 Command写操作和 Query读操作执行器 |
| web-domain | 领域层包含领域模型、枚举、Gateway 接口 |
| web-infrastructure | 基础设施层,包含 DO、Repository、Mapper 实现 |
| web-client | 客户端层,包含 DTOCmd、Qry和 COClient Object |
### 1.3 命名规范
| 类型 | 命名规范 | 示例 |
|-----|---------|------|
| Controller | `{Entity}Controller` | `TaskListController` |
| Service 接口 | `{Entity}ServiceI` | `TaskListServiceI` |
| Command | `{Entity}AddCmd`、`{Entity}UpdateCmd` | `TaskListAddCmd` |
| Query | `{Entity}PageQry`、`{Entity}Qry` | `TaskListPageQry` |
| Client Object | `{Entity}CO` | `TaskListCO` |
| Data Object | `{Entity}DO` | `TaskListDO` |
| Gateway | `{Entity}Gateway` | `TaskListGateway` |
| Repository | `{Entity}Repository` | `TaskListRepository` |
| Mapper | `{Entity}Mapper` | `TaskListMapper` |
| AddExe | `{Entity}AddExe` | `TaskListAddExe` |
| QueryExe | `{Entity}QueryExe` | `TaskListQueryExe` |
| Convertor | `{Entity}CoConvertor` | `TaskListCoConvertor` |
### 1.4 响应结构规范
项目使用 COLA 框架的响应类,位于 `com.alibaba.cola.dto` 包下:
| 响应类 | 说明 | 使用场景 |
|-------|------|---------|
| `SingleResponse<T>` | 单条数据响应 | 新增、修改、详情查询等返回单个对象 |
| `PageResponse<T>` | 分页数据响应 | 列表分页查询 |
| `MultiResponse<T>` | 多条数据响应 | 不分页的列表查询 |
| `Response` | 无数据响应 | 删除、关闭等无返回数据的操作 |
**响应结构示例**
```java
// SingleResponse<T> - 单条数据响应
{
"code": "200",
"message": "success",
"data": { ... }
}
// PageResponse<T> - 分页数据响应
{
"code": "200",
"message": "success",
"data": [ ... ],
"totalCount": 100,
"pageSize": 10,
"pageIndex": 1
}
// MultiResponse<T> - 多条数据响应
{
"code": "200",
"message": "success",
"data": [ ... ]
}
// Response - 无数据响应
{
"code": "200",
"message": "success"
}
```
**Controller 使用示例**
```java
// 新增 - 返回单条数据
@PostMapping("/save")
public SingleResponse<TaskListCO> add(@RequestBody TaskListAddCmd cmd) {
return taskListService.add(cmd);
}
// 分页查询 - 返回分页数据
@PostMapping("/list")
public PageResponse<TaskListCO> list(@RequestBody TaskListPageQry qry) {
return taskListService.listPage(qry);
}
// 列表查询(不分页) - 返回多条数据
@PostMapping("/listAll")
public MultiResponse<TaskListCO> listAll(@RequestBody TaskListQry qry) {
return MultiResponse.of(taskListService.listAll(qry));
}
// 删除 - 无数据返回
@PostMapping("/{id}")
public Response remove(@PathVariable("id") Long id) {
taskListService.remove(id);
return SingleResponse.buildSuccess();
}
```
### 1.5 表清单
| 序号 | 表名 | 表中文名 |
|-----|------|---------|
| 1 | safety_accountability_task_list | 任务清单表 |
| 2 | safety_accountability_task_detail | 任务清单详细表 |
| 3 | safety_accountability_feedback | 执行反馈表 |
| 4 | safety_accountability_feedback_exception | 反馈异常信息表 |
```
建表语句:
-- =============================================
-- 任务清单表
-- =============================================
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(2) NOT NULL COMMENT '任务级别1-企业级 2-部门级 3-班组级',
`responsibility_post` varchar(255) DEFAULT NULL COMMENT '责任岗位',
`switch_flag` tinyint(1) NOT NULL DEFAULT '1' COMMENT '开启/关闭0-关 1-开',
`status` tinyint(2) NOT NULL DEFAULT '1' COMMENT '状态1-进行中 2-已完成 3-已关闭',
`period_start_time` datetime NOT NULL COMMENT '执行周期开始时间',
`period_end_time` datetime NOT NULL COMMENT '执行周期结束时间',
`score` decimal(5,2) DEFAULT NULL COMMENT '评分数',
`score_user_id` bigint(20) DEFAULT NULL COMMENT '评分人ID',
`score_department_id` bigint(20) DEFAULT NULL COMMENT '评分部门ID',
`create_corp_id` bigint(20) DEFAULT NULL COMMENT '创建公司ID',
`create_department_id` bigint(20) DEFAULT NULL COMMENT '创建部门ID',
`create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人ID',
`issue_status` tinyint(4) DEFAULT '0' COMMENT '下发状态0-未下发 1-已下发',
`issue_time` datetime DEFAULT NULL COMMENT '下发时间',
`execute_corp_id` bigint(20) DEFAULT NULL COMMENT '执行公司ID',
`execute_department_id` bigint(20) DEFAULT NULL COMMENT '执行部门ID',
`execute_user_id` bigint(20) DEFAULT NULL COMMENT '执行人员ID',
`close_time` datetime 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_user_id` bigint(20) DEFAULT NULL COMMENT '评分人ID',
`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`)
) 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_time` datetime NOT NULL COMMENT '反馈时间',
`feedback_period_start_time` datetime NOT NULL COMMENT '反馈周期开始时间(用于回显)',
`feedback_period_end_time` datetime NOT NULL COMMENT '反馈周期结束时间(用于回显)',
`feedback_period_flag` varchar(20) NOT NULL COMMENT '反馈周期标识格式2026-05表示月2026-Q1表示季度2026-H1表示半年2026表示年',
`feedback_content` text COMMENT '反馈内容',
`feedback_user_id` bigint(20) DEFAULT NULL COMMENT '反馈人ID',
`feedback_corp_id` bigint(20) DEFAULT NULL COMMENT '反馈人公司ID',
`feedback_department_id` bigint(20) DEFAULT NULL COMMENT '反馈人部门ID',
`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_time` (`feedback_time`),
KEY `idx_feedback_period_flag` (`feedback_period_flag`),
KEY `idx_feedback_user_id` (`feedback_user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='执行反馈表';
-- =============================================
-- 反馈异常信息表
-- =============================================
CREATE TABLE `safety_accountability_feedback_exception` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`feedback_exception_id` varchar(64) NOT NULL COMMENT '反馈异常UUID业务主键',
`task_detail_id` varchar(64) NOT NULL COMMENT '任务详情主键(关联任务清单详细表)',
`task_list_id` varchar(64) DEFAULT NULL COMMENT '任务清单主键(冗余字段)',
`exception_period_flag` varchar(20) DEFAULT NULL COMMENT '异常周期标识',
`feedback_exception_period_time` varchar(255) DEFAULT NULL COMMENT '反馈周期(用于回显)',
`exception_type` tinyint(4) DEFAULT 1 COMMENT '异常类型1-未按时反馈 2-反馈内容异常 3-其他',
`exception_content` text COMMENT '反馈异常信息',
`exception_time` datetime 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_feedback_exception_id` (`feedback_exception_id`),
KEY `idx_task_detail_id` (`task_detail_id`),
KEY `idx_task_list_id` (`task_list_id`),
KEY `idx_exception_period` (`exception_period`),
KEY `idx_exception_type` (`exception_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='反馈异常信息表';
```
---
## 二、枚举值说明
### 2.1 任务级别 (taskLevel)
| 值 | 说明 |
|---|------|
| 1 | 企业级 |
| 2 | 部门级 |
| 3 | 班组级 |
### 2.2 任务状态 (status)
| 值 | 说明 |
|---|------|
| 1 | 进行中 |
| 2 | 已完成 |
| 3 | 已关闭 |
### 2.3 反馈周期 (feedbackCycle)
| 值 | 说明 | 周期标识格式 |
|---|------|---------|
| 1 | 每月 | 2026-05 |
| 2 | 每季度 | 2026-Q1 |
| 3 | 半年 | 2026-H1 |
| 4 | 年 | 2026-Y |
### 2.4 反馈状态 (feedbackStatus)
| 值 | 说明 |
|---|----|
| 1 | 正常 |
| 2 | 异常 |
### 2.5 开关状态 (switchFlag)
| 值 | 说明 |
|---|------|
| 0 | 关闭 |
| 1 | 开启 |
### 2.6 异常类型 (exceptionType)
| 值 | 说明 |
|---|------|
| 1 | 未按时反馈 |
| 2 | 反馈内容异常 |
| 3 | 其他 |
### 2.7 评分状态 (scoreStatus)
| 值 | 说明 |
|---|------|
| 0 | 未评分 |
| 1 | 已评分 |
---
## 三、任务清单接口
### 3.1 获取任务清单列表
**接口路径**`POST /{gateway}/safetyAccountability/taskList/list`
**接口描述**:分页查询任务清单列表
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| pageIndex | Integer | 是 | 页码 |
| pageSize | Integer | 是 | 每页条数 |
| corpId | Long | 否 | 公司ID |
| taskListName | String | 否 | 清单名称(模糊查询) |
| taskLevel | Integer | 否 | 任务级别1-企业级 2-部门级 3-班组级 |
| feedbackStatus | Integer | 否 | 反馈状态1-正常 2-存在异常 |
| switchFlag | Integer | 否 | 开关状态0-关 1-开 |
**请求示例**
```json
{
"pageIndex": 1,
"pageSize": 10,
"corpId": 100001,
"taskListName": "安全",
"taskLevel": 1,
"feedbackStatus": 1,
"switchFlag": 1
}
```
**响应参数**
| 参数名 | 类型 | 说明 |
|-------|------|------|
| id | Long | 主键ID |
| taskListId | String | 清单UUID业务主键 |
| taskListName | String | 清单名称 |
| taskLevel | Integer | 任务级别1-企业级 2-部门级 3-班组级 |
| responsibilityPost | String | 责任岗位 |
| switchFlag | Integer | 开关状态0-关 1-开 |
| status | Integer | 状态1-进行中 2-已完成 3-已关闭 |
| executeDepartmentId | Long | 执行部门ID |
| executeDepartmentName | String | 执行部门名称 |
| executeUserId | Long | 执行人员ID |
| executeUserName | String | 执行人员名称 |
| taskCount | Integer | 任务数 |
| periodStartTime | String | 执行周期开始时间 |
| periodEndTime | String | 执行周期结束时间 |
| taskStatus | Integer | 任务状态 1-进行中 2-已完成 3-已关闭|
| feedbackStatus | Integer | 反馈状态1-正常 2-异常 |
| scoreDepartmentId | Long | 评分部门ID |
| scoreDepartmentName | String | 评分部门名称 |
| scoreUserId | Long | 评分人员ID |
| scoreUserName | String | 评分人员名称 |
| score | BigDecimal | 清单分数 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": [
{
"id": 1,
"taskListId": "abc123def456",
"taskListName": "2026年度安全生产责任清单",
"taskLevel": 1,
"responsibilityPost": "安全员",
"switchFlag": 1,
"status": 1,
"executeDepartmentId": 200001,
"executeDepartmentName": "安全管理部",
"executeUserId": 300001,
"executeUserName": "张三",
"taskCount": 5,
"periodStartTime": "2026-01-01 00:00:00",
"periodEndTime": "2026-12-31 23:59:59",
"taskStatus": 1,
"feedbackStatus": 1,
"scoreDepartmentId": 200001,
"scoreDepartmentName": "安全管理部",
"scoreUserId": 400001,
"scoreUserName": "李四",
"score": 85.50
}
],
"totalCount": 100,
"pageSize": 10,
"pageIndex": 1
}
```
---
### 3.2 新增任务清单
**接口路径**`POST /{gateway}/safetyAccountability/taskList/save`
**接口描述**:新增任务清单
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| taskListName | String | 是 | 清单名称 |
| taskLevel | Integer | 是 | 任务级别1-企业级 2-部门级 3-班组级 |
| responsibilityPost | String | 否 | 责任岗位 |
| switchFlag | Integer | 是 | 是否启用0-关 1-开 |
**请求示例**
```json
{
"taskListName": "2026年度安全生产责任清单",
"taskLevel": 1,
"responsibilityPost": "安全员",
"switchFlag": 1
}
```
**响应参数**
| 参数名 | 类型 | 说明 |
|-------|------|------|
| id | Long | 主键ID |
| taskListId | String | 清单UUID业务主键 |
| taskListName | String | 清单名称 |
| taskLevel | Integer | 任务级别 |
| taskLevelName | String | 任务级别名称 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": {
"id": 1,
"taskListId": "abc123def456",
"taskListName": "2026年度安全生产责任清单",
"taskLevel": 1,
"taskLevelName": "企业级"
}
}
```
---
### 3.3 关闭清单
**接口路径**`POST /{gateway}/safetyAccountability/taskList/close`
**接口描述**:手动关闭任务清单
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| taskListId | String | 是 | 清单UUID |
**请求示例**
```json
{
"taskListId": "abc123def456"
}
```
**响应参数**:无
**响应示例**
```json
{
"code": "200",
"message": "success"
}
```
---
### 3.4 任务下发
**接口路径**`POST /{gateway}/safetyAccountability/taskList/issue`
**接口描述**:将任务清单下发给执行人(仅可下发开启状态的清单)
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| taskListId | String | 是 | 清单UUID仅开启状态的清单 |
| executeCorpId | Long | 是 | 执行公司ID |
| executeUserId | Long | 是 | 执行人员ID |
| periodStartTime | String | 是 | 执行周期开始日期格式yyyy-MM-dd HH:mm:ss |
| periodEndTime | String | 是 | 执行周期结束日期格式yyyy-MM-dd HH:mm:ss |
**请求示例**
```json
{
"taskListId": "abc123def456",
"executeCorpId": 100002,
"executeUserId": 300001,
"periodStartTime": "2026-01-01 00:00:00",
"periodEndTime": "2026-12-31 23:59:59"
}
```
**响应参数**:无
**响应示例**
```json
{
"code": "200",
"message": "success"
}
```
---
## 四、任务详情接口
### 4.1 获取任务列表
**接口路径**`POST /{gateway}/safetyAccountability/taskDetail/list`
**接口描述**根据清单ID分页查询任务列表
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| pageIndex | Integer | 是 | 页码 |
| pageSize | Integer | 是 | 每页条数 |
| taskListId | String | 是 | 清单表主键ID |
| executeContent | String | 否 | 执行内容(模糊查询) |
| periodStartTime | String | 否 | 任务周期开始时间 |
| periodEndTime | String | 否 | 任务周期结束时间 |
| feedbackCycle | Integer | 否 | 反馈周期1-每月 2-季度 3-半年 4-年 |
| feedbackStatus | Integer | 否 | 反馈状态1-正常 2-异常 |
| taskStatus | Integer | 否 | 任务状态1-进行中 2-已完成 3-已关闭 |
**请求示例**
```json
{
"pageIndex": 1,
"pageSize": 10,
"taskListId": "abc123def456",
"executeContent": "检查",
"feedbackCycle": 1,
"feedbackStatus": 1,
"taskStatus": 1
}
```
**响应参数**
| 参数名 | 类型 | 说明 |
|-------------------------------------|------|------|
| id | Long | 主键ID |
| taskDetailId | String | 任务详情UUID业务主键 |
| executeContent | String | 执行内容 |
| feedbackCycle | Integer | 反馈周期1-每月 2-季度 3-半年 4-年 |
| feedbackCycleName | String | 反馈周期名称 |
| taskScore | BigDecimal | 任务分值 |
| taskRating | BigDecimal | 当前得分(任务评分) |
| taskStatus | Integer | 任务状态1-进行中 2-已完成 3-已关闭 |
| taskStatusName | String | 任务状态名称 |
| feedbackCount | Integer | 反馈次数 |
| feedbackStatus | Integer | 反馈状态1-正常 2-存在异常 |
| feedbackStatusName | String | 反馈状态名称 |
| currentPeriodFeedback | Boolean | 当前节点是否反馈 |
| exceptionList | Array | 异常列表 |
| exceptionList[].exceptionPeriodFlag | String | 异常周期标识 |
| exceptionList[].exceptionPeriodTime | String | 异常周期 |
| exceptionList[].exceptionType | Integer | 异常类型1-未按时反馈 2-反馈内容异常 3-其他 |
| exceptionList[].exceptionTypeName | String | 异常类型名称 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": [
{
"id": 1,
"taskDetailId": "detail001",
"executeContent": "每月提交安全检查报告",
"feedbackCycle": 1,
"feedbackCycleName": "每月",
"taskScore": 10.00,
"taskRating": 9.50,
"taskStatus": 1,
"taskStatusName": "进行中",
"feedbackCount": 5,
"feedbackStatus": 1,
"feedbackStatusName": "正常",
"currentPeriodFeedback": true,
"exceptionList": [
{
"exceptionPeriodFlag": "2026-Q1",
"exceptionPeriodTime": "2026-01-01 - 2026-01-31",
"exceptionType": 1,
"exceptionTypeName": "未按时反馈"
}
]
}
],
"totalCount": 10,
"pageSize": 10,
"pageIndex": 1
}
```
---
### 4.2 新增任务
**接口路径**`POST /{gateway}/safetyAccountability/taskDetail/save`
**接口描述**新增任务详情当前清单总分不能超过100
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| taskListId | String | 是 | 清单表主键ID |
| executeContent | String | 否 | 执行内容 |
| feedbackCycle | Integer | 是 | 反馈周期1-每月 2-季度 3-半年 4-年 |
| taskScore | BigDecimal | 否 | 任务分值当前清单总分不能超过100 |
**请求示例**
```json
{
"taskListId": "abc123def456",
"executeContent": "每月提交安全检查报告",
"feedbackCycle": 1,
"taskScore": 10.00
}
```
**响应参数**
| 参数名 | 类型 | 说明 |
|-------|------|------|
| id | Long | 主键ID |
| taskDetailId | String | 任务详情UUID业务主键 |
| executeContent | String | 执行内容 |
| feedbackCycle | Integer | 反馈周期 |
| feedbackCycleName | String | 反馈周期名称 |
| taskScore | BigDecimal | 任务分值 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": {
"id": 1,
"taskDetailId": "detail001",
"executeContent": "每月提交安全检查报告",
"feedbackCycle": 1,
"feedbackCycleName": "每月",
"taskScore": 10.00
}
}
```
---
### 4.3 获取任务详情
**接口路径**`GET /{gateway}/safetyAccountability/taskDetail/{detailId}`
**接口描述**根据任务ID查询任务详情
**路径参数**
| 参数名 | 类型 | 必填 | 说明 |
|----------|--------|-----|-----------|
| detailId | String | 是 | 任务表业务主键ID |
**响应参数**
| 参数名 | 类型 | 说明 |
|-------|------|------|
| id | Long | 主键ID |
| taskDetailId | String | 任务详情UUID |
| taskListId | String | 清单表主键ID |
| taskListName | String | 清单名称 |
| taskLevel | Integer | 任务级别1-企业级 2-部门级 3-班组级 |
| taskLevelName | String | 任务级别名称 |
| responsibilityPost | String | 责任岗位 |
| feedbackCycle | Integer | 反馈周期1-每月 2-季度 3-半年 4-年 |
| feedbackCycleName | String | 反馈周期名称 |
| taskScore | BigDecimal | 任务分值 |
| executeContent | String | 执行内容 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": {
"id": 1,
"taskDetailId": "detail001",
"taskListId": "abc123def456",
"taskListName": "2026年度安全生产责任清单",
"taskLevel": 1,
"taskLevelName": "企业级",
"responsibilityPost": "安全员",
"feedbackCycle": 1,
"feedbackCycleName": "每月",
"taskScore": 10.00,
"executeContent": "每月提交安全检查报告"
}
}
```
---
### 4.4 关闭任务
**接口路径**`POST /{gateway}/safetyAccountability/taskDetail/close`
**接口描述**:手动关闭任务
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| taskDetailId | String | 是 | 任务UUID |
**请求示例**
```json
{
"taskDetailId": "detail001"
}
```
**响应参数**:无
**响应示例**
```json
{
"code": "200",
"message": "success"
}
```
---
### 4.5 更新任务评分
**接口路径**`POST /{gateway}/safetyAccountability/taskDetail/updateScore`
**接口描述**:对任务进行评分
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| taskDetailId | String | 是 | 任务UUID |
| score | Decimal | 是 | 分数(不能超过任务分值) |
**请求示例**
```json
{
"taskDetailId": "detail001",
"score": 9.50
}
```
**响应参数**:无
**响应示例**
```json
{
"code": "200",
"message": "success"
}
```
---
## 五、反馈接口
### 5.1 提交反馈
**接口路径**`POST /{gateway}/safetyAccountability/feedback/save`
**接口描述**:执行人提交反馈
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| taskDetailId | String | 是 | 任务ID |
| taskListId | String | 是 | 清单ID |
| feedbackContent | String | 否 | 反馈内容 |
**请求示例**
```json
{
"taskDetailId": "detail001",
"taskListId": "abc123def456",
"feedbackContent": "本月已完成安全检查发现隐患3处已全部整改完成。"
}
```
**响应参数**
| 参数名 | 类型 | 说明 |
|-------|--------|------|
| id | Long | 主键ID |
| feedbackId | String | 反馈UUID业务主键 |
| feedbackTime | String | 反馈时间 |
| feedbackContent | String | 反馈内容 |
| feedbackUserId | Long | 反馈人ID |
| feedbackUserName | String | 反馈人名称 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": {
"id": 1,
"feedbackId": "feedback001",
"feedbackTime": "2026-05-15 14:30:00",
"feedbackContent": "本月已完成安全检查发现隐患3处已全部整改完成。",
"feedbackUserId": 1,
"feedbackUserName": "张三"
}
}
```
---
### 5.2 获取反馈周期分组列表
**接口路径**`POST /{gateway}/safetyAccountability/feedback/periodGroupList`
**接口描述**根据任务ID获取反馈周期分组列表以周期标识为维度统计
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| taskDetailId | String | 是 | 任务ID |
| feedbackTimeStart | String | 否 | 反馈时间开始格式yyyy-MM-dd |
| feedbackTimeEnd | String | 否 | 反馈时间结束格式yyyy-MM-dd |
**请求示例**
```json
{
"taskDetailId": "detail001",
"feedbackTimeStart": "2026-01-01",
"feedbackTimeEnd": "2026-12-31"
}
```
**响应参数**
| 参数名 | 类型 | 说明 |
|-------|------|------|
| taskDetailId | String | 是 | 任务ID |
| feedbackPeriodStartTime | String | 反馈周期开始时间 |
| feedbackPeriodEndTime | String | 反馈周期结束时间 |
| feedbackCount | Integer | 反馈次数(以周期标识为维度统计) |
| feedbackUserName | String | 反馈人姓名 |
| feedbackPeriodFlag | String | 周期标识 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": [
{
"taskDetailId": "detail001",
"feedbackPeriodStartTime": "2026-05-01 00:00:00",
"feedbackPeriodEndTime": "2026-05-31 23:59:59",
"feedbackCount": 2,
"feedbackUserName": "张三",
"feedbackPeriodFlag": "2026-05"
},
{
"taskDetailId": "detail002",
"feedbackPeriodStartTime": "2026-04-01 00:00:00",
"feedbackPeriodEndTime": "2026-04-30 23:59:59",
"feedbackCount": 1,
"feedbackUserName": "张三",
"feedbackPeriodFlag": "2026-04"
}
]
}
```
---
### 5.3 获取反馈列表
**接口路径**`POST /{gateway}/safetyAccountability/feedback/list`
**接口描述**根据任务ID和周期标识获取反馈列表
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| taskDetailId | String | 是 | 任务ID |
| feedbackPeriodFlag | String | 是 | 周期标识2026-05、2026-Q1、2026-H1、2026 |
**请求示例**
```json
{
"taskDetailId": "detail001",
"feedbackPeriodFlag": "2026-05"
}
```
**响应参数**
| 参数名 | 类型 | 说明 |
|-------|------|------|
| id | Long | 主键ID |
| feedbackId | String | 反馈UUID |
| feedbackTime | String | 反馈时间 |
| feedbackContent | String | 反馈内容 |
| feedbackUserName | String | 反馈人姓名 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": [
{
"id": 1,
"feedbackId": "feedback001",
"feedbackTime": "2026-05-15 14:30:00",
"feedbackContent": "本月已完成安全检查发现隐患3处已全部整改完成。",
"feedbackUserName": "张三"
},
{
"id": 2,
"feedbackId": "feedback002",
"feedbackTime": "2026-05-20 10:15:00",
"feedbackContent": "补充反馈:隐患已全部验收通过。",
"feedbackUserName": "张三"
}
]
}
```
---
### 5.4 获取反馈详情
**接口路径**`GET /{gateway}/safetyAccountability/feedback/{id}`
**接口描述**根据反馈ID获取反馈详情
**路径参数**
| 参数名 | 类型 | 必填 | 说明 |
|------------|--------|-----|-----------|
| feedbackId | String | 是 | 反馈表业务主键ID |
**响应参数**
| 参数名 | 类型 | 说明 |
|-------|------|------|
| id | Long | 主键ID |
| feedbackId | String | 反馈UUID |
| taskDetailId | String | 任务详情ID |
| executeContent | String | 执行内容(任务信息) |
| feedbackCycle | Integer | 反馈周期1-每月 2-季度 3-半年 4-年 |
| feedbackCycleName | String | 反馈周期名称 |
| feedbackContent | String | 反馈内容 |
| feedbackTime | String | 反馈时间 |
| feedbackPeriodStartTime | String | 反馈周期开始时间 |
| feedbackPeriodEndTime | String | 反馈周期结束时间 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": {
"id": 1,
"feedbackId": "feedback001",
"taskDetailId": "detail001",
"executeContent": "每月提交安全检查报告",
"feedbackCycle": 1,
"feedbackCycleName": "每月",
"feedbackContent": "本月已完成安全检查发现隐患3处已全部整改完成。",
"feedbackTime": "2026-05-15 14:30:00",
"feedbackPeriodStartTime": "2026-05-01 00:00:00",
"feedbackPeriodEndTime": "2026-05-31 23:59:59"
}
}
```
---
## 六、统计接口
### 6.1 获取企业统计(股份端)
**接口路径**`POST /{gateway}/safetyAccountability/statistics/corpStatistics`
**接口描述**:股份端获取企业统计数据
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| pageIndex | Integer | 是 | 页码 |
| pageSize | Integer | 是 | 每页条数 |
| corpName | String | 否 | 企业名称(模糊查询) |
**请求示例**
```json
{
"pageIndex": 1,
"pageSize": 10,
"corpName": "分公司"
}
```
**响应参数**
| 参数名 | 类型 | 说明 |
|-------|------|------|
| corpId | Long | 公司ID |
| corpName | String | 公司名称 |
| completedTaskCount | Integer | 已完成任务数 |
| closedTaskCount | Integer | 已关闭任务数 |
| totalTaskCount | Integer | 年度执行任务总数 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": [
{
"corpId": 100001,
"corpName": "XX分公司",
"completedTaskCount": 10,
"closedTaskCount": 2,
"totalTaskCount": 15
}
],
"totalCount": 50,
"pageSize": 10,
"pageIndex": 1
}
```
---
### 6.2 获取企业评价列表
**接口路径**`POST /{gateway}/safetyAccountability/statistics/evaluationList`
**接口描述**:获取企业评价列表
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| pageIndex | Integer | 是 | 页码 |
| pageSize | Integer | 是 | 每页条数 |
| corpName | String | 否 | 企业名称(模糊查询) |
| scoreStatus | Integer | 否 | 评分状态0-未评分 1-已评分 |
**请求示例**
```json
{
"pageIndex": 1,
"pageSize": 10,
"corpName": "分公司",
"scoreStatus": 0
}
```
**响应参数**
| 参数名 | 类型 | 说明 |
|-----------|------|------|
| corpId | Long | 公司ID |
| corpName | String | 公司名称 |
| listCount | Integer | 清单数量|
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": [
{
"corpId": 100001,
"corpName": "XX分公司",
"listCount": 3
}
],
"totalCount": 50,
"pageSize": 10,
"pageIndex": 1
}
```
---
### 6.3 获取企业任务下发统计数
**接口路径**`POST /{gateway}/safetyAccountability/statistics/issueStatistics`
**接口描述**获取企业任务下发统计数据以执行公司ID为维度统计
**请求参数**
| 参数名 | 类型 | 必填 | 说明 |
|-------|------|-----|------|
| pageIndex | Integer | 是 | 页码 |
| pageSize | Integer | 是 | 每页条数 |
| corpName | String | 否 | 企业名称(模糊查询) |
**请求示例**
```json
{
"pageIndex": 1,
"pageSize": 10,
"corpName": "分公司"
}
```
**响应参数**
| 参数名 | 类型 | 说明 |
|-------|------|------|
| corpId | Long | 公司ID |
| corpName | String | 公司名称 |
| issueCount | Integer | 任务清单下发数以清单表中的执行公司ID为维度统计 |
**响应示例**
```json
{
"code": "200",
"message": "success",
"data": [
{
"corpId": 100001,
"corpName": "XX分公司",
"issueCount": 15
}
],
"totalCount": 50,
"pageSize": 10,
"pageIndex": 1
}
```
---
## 七、反馈周期时间工具类
根据周期标识获取对应的开始时间和结束时间:
| 周期标识 | 开始时间 | 结束时间 | 说明 |
|---------|---------|---------|------|
| 2026-05 | 2026-05-01 00:00:00 | 2026-05-31 23:59:59 | 月 |
| 2026-Q1 | 2026-01-01 00:00:00 | 2026-03-31 23:59:59 | 第一季度 |
| 2026-Q2 | 2026-04-01 00:00:00 | 2026-06-30 23:59:59 | 第二季度 |
| 2026-Q3 | 2026-07-01 00:00:00 | 2026-09-30 23:59:59 | 第三季度 |
| 2026-Q4 | 2026-10-01 00:00:00 | 2026-12-31 23:59:59 | 第四季度 |
| 2026-H1 | 2026-01-01 00:00:00 | 2026-06-30 23:59:59 | 上半年 |
| 2026-H2 | 2026-07-01 00:00:00 | 2026-12-31 23:59:59 | 下半年 |
| 2026 | 2026-01-01 00:00:00 | 2026-12-31 23:59:59 | 年 |
---
## 八、注意事项
1. **任务分值限制**新增任务时当前清单下所有任务分值总和不能超过100分。
2. **反馈周期判断**
- 每月:每个月必须有反馈,否则判定为异常
- 每季度:每个季度必须有反馈,否则判定为异常
- 半年:每半年必须有反馈,否则判定为异常
- 年:每年必须有反馈,否则判定为异常
- 周期内可多次提交反馈
3. **状态流转**
- 任务清单状态:进行中 → 已完成(周期结束自动变更)/ 已关闭(手动关闭)
- 任务状态:进行中 → 已完成(周期结束自动变更)/ 已关闭(手动关闭)
4. **反馈状态推导**:清单的反馈状态由任务反馈状态推导,有任意任务反馈状态为异常时,清单反馈状态为异常。
5. **下发条件**仅可下发开启状态switchFlag=1的任务清单。
6. **评分限制**:任务评分不能超过任务分值。