safety-eval-service/docs/openapi/监督检查告知.openapi.yaml

727 lines
24 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: |
对齐原型:
- 监管端 `mod-inspection-notice`(监督检查告知)
- 机构端消息入口 `reg-message` 中 `bizType=insp_notice` 的办理能力
## 原型能力对照(监管)
| 原型 | 后端 |
|------|------|
| 筛选编号/机构/类型/来源/预警号/负责人/时间/确认/反馈/状态 | `GET .../regulator/insp-notice/page` |
| 列表含机构名、来源预警号、确认与反馈 | `RegulatorInspNoticeCO` |
| 新建/编辑待下发 | `POST .../save` |
| 下发 | `POST .../issue`(新建或 `id` 下发草稿) |
| 查看 / 保存备注 | `GET .../get`、`POST .../remark` |
| 登记结果 | `POST .../close` |
| 提醒 | `POST .../urge` |
| 下载记录 | `GET .../download-record` |
| 导出台账 | `POST .../export-ledger` |
| 材料只读 | `GET .../materials` |
## 原型能力对照(机构 · insp_notice
| 能力 | 后端 |
|------|------|
| 本机构告知列表/详情 | `GET .../institution/insp-notice/page|get` |
| 确认 / 上传材料 / 反馈 | `POST .../confirm|material/upload|feedback` |
| 材料列表 | `GET .../materials` |
**说明**:机构端原型「监督检查通知」整页还聚合风险预警类整改/核查/补正消息,不在本文件范围内。
**字典**
- 状态:`0待下发 1已下发 2已确认 3已反馈 4已办结`(原型「已完成」=`4`
- 来源:`1年度计划 2专项安排 3其他 4风险预警`
- 结果:`1未发现问题/合格 2责令整改/不合格 3转入风险预警/限期整改`
- 确认/反馈:`1是/已提交 2否/未提交`
**Apifox 导入**:项目设置 → 导入数据 → OpenAPI → 选择本文件。
成功:`success=true` 且 `code="0"`(文件流接口直接返回附件,失败时返回 JSON
version: 1.0.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/regulator/insp-notice/save:
post:
tags: [监管端-监督检查告知]
summary: 暂存/编辑待下发告知
operationId: regulatorInspNoticeSave
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegulatorInspNoticeSaveCmd'
example:
orgId: 10001
inspTypeCode: SPECIAL
inspTypeName: 专项检查
sourceTypeCode: 1
sourceTypeName: 年度计划
planInspTime: "2026-08-05T09:00:00"
leaderName: 周强
noticeContent: 请准备专项检查材料
materialNames: [项目过程记录, 人员到场记录]
responses:
'200':
description: 成功status=0 待下发)
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseRegulatorInspNoticeCO'
/safetyEval/regulator/insp-notice/issue:
post:
tags: [监管端-监督检查告知]
summary: 新建并下发,或下发草稿
description: |
- 传 `id`:将 status=0 草稿下发为已下发,并推送机构消息
- 不传 `id`:直接新建并下发(需 `orgId`
operationId: regulatorInspNoticeIssue
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegulatorInspNoticeIssueCmd'
examples:
issueDraft:
summary: 下发草稿
value: { id: 20001 }
createAndIssue:
summary: 新建并下发
value:
orgId: 10001
inspTypeCode: PROJECT_PROCESS
inspTypeName: 项目过程检查
sourceTypeCode: 4
sourceTypeName: 风险预警
sourceRefNo: W-PROJ-2026-009
planInspTime: "2026-07-22T09:30:00"
leaderName: 刘敏
noticeContent: 请准备项目过程记录、人员到场记录及相关证明材料
materialNames: [联系人及准备材料清单]
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseRegulatorInspNoticeCO'
/safetyEval/regulator/insp-notice/page:
get:
tags: [监管端-监督检查告知]
summary: 分页查询告知
operationId: regulatorInspNoticePage
parameters:
- $ref: '#/components/parameters/current'
- $ref: '#/components/parameters/size'
- name: noticeNo
in: query
schema: { type: string }
- name: orgId
in: query
schema: { type: integer, format: int64 }
- name: orgName
in: query
description: 评价机构名称(模糊)
schema: { type: string }
- name: keyword
in: query
schema: { type: string }
- name: inspTypeCode
in: query
schema: { type: string, enum: [PROJECT_PROCESS, QUAL_KEEP, SPECIAL] }
- name: sourceTypeCode
in: query
schema: { type: integer, enum: [1, 2, 3, 4] }
- name: sourceRefNo
in: query
description: 来源预警编号
schema: { type: string }
- name: leaderName
in: query
schema: { type: string }
- name: planInspTimeStart
in: query
description: yyyy-MM-dd
schema: { type: string }
- name: planInspTimeEnd
in: query
description: yyyy-MM-dd
schema: { type: string }
- name: confirmFlag
in: query
description: 1已确认 2未确认
schema: { type: integer, enum: [1, 2] }
- name: feedbackFlag
in: query
description: 1已提交 2未提交
schema: { type: integer, enum: [1, 2] }
- name: statusCode
in: query
description: 0待下发 1已下发 2已确认 3已反馈 4已办结
schema: { type: integer, enum: [0, 1, 2, 3, 4] }
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/PageResponseRegulatorInspNoticeCO'
/safetyEval/regulator/insp-notice/get:
get:
tags: [监管端-监督检查告知]
summary: 查询告知详情
operationId: regulatorInspNoticeGet
parameters:
- name: id
in: query
required: true
schema: { type: string }
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseRegulatorInspNoticeCO'
/safetyEval/regulator/insp-notice/close:
post:
tags: [监管端-监督检查告知]
summary: 登记结果并办结
description: 前置状态须为已确认(2)或已反馈(3)
operationId: regulatorInspNoticeClose
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegulatorInspNoticeCloseCmd'
example:
id: 20001
resultCode: 2
resultName: 责令整改
resultContent: 现场检查发现问题,限期整改
resultUrls: ["https://example.com/record.pdf"]
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseRegulatorInspNoticeCO'
/safetyEval/regulator/insp-notice/remark:
post:
tags: [监管端-监督检查告知]
summary: 保存监管备注
operationId: regulatorInspNoticeRemark
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegulatorInspNoticeRemarkCmd'
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseRegulatorInspNoticeCO'
/safetyEval/regulator/insp-notice/materials:
get:
tags: [监管端-监督检查告知]
summary: 材料只读列表
operationId: regulatorInspNoticeMaterials
parameters:
- name: noticeId
in: query
required: true
schema: { type: integer, format: int64 }
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseInspNoticeMaterialCOList'
/safetyEval/regulator/insp-notice/urge:
post:
tags: [监管端-监督检查告知]
summary: 催办(重发机构消息)
operationId: regulatorInspNoticeUrge
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegulatorInspNoticeUrgeCmd'
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseVoid'
/safetyEval/regulator/insp-notice/export-ledger:
post:
tags: [监管端-监督检查告知]
summary: 导出台账CSV
description: 勾选优先;否则按筛选;最多 5000 行。直接下载文件。
operationId: regulatorInspNoticeExportLedger
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegulatorInspNoticeExportCmd'
responses:
'200':
description: CSV 文件流;失败时 JSON
content:
text/csv:
schema: { type: string, format: binary }
application/json:
schema:
$ref: '#/components/schemas/SingleResponseBase'
/safetyEval/regulator/insp-notice/download-record:
get:
tags: [监管端-监督检查告知]
summary: 下载检查记录CSV
operationId: regulatorInspNoticeDownloadRecord
parameters:
- name: id
in: query
required: true
schema: { type: integer, format: int64 }
responses:
'200':
description: CSV 文件流;失败时 JSON
content:
text/csv:
schema: { type: string, format: binary }
application/json:
schema:
$ref: '#/components/schemas/SingleResponseBase'
/safetyEval/institution/insp-notice/page:
get:
tags: [机构端-监督检查告知]
summary: 分页查询本机构告知(不含待下发草稿)
operationId: institutionInspNoticePage
parameters:
- $ref: '#/components/parameters/current'
- $ref: '#/components/parameters/size'
- name: noticeNo
in: query
schema: { type: string }
- name: keyword
in: query
schema: { type: string }
- name: inspTypeCode
in: query
schema: { type: string }
- name: sourceTypeCode
in: query
schema: { type: integer }
- name: sourceRefNo
in: query
schema: { type: string }
- name: confirmFlag
in: query
schema: { type: integer }
- name: feedbackFlag
in: query
schema: { type: integer }
- name: statusCode
in: query
description: 1已下发 2已确认 3已反馈 4已办结
schema: { type: integer, enum: [1, 2, 3, 4] }
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/PageResponseInstitutionInspNoticeCO'
/safetyEval/institution/insp-notice/get:
get:
tags: [机构端-监督检查告知]
summary: 查询告知详情
operationId: institutionInspNoticeGet
parameters:
- name: id
in: query
required: true
schema: { type: string }
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseInstitutionInspNoticeCO'
/safetyEval/institution/insp-notice/confirm:
post:
tags: [机构端-监督检查告知]
summary: 确认告知
description: 前置 status=1 已下发 → 2 已确认
operationId: institutionInspNoticeConfirm
requestBody:
required: true
content:
application/json:
schema:
type: object
required: [id]
properties:
id: { type: integer, format: int64 }
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseInstitutionInspNoticeCO'
/safetyEval/institution/insp-notice/material/upload:
post:
tags: [机构端-监督检查告知]
summary: 上传材料(仅 URL
description: 前置告知状态为已确认或已反馈
operationId: institutionInspNoticeMaterialUpload
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InstitutionInspNoticeMaterialUploadCmd'
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseInspNoticeMaterialCO'
/safetyEval/institution/insp-notice/feedback:
post:
tags: [机构端-监督检查告知]
summary: 提交材料反馈
description: 前置 status=2必填材料须已上传
operationId: institutionInspNoticeFeedback
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InstitutionInspNoticeFeedbackCmd'
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseInstitutionInspNoticeCO'
/safetyEval/institution/insp-notice/materials:
get:
tags: [机构端-监督检查告知]
summary: 材料列表
operationId: institutionInspNoticeMaterials
parameters:
- name: noticeId
in: query
required: true
schema: { type: integer, format: int64 }
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/SingleResponseInspNoticeMaterialCOList'
components:
parameters:
current:
name: current
in: query
schema: { type: integer, format: int64, default: 1 }
size:
name: size
in: query
schema: { type: integer, format: int64, default: 10 }
schemas:
SingleResponseBase:
type: object
properties:
success: { type: boolean, example: true }
code: { type: string, example: "0" }
errMessage: { type: string, nullable: true }
traceId: { type: string, nullable: true }
RegulatorInspNoticeCO:
type: object
properties:
id: { type: string }
orgId: { type: string }
orgName: { type: string, description: 评价机构名称 }
noticeNo: { type: string, example: JC2026000018 }
inspTypeCode: { type: string, example: PROJECT_PROCESS }
inspTypeName: { type: string, example: 项目过程检查 }
sourceTypeCode: { type: integer, example: 4 }
sourceTypeName: { type: string, example: 风险预警 }
sourceRefId: { type: string }
sourceRefNo: { type: string, example: W-PROJ-2026-009 }
projectId: { type: string }
planInspTime: { type: string, format: date-time }
leaderName: { type: string }
noticeContent: { type: string }
noticeUrls: { type: string }
statusCode: { type: integer, example: 3 }
statusName: { type: string, example: 已反馈 }
confirmFlag: { type: integer, example: 1 }
feedbackFlag: { type: integer, example: 1, description: 1已提交 2未提交 }
confirmTime: { type: string, format: date-time }
sendTime: { type: string, format: date-time }
resultCode: { type: integer }
resultName: { type: string }
resultContent: { type: string }
resultUrls: { type: string }
resultRecorderName: { type: string }
resultTime: { type: string, format: date-time }
remarks: { type: string }
InstitutionInspNoticeCO:
type: object
properties:
id: { type: string }
noticeNo: { type: string }
inspTypeCode: { type: string }
inspTypeName: { type: string }
sourceTypeCode: { type: integer }
sourceTypeName: { type: string }
sourceRefNo: { type: string }
planInspTime: { type: string, format: date-time }
leaderName: { type: string }
noticeContent: { type: string }
noticeUrls: { type: string }
statusCode: { type: integer }
statusName: { type: string }
confirmFlag: { type: integer }
feedbackFlag: { type: integer }
confirmTime: { type: string, format: date-time }
sendTime: { type: string, format: date-time }
resultCode: { type: integer }
resultName: { type: string }
resultContent: { type: string }
resultUrls: { type: string }
resultTime: { type: string, format: date-time }
remarks: { type: string }
InspNoticeMaterialCO:
type: object
properties:
id: { type: string }
noticeId: { type: string }
materialName: { type: string }
requiredFlag: { type: integer, description: 1必需 2非必需 }
uploadStatusCode: { type: integer, description: 1待上传 2已上传 }
uploadStatusName: { type: string }
fileUrl: { type: string }
RegulatorInspNoticeSaveCmd:
type: object
required: [orgId]
properties:
id: { type: integer, format: int64, description: 空=新建草稿,非空=编辑待下发 }
orgId: { type: integer, format: int64 }
inspTypeCode: { type: string }
inspTypeName: { type: string }
sourceTypeCode: { type: integer }
sourceTypeName: { type: string }
sourceRefId: { type: integer, format: int64 }
sourceRefNo: { type: string }
projectId: { type: integer, format: int64 }
planInspTime: { type: string, format: date-time }
leaderName: { type: string }
noticeContent: { type: string }
noticeUrls:
type: array
items: { type: string }
remarks: { type: string }
materialNames:
type: array
items: { type: string }
description: 仅新建草稿时预置材料行
RegulatorInspNoticeIssueCmd:
type: object
properties:
id: { type: integer, format: int64, description: 传则下发草稿 }
orgId: { type: integer, format: int64, description: 新建下发时必填 }
inspTypeCode: { type: string }
inspTypeName: { type: string }
sourceTypeCode: { type: integer }
sourceTypeName: { type: string }
sourceRefId: { type: integer, format: int64 }
sourceRefNo: { type: string }
projectId: { type: integer, format: int64 }
planInspTime: { type: string, format: date-time }
leaderName: { type: string }
noticeContent: { type: string }
noticeUrls:
type: array
items: { type: string }
remarks: { type: string }
materialNames:
type: array
items: { type: string }
RegulatorInspNoticeCloseCmd:
type: object
required: [id]
properties:
id: { type: integer, format: int64 }
resultCode: { type: integer, description: "1未发现问题 2责令整改 3转入风险预警" }
resultName: { type: string }
resultContent: { type: string }
resultUrls:
type: array
items: { type: string }
RegulatorInspNoticeRemarkCmd:
type: object
required: [id]
properties:
id: { type: integer, format: int64 }
remarks: { type: string }
RegulatorInspNoticeUrgeCmd:
type: object
required: [id]
properties:
id: { type: integer, format: int64 }
RegulatorInspNoticeExportCmd:
type: object
properties:
ids:
type: array
items: { type: integer, format: int64 }
scope: { type: string, enum: [SELECTED, FILTERED, ALL] }
noticeNo: { type: string }
orgId: { type: integer, format: int64 }
orgName: { type: string }
keyword: { type: string }
inspTypeCode: { type: string }
sourceTypeCode: { type: integer }
sourceRefNo: { type: string }
leaderName: { type: string }
planInspTimeStart: { type: string }
planInspTimeEnd: { type: string }
confirmFlag: { type: integer }
feedbackFlag: { type: integer }
statusCode: { type: integer }
InstitutionInspNoticeMaterialUploadCmd:
type: object
required: [materialId, fileUrl]
properties:
materialId: { type: integer, format: int64 }
fileUrl: { type: string }
InstitutionInspNoticeFeedbackCmd:
type: object
required: [id]
properties:
id: { type: integer, format: int64 }
materials:
type: array
items:
$ref: '#/components/schemas/InstitutionInspNoticeMaterialUploadCmd'
SingleResponseRegulatorInspNoticeCO:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data: { $ref: '#/components/schemas/RegulatorInspNoticeCO' }
SingleResponseInstitutionInspNoticeCO:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data: { $ref: '#/components/schemas/InstitutionInspNoticeCO' }
PageResponseRegulatorInspNoticeCO:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data:
type: array
items: { $ref: '#/components/schemas/RegulatorInspNoticeCO' }
total: { type: integer, format: int64 }
PageResponseInstitutionInspNoticeCO:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data:
type: array
items: { $ref: '#/components/schemas/InstitutionInspNoticeCO' }
total: { type: integer, format: int64 }
SingleResponseInspNoticeMaterialCO:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data: { $ref: '#/components/schemas/InspNoticeMaterialCO' }
SingleResponseInspNoticeMaterialCOList:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data:
type: array
items: { $ref: '#/components/schemas/InspNoticeMaterialCO' }
SingleResponseVoid:
allOf:
- $ref: '#/components/schemas/SingleResponseBase'
- type: object
properties:
data: { nullable: true }