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

413 lines
14 KiB
YAML
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.

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'