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

727 lines
24 KiB
YAML
Raw Normal View History

2026-07-28 09:09:27 +08:00
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 }