风险预警中心
parent
38362039d1
commit
5846e058a6
|
|
@ -133,12 +133,7 @@ paths:
|
||||||
- 监管端-风险预警中心
|
- 监管端-风险预警中心
|
||||||
summary: 分页查询预警消息
|
summary: 分页查询预警消息
|
||||||
description: |
|
description: |
|
||||||
消息列表分页查询,支持搜索栏与 Tab 筛选。
|
消息列表分页查询,支持搜索栏与筛选条件。
|
||||||
|
|
||||||
Tab 对应关系:
|
|
||||||
- 全部消息:`filterKind=all` 或不传
|
|
||||||
- 紧急:`filterKind=urgent`
|
|
||||||
- 未读/未处理:`filterKind=unread`
|
|
||||||
operationId: regulatorRiskPage
|
operationId: regulatorRiskPage
|
||||||
parameters:
|
parameters:
|
||||||
- name: keyword
|
- name: keyword
|
||||||
|
|
@ -183,7 +178,7 @@ paths:
|
||||||
data:
|
data:
|
||||||
- id: W-2026-008
|
- id: W-2026-008
|
||||||
warningType: 证书过期
|
warningType: 证书过期
|
||||||
level: urgent
|
level: 紧急
|
||||||
levelName: 紧急
|
levelName: 紧急
|
||||||
sourceModule: 评价师信息管理
|
sourceModule: 评价师信息管理
|
||||||
sourceFields:
|
sourceFields:
|
||||||
|
|
@ -234,7 +229,7 @@ paths:
|
||||||
data:
|
data:
|
||||||
id: W-2026-008
|
id: W-2026-008
|
||||||
warningType: 证书过期
|
warningType: 证书过期
|
||||||
level: urgent
|
level: 紧急
|
||||||
levelName: 紧急
|
levelName: 紧急
|
||||||
sourceModule: 评价师信息管理
|
sourceModule: 评价师信息管理
|
||||||
sourceFields:
|
sourceFields:
|
||||||
|
|
@ -261,14 +256,14 @@ components:
|
||||||
levelParam:
|
levelParam:
|
||||||
name: level
|
name: level
|
||||||
in: query
|
in: query
|
||||||
description: 等级编码
|
description: 预警等级
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
- urgent
|
- 紧急
|
||||||
- important
|
- 重要
|
||||||
- normal
|
- 一般
|
||||||
default: urgent
|
default: 紧急
|
||||||
currentParam:
|
currentParam:
|
||||||
name: current
|
name: current
|
||||||
in: query
|
in: query
|
||||||
|
|
@ -462,11 +457,11 @@ components:
|
||||||
- 信息变更
|
- 信息变更
|
||||||
level:
|
level:
|
||||||
type: string
|
type: string
|
||||||
description: 等级编码
|
description: 预警等级
|
||||||
enum:
|
enum:
|
||||||
- urgent
|
- 紧急
|
||||||
- important
|
- 重要
|
||||||
- normal
|
- 一般
|
||||||
levelName:
|
levelName:
|
||||||
type: string
|
type: string
|
||||||
description: 等级名称
|
description: 等级名称
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
|----------|------|------|
|
|----------|------|------|
|
||||||
| 顶部 4 个统计卡片 + 处理动作说明 | `GET /overview` | 页面首屏统计区 |
|
| 顶部 4 个统计卡片 + 处理动作说明 | `GET /overview` | 页面首屏统计区 |
|
||||||
| 高优先级消息区块 | `GET /high-priority-alerts` | 支持等级/类型/来源等筛选 |
|
| 高优先级消息区块 | `GET /high-priority-alerts` | 支持等级/类型/来源等筛选 |
|
||||||
| 搜索栏 + Tab(全部/紧急/未读)+ 消息列表 | `GET /page` | 分页 + 筛选 |
|
| search-bar + 筛选 + 消息列表 | `GET /page` | 分页 + 筛选 |
|
||||||
| 处理 / 发函 / 闭环 / 提醒 / 审核 | `POST /handle` | 更新预警状态 |
|
| 处理 / 发函 / 闭环 / 提醒 / 审核 | `POST /handle` | 更新预警状态 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -70,7 +70,7 @@
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| id | String | 预警编号,如 W-2026-008 |
|
| id | String | 预警编号,如 W-2026-008 |
|
||||||
| warningType | String | 证书过期 / 证书临期 / 社保异常 / 人员离职 / 信息变更 |
|
| warningType | String | 证书过期 / 证书临期 / 社保异常 / 人员离职 / 信息变更 |
|
||||||
| level | String | urgent / important / normal |
|
| level | String | 紧急 / 重要 / 一般 |
|
||||||
| levelName | String | 紧急 / 重要 / 一般 |
|
| levelName | String | 紧急 / 重要 / 一般 |
|
||||||
| sourceModule | String | 来源模块名称 |
|
| sourceModule | String | 来源模块名称 |
|
||||||
| sourceFields | List\<String\> | 来源字段标签 |
|
| sourceFields | List\<String\> | 来源字段标签 |
|
||||||
|
|
@ -116,7 +116,7 @@
|
||||||
|
|
||||||
| 参数 | 必填 | 默认 | 说明 |
|
| 参数 | 必填 | 默认 | 说明 |
|
||||||
|------|------|------|------|
|
|------|------|------|------|
|
||||||
| level | 否 | urgent | 等级:urgent / important / normal |
|
| level | 否 | 紧急 | 预警等级:紧急 / 重要 / 一般 |
|
||||||
| warningType | 否 | — | 证书过期、证书临期、社保异常、人员离职、信息变更 |
|
| warningType | 否 | — | 证书过期、证书临期、社保异常、人员离职、信息变更 |
|
||||||
| sourceModule | 否 | — | 来源模块,如 评价师信息管理 |
|
| sourceModule | 否 | — | 来源模块,如 评价师信息管理 |
|
||||||
| keyword | 否 | — | 标题/预警编号/预警内容关键字 |
|
| keyword | 否 | — | 标题/预警编号/预警内容关键字 |
|
||||||
|
|
@ -127,8 +127,8 @@
|
||||||
|
|
||||||
```
|
```
|
||||||
GET /safetyEval/regulator/risk-center/high-priority-alerts
|
GET /safetyEval/regulator/risk-center/high-priority-alerts
|
||||||
GET /safetyEval/regulator/risk-center/high-priority-alerts?level=urgent&onlyUntreated=true&limit=2
|
GET /safetyEval/regulator/risk-center/high-priority-alerts?level=紧急&onlyUntreated=true&limit=2
|
||||||
GET /safetyEval/regulator/risk-center/high-priority-alerts?level=important&limit=5
|
GET /safetyEval/regulator/risk-center/high-priority-alerts?level=重要&limit=5
|
||||||
```
|
```
|
||||||
|
|
||||||
**响应示例**:
|
**响应示例**:
|
||||||
|
|
@ -170,7 +170,7 @@ GET /safetyEval/regulator/risk-center/high-priority-alerts?level=important&limit
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| keyword | 否 | 机构/人员/项目/预警编号 |
|
| keyword | 否 | 机构/人员/项目/预警编号 |
|
||||||
| warningType | 否 | 证书过期、证书临期、社保异常、人员离职、信息变更 |
|
| warningType | 否 | 证书过期、证书临期、社保异常、人员离职、信息变更 |
|
||||||
| level | 否 | urgent / important / normal |
|
| level | 否 | 紧急、重要、一般 |
|
||||||
| processStatus | 否 | 未处理、处理中、已处理 |
|
| processStatus | 否 | 未处理、处理中、已处理 |
|
||||||
| current | 否 | 当前页 |
|
| current | 否 | 当前页 |
|
||||||
| size | 否 | 每页条数 |
|
| size | 否 | 每页条数 |
|
||||||
|
|
@ -178,7 +178,7 @@ GET /safetyEval/regulator/risk-center/high-priority-alerts?level=important&limit
|
||||||
**请求示例**:
|
**请求示例**:
|
||||||
|
|
||||||
```
|
```
|
||||||
GET /safetyEval/regulator/risk-center/page?level=urgent¤t=1&size=10
|
GET /safetyEval/regulator/risk-center/page?level=紧急¤t=1&size=10
|
||||||
GET /safetyEval/regulator/risk-center/page?keyword=张建国&warningType=证书过期
|
GET /safetyEval/regulator/risk-center/page?keyword=张建国&warningType=证书过期
|
||||||
GET /safetyEval/regulator/risk-center/page?processStatus=未处理¤t=1&size=10
|
GET /safetyEval/regulator/risk-center/page?processStatus=未处理¤t=1&size=10
|
||||||
```
|
```
|
||||||
|
|
@ -194,7 +194,7 @@ GET /safetyEval/regulator/risk-center/page?processStatus=未处理¤t=1&siz
|
||||||
{
|
{
|
||||||
"id": "W-2026-008",
|
"id": "W-2026-008",
|
||||||
"warningType": "证书过期",
|
"warningType": "证书过期",
|
||||||
"level": "urgent",
|
"level": "紧急",
|
||||||
"levelName": "紧急",
|
"levelName": "紧急",
|
||||||
"sourceModule": "评价师信息管理",
|
"sourceModule": "评价师信息管理",
|
||||||
"sourceFields": ["人员姓名", "证书类型", "有效期至"],
|
"sourceFields": ["人员姓名", "证书类型", "有效期至"],
|
||||||
|
|
@ -258,7 +258,7 @@ const overview = await fetch(`${BASE}/overview`).then(r => r.json());
|
||||||
const alerts = await fetch(`${BASE}/high-priority-alerts`).then(r => r.json());
|
const alerts = await fetch(`${BASE}/high-priority-alerts`).then(r => r.json());
|
||||||
|
|
||||||
// 3. Tab 切换 / 搜索
|
// 3. Tab 切换 / 搜索
|
||||||
const list = await fetch(`${BASE}/page?filterKind=unread¤t=1&size=10`).then(r => r.json());
|
const list = await fetch(`${BASE}/page?level=紧急¤t=1&size=10`).then(r => r.json());
|
||||||
|
|
||||||
// 4. 处置
|
// 4. 处置
|
||||||
await fetch(`${BASE}/handle`, {
|
await fetch(`${BASE}/handle`, {
|
||||||
|
|
|
||||||
|
|
@ -36,28 +36,28 @@ public class RegulatorRiskCenterController {
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void initMockData() {
|
public void initMockData() {
|
||||||
messages.clear();
|
messages.clear();
|
||||||
messages.add(message("W-2026-008", "证书过期", "urgent", "评价师信息管理",
|
messages.add(message("W-2026-008", "证书过期", "紧急", "评价师信息管理",
|
||||||
Arrays.asList("人员姓名", "证书类型", "有效期至"),
|
Arrays.asList("人员姓名", "证书类型", "有效期至"),
|
||||||
"张建国一级安全评价师证书已过期,机构未上传延续材料。", "未处理", "evaluator"));
|
"张建国一级安全评价师证书已过期,机构未上传延续材料。", "未处理", "evaluator"));
|
||||||
messages.add(message("W-2026-007", "社保异常", "urgent", "资质保持监控",
|
messages.add(message("W-2026-007", "社保异常", "紧急", "资质保持监控",
|
||||||
Arrays.asList("人员姓名", "所在机构", "社保缴纳单位"),
|
Arrays.asList("人员姓名", "所在机构", "社保缴纳单位"),
|
||||||
"王丽萍在恒安安全评价和渝安风险评估同时缴纳社保。", "未处理", "qual-monitor"));
|
"王丽萍在恒安安全评价和渝安风险评估同时缴纳社保。", "未处理", "qual-monitor"));
|
||||||
messages.add(message("W-2026-006", "证书临期", "important", "资质保持监控",
|
messages.add(message("W-2026-006", "证书临期", "重要", "资质保持监控",
|
||||||
Arrays.asList("证书有效期", "预警阈值"),
|
Arrays.asList("证书有效期", "预警阈值"),
|
||||||
"陈华安全评价师二级证书将于 2026-08-01 到期,距到期不足 30 天。", "处理中", "evaluator"));
|
"陈华安全评价师二级证书将于 2026-08-01 到期,距到期不足 30 天。", "处理中", "evaluator"));
|
||||||
messages.add(message("W-2026-005", "信息变更", "normal", "备案变更管理",
|
messages.add(message("W-2026-005", "信息变更", "一般", "备案变更管理",
|
||||||
Arrays.asList("注册地址", "变更材料"),
|
Arrays.asList("注册地址", "变更材料"),
|
||||||
"恒安安全评价注册地址变更材料超过 5 个工作日未确认。", "待确认", "qual-change"));
|
"恒安安全评价注册地址变更材料超过 5 个工作日未确认。", "待确认", "qual-change"));
|
||||||
messages.add(message("W-2026-004", "人员离职", "important", "评价师信息管理",
|
messages.add(message("W-2026-004", "人员离职", "重要", "评价师信息管理",
|
||||||
Arrays.asList("人员姓名", "离职日期"),
|
Arrays.asList("人员姓名", "离职日期"),
|
||||||
"某安全评价师已离职但仍在机构备案名单中。", "未处理", "evaluator"));
|
"某安全评价师已离职但仍在机构备案名单中。", "未处理", "evaluator"));
|
||||||
messages.add(message("W-2026-003", "人员离职", "normal", "评价师信息管理",
|
messages.add(message("W-2026-003", "人员离职", "一般", "评价师信息管理",
|
||||||
Arrays.asList("人员姓名", "离职日期"),
|
Arrays.asList("人员姓名", "离职日期"),
|
||||||
"某安全评价师已提交离职申请,资质系统未更新。", "待确认", "evaluator"));
|
"某安全评价师已提交离职申请,资质系统未更新。", "待确认", "evaluator"));
|
||||||
messages.add(message("W-2026-002", "证书过期", "urgent", "评价师信息管理",
|
messages.add(message("W-2026-002", "证书过期", "紧急", "评价师信息管理",
|
||||||
Arrays.asList("人员姓名", "证书类型", "有效期至"),
|
Arrays.asList("人员姓名", "证书类型", "有效期至"),
|
||||||
"李明华注册安全工程师证书已过期。", "已闭环", "evaluator"));
|
"李明华注册安全工程师证书已过期。", "已闭环", "evaluator"));
|
||||||
messages.add(message("W-2026-001", "社保异常", "urgent", "资质保持监控",
|
messages.add(message("W-2026-001", "社保异常", "紧急", "资质保持监控",
|
||||||
Arrays.asList("人员姓名", "社保缴纳单位"),
|
Arrays.asList("人员姓名", "社保缴纳单位"),
|
||||||
"赵磊社保缴纳单位与备案机构不一致。", "已发函", "qual-monitor"));
|
"赵磊社保缴纳单位与备案机构不一致。", "已发函", "qual-monitor"));
|
||||||
}
|
}
|
||||||
|
|
@ -115,8 +115,8 @@ public class RegulatorRiskCenterController {
|
||||||
|
|
||||||
private List<RegulatorRiskOverviewCO.StatCardCO> buildStats() {
|
private List<RegulatorRiskOverviewCO.StatCardCO> buildStats() {
|
||||||
long untreated = messages.stream().filter(m -> isUntreated(m.getStatus())).count();
|
long untreated = messages.stream().filter(m -> isUntreated(m.getStatus())).count();
|
||||||
long urgent = messages.stream().filter(m -> "urgent".equals(m.getLevel())).count();
|
long urgent = messages.stream().filter(m -> "紧急".equals(m.getLevel())).count();
|
||||||
long important = messages.stream().filter(m -> "important".equals(m.getLevel())).count();
|
long important = messages.stream().filter(m -> "重要".equals(m.getLevel())).count();
|
||||||
long handledToday = messages.stream().filter(m -> isHandledToday(m.getStatus())).count();
|
long handledToday = messages.stream().filter(m -> isHandledToday(m.getStatus())).count();
|
||||||
return Arrays.asList(
|
return Arrays.asList(
|
||||||
stat("未处理预警", String.valueOf(untreated), "需监管人员处置"),
|
stat("未处理预警", String.valueOf(untreated), "需监管人员处置"),
|
||||||
|
|
@ -180,10 +180,10 @@ public class RegulatorRiskCenterController {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String alertLevel(String level) {
|
private String alertLevel(String level) {
|
||||||
if ("urgent".equals(level)) {
|
if ("紧急".equals(level)) {
|
||||||
return "danger";
|
return "danger";
|
||||||
}
|
}
|
||||||
if ("important".equals(level)) {
|
if ("重要".equals(level)) {
|
||||||
return "warning";
|
return "warning";
|
||||||
}
|
}
|
||||||
return "info";
|
return "info";
|
||||||
|
|
@ -274,12 +274,6 @@ public class RegulatorRiskCenterController {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String levelName(String level) {
|
private String levelName(String level) {
|
||||||
if ("urgent".equals(level)) {
|
return level;
|
||||||
return "紧急";
|
|
||||||
}
|
|
||||||
if ("important".equals(level)) {
|
|
||||||
return "重要";
|
|
||||||
}
|
|
||||||
return "一般";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ public class RegulatorRiskMessageCO {
|
||||||
@ApiModelProperty("预警类型")
|
@ApiModelProperty("预警类型")
|
||||||
private String warningType;
|
private String warningType;
|
||||||
|
|
||||||
@ApiModelProperty("等级编码:urgent/important/normal")
|
@ApiModelProperty("预警等级")
|
||||||
private String level;
|
private String level;
|
||||||
|
|
||||||
@ApiModelProperty("等级名称:紧急/重要/一般")
|
@ApiModelProperty("等级名称:紧急/重要/一般")
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ public class RegulatorRiskMessagePageQuery extends BasePageQuery {
|
||||||
@ApiModelProperty(value = "预警类型", allowableValues = "证书过期,证书临期,社保异常,人员离职,信息变更")
|
@ApiModelProperty(value = "预警类型", allowableValues = "证书过期,证书临期,社保异常,人员离职,信息变更")
|
||||||
private String warningType;
|
private String warningType;
|
||||||
|
|
||||||
@ApiModelProperty(value = "预警等级", allowableValues = "urgent,important,normal")
|
@ApiModelProperty(value = "预警等级", allowableValues = "紧急,重要,一般")
|
||||||
private String level;
|
private String level;
|
||||||
|
|
||||||
@ApiModelProperty(value = "处理状态", allowableValues = "未处理,处理中,已处理")
|
@ApiModelProperty(value = "处理状态", allowableValues = "未处理,处理中,已处理")
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ import lombok.Data;
|
||||||
@Data
|
@Data
|
||||||
public class RegulatorRiskPriorityAlertQuery {
|
public class RegulatorRiskPriorityAlertQuery {
|
||||||
|
|
||||||
@ApiModelProperty(value = "等级:urgent/important/normal,默认 urgent", allowableValues = "urgent,important,normal")
|
@ApiModelProperty(value = "预警等级", allowableValues = "紧急,重要,一般")
|
||||||
private String level = "urgent";
|
private String level = "紧急";
|
||||||
|
|
||||||
@ApiModelProperty(value = "预警类型", allowableValues = "证书过期,证书临期,社保异常,人员离职,信息变更")
|
@ApiModelProperty(value = "预警类型", allowableValues = "证书过期,证书临期,社保异常,人员离职,信息变更")
|
||||||
private String warningType;
|
private String warningType;
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,9 @@ import java.util.Objects;
|
||||||
*/
|
*/
|
||||||
public enum RegulatorRiskLevelEnum {
|
public enum RegulatorRiskLevelEnum {
|
||||||
|
|
||||||
URGENT("urgent", "紧急"),
|
URGENT("紧急", "紧急"),
|
||||||
IMPORTANT("important", "重要"),
|
IMPORTANT("重要", "重要"),
|
||||||
NORMAL("normal", "一般"),
|
NORMAL("一般", "一般"),
|
||||||
;
|
;
|
||||||
|
|
||||||
private final String code;
|
private final String code;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue