safety-eval-service/docs/openapi/机构端-安评报告库.openapi.yaml

413 lines
14 KiB
YAML
Raw Normal View History

2026-07-28 09:09:27 +08:00
openapi: 3.0.3
info:
title: 机构端-安评报告库 API
description: |
对齐原型页 `institution-report-library`(机构端「报告库」)的展示与功能。
## 原型能力对照
| 原型 | 接口 |
|------|------|
| 顶栏汇总(总数/近三年/已报送/待完善/抽查中) | `GET /summary` |
| 列表筛选(名称编号/年度/评价类型/行业/报送状态) | `GET /page` |
| 查看详情 | `GET /get` |
| 下载 | 详情 `fileUrl` 由前端下载(无单独下载流接口) |
| 上传历史报告 | `POST /add`(文件先走统一上传拿 URL |
| 报送监管 | `POST /submit` |
| 抽查记录/整改 | `/eval-report-spotcheck/**` |
**Apifox 导入**:项目设置 → 导入数据 → OpenAPI → 选择本文件。
统一前缀:`/safetyEval/institution`
成功:`success=true` 且 `code="0"`
version: 1.1.0
contact:
name: safety-eval-service
servers:
- url: http://localhost:8095
description: 本地开发
- url: http://192.168.20.100:30140
description: 测试网关100
tags:
- name: 机构端-安评报告库
description: 报告库列表/详情/上传/报送/汇总
- name: 机构端-报告抽查整改
description: 抽查记录查询与整改反馈
paths:
/safetyEval/institution/eval-report/summary:
get:
tags: [机构端-安评报告库]
summary: 报告库页顶栏汇总
operationId: institutionEvalReportSummary
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseInstitutionEvalReportSummaryCO'
example:
success: true
code: "0"
data:
totalCount: 126
recentThreeYearCount: 98
submittedCount: 86
incompleteCount: 5
spotcheckingCount: 3
/safetyEval/institution/eval-report/page:
get:
tags: [机构端-安评报告库]
summary: 分页查询本机构报告
operationId: institutionEvalReportPage
parameters:
- $ref: '#/components/parameters/current'
- $ref: '#/components/parameters/size'
- name: keyword
in: query
description: 报告名称 / 编号
schema: { type: string }
- name: reportYear
in: query
schema: { type: integer, example: 2026 }
- name: evalTypeCode
in: query
description: PRE / ACCEPT / STATUS
schema: { type: string, example: PRE }
- name: industryCode
in: query
description: 所属行业编码,如 HAZCHEM
schema: { type: string }
- name: reportStatusCode
in: query
description: 1已入库 2抽查中 3待整改 4已复核
schema: { type: integer }
- name: displayStatus
in: query
description: |
原型「报送状态」筛选:
`UN_SUBMITTED` 未报送 /
`SUBMITTED` 已报送 /
`SPOTCHECKING` 抽查中 /
`RECTIFYING` 整改中 /
`REVIEWED` 已复核
schema:
type: string
enum: [UN_SUBMITTED, SUBMITTED, SPOTCHECKING, RECTIFYING, REVIEWED]
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/PageResponseEvalReportLibraryCO'
/safetyEval/institution/eval-report/get:
get:
tags: [机构端-安评报告库]
summary: 报告详情
description: 含 `fileUrl`/`fileName`,前端下载直接使用文件地址。
operationId: institutionEvalReportGet
parameters:
- name: id
in: query
required: true
schema: { type: string }
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseEvalReportLibraryCO'
/safetyEval/institution/eval-report/add:
post:
tags: [机构端-安评报告库]
summary: 上传历史报告
description: |
对齐原型弹窗「上传历史报告」。
文件请先调用统一文件上传接口拿到 `fileUrl` 再提交本接口。
`submitToRegulator=true` 时 `submitFlag=1`(已报送);否则 `submitFlag=2`(未报送)。
同机构下 `reportNo` 不可重复。
operationId: institutionEvalReportAdd
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InstitutionEvalReportAddCmd'
example:
reportNo: CQAP-XZ-2026-001
reportName: 华安化工园区建设项目安全预评价报告
reportYear: 2026
evalTypeCode: PRE
evalTypeName: 安全预评价
industryCode: HAZCHEM
industryName: 危险化学品
evaluatedUnitName: 重庆华安化工有限公司
issueDate: '2026-07-16'
pageCount: 186
fileUrl: https://oss.example.com/reports/xxx.pdf
fileName: 华安化工预评价.pdf
secretLevelCode: NORMAL
secretLevelName: 普通
remarks: 正式签章版
submitToRegulator: false
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseEvalReportLibraryCO'
/safetyEval/institution/eval-report/submit:
post:
tags: [机构端-安评报告库]
summary: 报送监管
description: 将 `submitFlag=2`(未报送)的报告改为已报送;已报送则报错 06-07-009。
operationId: institutionEvalReportSubmit
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InstitutionEvalReportSubmitCmd'
example:
id: 10001
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseEvalReportLibraryCO'
/safetyEval/institution/eval-report-spotcheck/list:
get:
tags: [机构端-报告抽查整改]
summary: 按报告查询抽查记录
operationId: institutionSpotcheckList
parameters:
- name: reportId
in: query
required: true
schema: { type: integer, format: int64 }
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseEvalReportSpotcheckCOList'
/safetyEval/institution/eval-report-spotcheck/get:
get:
tags: [机构端-报告抽查整改]
summary: 抽查详情
operationId: institutionSpotcheckGet
parameters:
- name: id
in: query
required: true
schema: { type: string }
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseEvalReportSpotcheckCO'
/safetyEval/institution/eval-report-spotcheck/rectify:
post:
tags: [机构端-报告抽查整改]
summary: 提交整改反馈
description: 报告须处于抽查中且抽查结果为不合格。
operationId: institutionSpotcheckRectify
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InstitutionSpotcheckRectifyCmd'
example:
spotcheckId: 20001
rectifyFeedback: 已按抽查意见完成修订并重新盖章
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseEvalReportSpotcheckCO'
components:
parameters:
current:
name: current
in: query
description: 页码(从 1 开始)
schema: { type: integer, default: 1 }
size:
name: size
in: query
description: 每页条数
schema: { type: integer, default: 10 }
schemas:
SingleResponseBase:
type: object
properties:
success: { type: boolean, example: true }
code: { type: string, example: "0" }
message: { type: string }
errCode: { type: string }
errMessage: { type: string }
EvalReportLibraryCO:
type: object
properties:
id: { type: string }
orgId: { type: string }
projectId: { type: string }
customerId: { type: string }
evaluatedUnitName: { type: string, description: 被评价单位 }
reportNo: { type: string }
reportName: { type: string }
reportYear: { type: integer }
evalTypeCode: { type: string, example: PRE }
evalTypeName: { type: string, example: 安全预评价 }
industryCode: { type: string, example: HAZCHEM }
industryName: { type: string, example: 危险化学品 }
businessScope: { type: string }
fileUrl: { type: string }
fileName: { type: string }
publicFlag: { type: integer, description: "1是2否" }
completeFlag: { type: integer, description: "1完整2待完善" }
submitFlag: { type: integer, description: "1已报送2未报送" }
reportStatusCode: { type: integer, description: "1已入库2抽查中3待整改4已复核" }
reportStatusName: { type: string }
displayStatusName:
type: string
description: 列表展示报送状态(未报送/已报送/抽查中/整改中/已复核)
example: 已报送
archiveTime: { type: string, format: date-time }
issueDate: { type: string, format: date, description: 签发日期 }
pageCount: { type: integer }
secretLevelCode: { type: string, example: NORMAL }
secretLevelName: { type: string, example: 普通 }
remarks: { type: string }
InstitutionEvalReportSummaryCO:
type: object
properties:
totalCount: { type: integer, format: int64 }
recentThreeYearCount: { type: integer, format: int64 }
submittedCount: { type: integer, format: int64 }
incompleteCount: { type: integer, format: int64 }
spotcheckingCount: { type: integer, format: int64 }
InstitutionEvalReportAddCmd:
type: object
required: [reportNo, reportName, evaluatedUnitName, issueDate, fileUrl]
properties:
reportNo: { type: string }
reportName: { type: string }
reportYear: { type: integer }
evalTypeCode: { type: string }
evalTypeName: { type: string }
industryCode: { type: string }
industryName: { type: string }
evaluatedUnitName: { type: string }
customerId: { type: integer, format: int64 }
issueDate: { type: string, format: date }
pageCount: { type: integer }
fileUrl: { type: string }
fileName: { type: string }
secretLevelCode: { type: string }
secretLevelName: { type: string }
remarks: { type: string }
submitToRegulator: { type: boolean, description: true=同步报送监管 }
InstitutionEvalReportSubmitCmd:
type: object
required: [id]
properties:
id: { type: integer, format: int64 }
EvalReportSpotcheckCO:
type: object
properties:
id: { type: string }
orgId: { type: string }
reportId: { type: string }
checkResultCode: { type: integer, description: "1合格2不合格" }
checkResultName: { type: string }
checkOpinion: { type: string }
rectifyRequire: { type: string }
rectifyFeedback: { type: string }
reviewResultCode: { type: integer, description: "1通过2不通过" }
reviewResultName: { type: string }
checkerId: { type: string }
checkerName: { type: string }
checkTime: { type: string, format: date-time }
InstitutionSpotcheckRectifyCmd:
type: object
required: [spotcheckId, rectifyFeedback]
properties:
spotcheckId: { type: integer, format: int64 }
rectifyFeedback: { type: string }
SingleResponseEvalReportLibraryCO:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data:
$ref: '#/components/schemas/EvalReportLibraryCO'
SingleResponseInstitutionEvalReportSummaryCO:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data:
$ref: '#/components/schemas/InstitutionEvalReportSummaryCO'
PageResponseEvalReportLibraryCO:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EvalReportLibraryCO'
total:
type: integer
format: int64
SingleResponseEvalReportSpotcheckCO:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data:
$ref: '#/components/schemas/EvalReportSpotcheckCO'
SingleResponseEvalReportSpotcheckCOList:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/EvalReportSpotcheckCO'