dev_1.0.1
huwei 2026-07-16 09:37:30 +08:00
commit 49ab3d941e
29 changed files with 2041 additions and 106 deletions

View File

@ -73,10 +73,10 @@ paths:
type: string type: string
enum: enum:
- 证书过期 - 证书过期
- 证书临期
- 社保异常 - 社保异常
- 人员离职
- 信息变更 - 信息变更
- 项目超期
- 账号限制
- name: sourceModule - name: sourceModule
in: query in: query
description: 来源模块 description: 来源模块
@ -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
@ -153,21 +148,20 @@ paths:
type: string type: string
enum: enum:
- 证书过期 - 证书过期
- 证书临期
- 社保异常 - 社保异常
- 人员离职
- 信息变更 - 信息变更
- 项目超期
- 账号限制
- $ref: '#/components/parameters/levelParam' - $ref: '#/components/parameters/levelParam'
- name: filterKind - name: processStatus
in: query in: query
description: Tab 筛选 description: 处理状态
schema: schema:
type: string type: string
enum: enum:
- all - 未处理
- urgent - 处理中
- unread - 已处理
default: all
- $ref: '#/components/parameters/currentParam' - $ref: '#/components/parameters/currentParam'
- $ref: '#/components/parameters/sizeParam' - $ref: '#/components/parameters/sizeParam'
responses: responses:
@ -184,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:
@ -235,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:
@ -262,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
@ -457,17 +451,17 @@ components:
description: 预警类型 description: 预警类型
enum: enum:
- 证书过期 - 证书过期
- 证书临期
- 社保异常 - 社保异常
- 人员离职
- 信息变更 - 信息变更
- 项目超期
- 账号限制
level: level:
type: string type: string
description: 等级编码 description: 预警等级
enum: enum:
- urgent - 紧急
- important - 重要
- normal - 一般
levelName: levelName:
type: string type: string
description: 等级名称 description: 等级名称

View File

@ -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` | 更新预警状态 |
--- ---
@ -69,8 +69,8 @@
| 字段 | 类型 | 说明 | | 字段 | 类型 | 说明 |
|------|------|------| |------|------|------|
| 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,8 +116,8 @@
| 参数 | 必填 | 默认 | 说明 | | 参数 | 必填 | 默认 | 说明 |
|------|------|------|------| |------|------|------|------|
| level | 否 | urgent | 等级urgent / important / normal | | level | 否 | 紧急 | 预警等级:紧急 / 重要 / 一般 |
| warningType | 否 | — | 证书过期、社保异常、信息变更、项目超期、账号限制 | | warningType | 否 | — | 证书过期、证书临期、社保异常、人员离职、信息变更 |
| sourceModule | 否 | — | 来源模块,如 评价师信息管理 | | sourceModule | 否 | — | 来源模块,如 评价师信息管理 |
| keyword | 否 | — | 标题/预警编号/预警内容关键字 | | keyword | 否 | — | 标题/预警编号/预警内容关键字 |
| onlyUntreated | 否 | true | 仅未处理(未处理/待确认/处理中) | | onlyUntreated | 否 | true | 仅未处理(未处理/待确认/处理中) |
@ -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
``` ```
**响应示例** **响应示例**
@ -169,25 +169,18 @@ GET /safetyEval/regulator/risk-center/high-priority-alerts?level=important&limit
| 参数 | 必填 | 说明 | | 参数 | 必填 | 说明 |
|------|------|------| |------|------|------|
| keyword | 否 | 机构/人员/项目/预警编号 | | keyword | 否 | 机构/人员/项目/预警编号 |
| warningType | 否 | 证书过期、社保异常、信息变更、项目超期、账号限制 | | warningType | 否 | 证书过期、证书临期、社保异常、人员离职、信息变更 |
| level | 否 | urgent / important / normal | | level | 否 | 紧急、重要、一般 |
| filterKind | 否 | Tab 筛选:`all`(默认)/ `urgent` / `unread` | | processStatus | 否 | 未处理、处理中、已处理 |
| current | 否 | 当前页 | | current | 否 | 当前页 |
| size | 否 | 每页条数 | | size | 否 | 每页条数 |
**Tab 对应关系**(原型页右上角):
| Tab | filterKind |
|-----|------------|
| 全部消息 | all 或不传 |
| 紧急 | urgent |
| 未读/未处理 | unread |
**请求示例** **请求示例**
``` ```
GET /safetyEval/regulator/risk-center/page?filterKind=urgent&current=1&size=10 GET /safetyEval/regulator/risk-center/page?level=紧急&current=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=未处理&current=1&size=10
``` ```
**响应示例** **响应示例**
@ -201,7 +194,7 @@ GET /safetyEval/regulator/risk-center/page?keyword=张建国&warningType=证书
{ {
"id": "W-2026-008", "id": "W-2026-008",
"warningType": "证书过期", "warningType": "证书过期",
"level": "urgent", "level": "紧急",
"levelName": "紧急", "levelName": "紧急",
"sourceModule": "评价师信息管理", "sourceModule": "评价师信息管理",
"sourceFields": ["人员姓名", "证书类型", "有效期至"], "sourceFields": ["人员姓名", "证书类型", "有效期至"],
@ -265,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&current=1&size=10`).then(r => r.json()); const list = await fetch(`${BASE}/page?level=紧急&current=1&size=10`).then(r => r.json());
// 4. 处置 // 4. 处置
await fetch(`${BASE}/handle`, { await fetch(`${BASE}/handle`, {

View File

@ -10,6 +10,9 @@ import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.regulator.RegulatorRiskHandleCmd; import org.qinan.safetyeval.client.dto.regulator.RegulatorRiskHandleCmd;
import org.qinan.safetyeval.client.dto.regulator.RegulatorRiskMessagePageQuery; import org.qinan.safetyeval.client.dto.regulator.RegulatorRiskMessagePageQuery;
import org.qinan.safetyeval.client.dto.regulator.RegulatorRiskPriorityAlertQuery; import org.qinan.safetyeval.client.dto.regulator.RegulatorRiskPriorityAlertQuery;
import org.qinan.safetyeval.client.enums.regulator.RegulatorRiskLevelEnum;
import org.qinan.safetyeval.client.enums.regulator.RegulatorRiskProcessStatusEnum;
import org.qinan.safetyeval.client.enums.regulator.RegulatorRiskWarningTypeEnum;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -33,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("人员姓名", "离职日期"),
"某化工项目安全评价报告超过计划节点 7 天未完成。", "未处理", "qual-monitor")); "某安全评价师已离职但仍在机构备案名单中。", "未处理", "evaluator"));
messages.add(message("W-2026-003", "账号限制", "normal", "机构账号管理", messages.add(message("W-2026-003", "人员离职", "一般", "评价师信息管理",
Arrays.asList("机构名称", "账号状态"), Arrays.asList("人员姓名", "离职日期"),
"渝安风险评估中心账号处于禁用状态,仍有新业务备案尝试。", "待确认", "institution-account")); "某安全评价师已提交离职申请,资质系统未更新。", "待确认", "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"));
} }
@ -112,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), "需监管人员处置"),
@ -177,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";
@ -200,17 +203,25 @@ public class RegulatorRiskCenterController {
if (StringUtils.hasText(query.getLevel()) && !query.getLevel().equals(item.getLevel())) { if (StringUtils.hasText(query.getLevel()) && !query.getLevel().equals(item.getLevel())) {
return false; return false;
} }
if (StringUtils.hasText(query.getFilterKind()) && !"all".equals(query.getFilterKind())) { if (StringUtils.hasText(query.getProcessStatus()) && !matchProcessStatus(query.getProcessStatus(), item.getStatus())) {
if ("urgent".equals(query.getFilterKind()) && !"urgent".equals(item.getLevel())) { return false;
return false;
}
if ("unread".equals(query.getFilterKind()) && !isUntreated(item.getStatus())) {
return false;
}
} }
return true; return true;
} }
private boolean matchProcessStatus(String queryStatus, String itemStatus) {
if (RegulatorRiskProcessStatusEnum.UNPROCESSED.getName().equals(queryStatus)) {
return Arrays.asList("未处理", "待确认").contains(itemStatus);
}
if (RegulatorRiskProcessStatusEnum.PROCESSING.getName().equals(queryStatus)) {
return "处理中".equals(itemStatus);
}
if (RegulatorRiskProcessStatusEnum.PROCESSED.getName().equals(queryStatus)) {
return Arrays.asList("已闭环", "已发函", "已提醒", "已处置").contains(itemStatus);
}
return false;
}
private String resolveStatus(RegulatorRiskHandleCmd cmd) { private String resolveStatus(RegulatorRiskHandleCmd cmd) {
if (StringUtils.hasText(cmd.getStatus())) { if (StringUtils.hasText(cmd.getStatus())) {
return cmd.getStatus(); return cmd.getStatus();
@ -263,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 "一般";
} }
} }

View File

@ -95,7 +95,7 @@ public class OrgDepartmentExecutor implements OrgDepartmentApi {
domainQuery.setPageNum(query.getCurrent()); domainQuery.setPageNum(query.getCurrent());
domainQuery.setPageSize(query.getSize()); domainQuery.setPageSize(query.getSize());
domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId()); domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId());
domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId()); domainQuery.setOrgId(query.getOrgId() == null ? ThreadLocalUserInfoAdapter.getOrgId() : query.getOrgId());
domainQuery.setDeptName(query.getDeptName()); domainQuery.setDeptName(query.getDeptName());
PageResult<OrgDepartmentEntity> pageResult = orgDepartmentDomainService.page(domainQuery); PageResult<OrgDepartmentEntity> pageResult = orgDepartmentDomainService.page(domainQuery);

View File

@ -96,7 +96,7 @@ public class OrgEquipmentExecutor implements OrgEquipmentApi {
domainQuery.setPageNum(query.getCurrent()); domainQuery.setPageNum(query.getCurrent());
domainQuery.setPageSize(query.getSize()); domainQuery.setPageSize(query.getSize());
domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId()); domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId());
domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId()); domainQuery.setOrgId(query.getOrgId() == null ? ThreadLocalUserInfoAdapter.getOrgId() : query.getOrgId());
domainQuery.setDeviceName(query.getDeviceName()); domainQuery.setDeviceName(query.getDeviceName());
domainQuery.setInstrumentType(query.getInstrumentType()); domainQuery.setInstrumentType(query.getInstrumentType());
domainQuery.setDeviceType(query.getDeviceType()); domainQuery.setDeviceType(query.getDeviceType());

View File

@ -92,7 +92,7 @@ public class OrgPersonnelCertExecutor implements OrgPersonnelCertApi {
domainQuery.setPageNum(query.getCurrent()); domainQuery.setPageNum(query.getCurrent());
domainQuery.setPageSize(query.getSize()); domainQuery.setPageSize(query.getSize());
domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId()); domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId());
domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId()); domainQuery.setOrgId(query.getOrgId() == null ? ThreadLocalUserInfoAdapter.getOrgId() : query.getOrgId());
domainQuery.setPersonnelId(query.getPersonnelId()); domainQuery.setPersonnelId(query.getPersonnelId());
domainQuery.setCertName(query.getCertName()); domainQuery.setCertName(query.getCertName());
domainQuery.setCertTypeCode(query.getCertTypeCode()); domainQuery.setCertTypeCode(query.getCertTypeCode());

View File

@ -75,7 +75,7 @@ public class OrgPersonnelChangeExecutor implements OrgPersonnelChangeApi {
domainQuery.setPageNum(query.getCurrent()); domainQuery.setPageNum(query.getCurrent());
domainQuery.setPageSize(query.getSize()); domainQuery.setPageSize(query.getSize());
domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId()); domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId());
domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId()); domainQuery.setOrgId(query.getOrgId() == null ? ThreadLocalUserInfoAdapter.getOrgId() : query.getOrgId());
domainQuery.setPersonnelId(query.getPersonnelId()); domainQuery.setPersonnelId(query.getPersonnelId());
domainQuery.setChangeItem(query.getChangeItem()); domainQuery.setChangeItem(query.getChangeItem());

View File

@ -140,7 +140,7 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi {
domainQuery.setPageNum(query.getCurrent()); domainQuery.setPageNum(query.getCurrent());
domainQuery.setPageSize(query.getSize()); domainQuery.setPageSize(query.getSize());
domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId()); domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId());
domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId()); domainQuery.setOrgId(query.getOrgId() == null ? ThreadLocalUserInfoAdapter.getOrgId() : query.getOrgId());
domainQuery.setDeptId(query.getDeptId()); domainQuery.setDeptId(query.getDeptId());
domainQuery.setPostId(query.getPostId()); domainQuery.setPostId(query.getPostId());
domainQuery.setUserName(query.getUserName()); domainQuery.setUserName(query.getUserName());

View File

@ -72,7 +72,7 @@ public class OrgPositionExecutor implements OrgPositionApi {
domainQuery.setPageNum(query.getCurrent()); domainQuery.setPageNum(query.getCurrent());
domainQuery.setPageSize(query.getSize()); domainQuery.setPageSize(query.getSize());
domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId()); domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId());
domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId()); domainQuery.setOrgId(query.getOrgId() == null ? ThreadLocalUserInfoAdapter.getOrgId() : query.getOrgId());
domainQuery.setDeptId(query.getDeptId()); domainQuery.setDeptId(query.getDeptId());
domainQuery.setPositionName(query.getPositionName()); domainQuery.setPositionName(query.getPositionName());

View File

@ -91,7 +91,7 @@ public class OrgQualificationExecutor implements OrgQualificationApi {
domainQuery.setPageNum(query.getCurrent()); domainQuery.setPageNum(query.getCurrent());
domainQuery.setPageSize(query.getSize()); domainQuery.setPageSize(query.getSize());
domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId()); domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId());
domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId()); domainQuery.setOrgId(query.getOrgId() == null ? ThreadLocalUserInfoAdapter.getOrgId() : query.getOrgId());
domainQuery.setCertName(query.getCertName()); domainQuery.setCertName(query.getCertName());
domainQuery.setCertNo(query.getCertNo()); domainQuery.setCertNo(query.getCertNo());
domainQuery.setEnableFlag(query.getEnableFlag()); domainQuery.setEnableFlag(query.getEnableFlag());

View File

@ -106,7 +106,7 @@ public class OrgResignApplyExecutor implements OrgResignApplyApi {
domainQuery.setPageNum(query.getCurrent()); domainQuery.setPageNum(query.getCurrent());
domainQuery.setPageSize(query.getSize()); domainQuery.setPageSize(query.getSize());
domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId()); domainQuery.setTenantId(AuthUserContextAdapter.getCurrentTenantId());
domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId()); domainQuery.setOrgId(query.getOrgId() == null ? ThreadLocalUserInfoAdapter.getOrgId() : query.getOrgId());
domainQuery.setPersonnelId(query.getPersonnelId()); domainQuery.setPersonnelId(query.getPersonnelId());
domainQuery.setAuditStatusCode(query.getAuditStatusCode()); domainQuery.setAuditStatusCode(query.getAuditStatusCode());
domainQuery.setApplicantName(query.getApplicantName()); domainQuery.setApplicantName(query.getApplicantName());

View File

@ -186,7 +186,7 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
QualFilingChangeQuery domainQuery = new QualFilingChangeQuery(); QualFilingChangeQuery domainQuery = new QualFilingChangeQuery();
domainQuery.setPageNum(query.getCurrent()); domainQuery.setPageNum(query.getCurrent());
domainQuery.setPageSize(query.getSize()); domainQuery.setPageSize(query.getSize());
domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId()); domainQuery.setOrgId(query.getOrgId() == null ? ThreadLocalUserInfoAdapter.getOrgId() : query.getOrgId());
domainQuery.setFilingNo(query.getFilingNo()); domainQuery.setFilingNo(query.getFilingNo());
domainQuery.setFilingUnitName(query.getFilingUnitName()); domainQuery.setFilingUnitName(query.getFilingUnitName());
domainQuery.setFilingTerritoryCode(query.getFilingTerritoryCode()); domainQuery.setFilingTerritoryCode(query.getFilingTerritoryCode());

View File

@ -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("等级名称:紧急/重要/一般")

View File

@ -15,12 +15,12 @@ public class RegulatorRiskMessagePageQuery extends BasePageQuery {
@ApiModelProperty("关键词:机构/人员/项目/预警编号") @ApiModelProperty("关键词:机构/人员/项目/预警编号")
private String keyword; private String keyword;
@ApiModelProperty("预警类型:证书过期/社保异常/信息变更/项目超期/账号限制") @ApiModelProperty(value = "预警类型", allowableValues = "证书过期,证书临期,社保异常,人员离职,信息变更")
private String warningType; private String warningType;
@ApiModelProperty("等级urgent/important/normal") @ApiModelProperty(value = "预警等级", allowableValues = "紧急,重要,一般")
private String level; private String level;
@ApiModelProperty("Tab筛选all/urgent/unread") @ApiModelProperty(value = "处理状态", allowableValues = "未处理,处理中,已处理")
private String filterKind; private String processStatus;
} }

View File

@ -9,10 +9,10 @@ import lombok.Data;
@Data @Data
public class RegulatorRiskPriorityAlertQuery { public class RegulatorRiskPriorityAlertQuery {
@ApiModelProperty("等级urgent/important/normal默认 urgent") @ApiModelProperty(value = "预警等级", allowableValues = "紧急,重要,一般")
private String level = "urgent"; private String level = "紧急";
@ApiModelProperty("预警类型:证书过期/社保异常/信息变更/项目超期/账号限制") @ApiModelProperty(value = "预警类型", allowableValues = "证书过期,证书临期,社保异常,人员离职,信息变更")
private String warningType; private String warningType;
@ApiModelProperty("来源模块") @ApiModelProperty("来源模块")

View File

@ -0,0 +1,42 @@
package org.qinan.safetyeval.client.enums.regulator;
import java.util.Objects;
/**
* -
*/
public enum RegulatorRiskLevelEnum {
URGENT("紧急", "紧急"),
IMPORTANT("重要", "重要"),
NORMAL("一般", "一般"),
;
private final String code;
private final String name;
RegulatorRiskLevelEnum(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
public static RegulatorRiskLevelEnum ofCode(String code) {
if (code == null) {
return null;
}
for (RegulatorRiskLevelEnum item : values()) {
if (Objects.equals(item.code, code)) {
return item;
}
}
return null;
}
}

View File

@ -0,0 +1,36 @@
package org.qinan.safetyeval.client.enums.regulator;
import java.util.Objects;
/**
* -
*/
public enum RegulatorRiskProcessStatusEnum {
UNPROCESSED("未处理"),
PROCESSING("处理中"),
PROCESSED("已处理"),
;
private final String name;
RegulatorRiskProcessStatusEnum(String name) {
this.name = name;
}
public String getName() {
return name;
}
public static RegulatorRiskProcessStatusEnum ofName(String name) {
if (name == null) {
return null;
}
for (RegulatorRiskProcessStatusEnum item : values()) {
if (Objects.equals(item.name, name)) {
return item;
}
}
return null;
}
}

View File

@ -0,0 +1,38 @@
package org.qinan.safetyeval.client.enums.regulator;
import java.util.Objects;
/**
* -
*/
public enum RegulatorRiskWarningTypeEnum {
CERT_EXPIRED("证书过期"),
CERT_EXPIRING("证书临期"),
SOCIAL_INSURANCE_ABNORMAL("社保异常"),
EMPLOYEE_RESIGNED("人员离职"),
INFO_CHANGED("信息变更"),
;
private final String name;
RegulatorRiskWarningTypeEnum(String name) {
this.name = name;
}
public String getName() {
return name;
}
public static RegulatorRiskWarningTypeEnum ofName(String name) {
if (name == null) {
return null;
}
for (RegulatorRiskWarningTypeEnum item : values()) {
if (Objects.equals(item.name, name)) {
return item;
}
}
return null;
}
}

View File

@ -1,4 +1,4 @@
spring: spring:
web: web:
resources: resources:
cache: cache:

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/7/14 16:52:04] App_Identifier[safetyEval-h5]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><meta charset="UTF-8" name="referrer" content="strict-origin-when-cross-origin"/><title>大屏</title><script>(function () { <!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/7/15 11:35:53] App_Identifier[safetyEval-h5]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><meta charset="UTF-8" name="referrer" content="strict-origin-when-cross-origin"/><title>大屏</title><script>(function () {
const APP_ENV = { const APP_ENV = {
antd: { antd: {
'ant-prefix': 'micro-temp', 'ant-prefix': 'micro-temp',
@ -126,4 +126,4 @@
} }
mergeParams(); mergeParams();
})(); })();
})();</script><script defer="defer" src="/safetyEval-h5/static/js/548.ac3036a0ff72bbda.js"></script><script defer="defer" src="/safetyEval-h5/static/js/551.40cd16b83ccef834.js"></script><script defer="defer" src="/safetyEval-h5/static/js/485.cc16547839dceff2.js"></script><script defer="defer" src="/safetyEval-h5/static/js/main.acbe16f096b75fe9.js"></script><link href="/safetyEval-h5/static/css/main.82ee4667fd2973b4.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto;"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/7/14 16:52:04] App_Identifier[safetyEval-h5] Frontend_Branch[dev] Backend_Branch[<branch-name>]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body><script src="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Cesium.js"></script><link href="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Widgets/widgets.css" rel="stylesheet"></html> })();</script><script defer="defer" src="/safetyEval-h5/static/js/548.ac3036a0ff72bbda.js"></script><script defer="defer" src="/safetyEval-h5/static/js/551.40cd16b83ccef834.js"></script><script defer="defer" src="/safetyEval-h5/static/js/485.cc16547839dceff2.js"></script><script defer="defer" src="/safetyEval-h5/static/js/main.f98503f3c068bbb9.js"></script><link href="/safetyEval-h5/static/css/main.82ee4667fd2973b4.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto;"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/7/15 11:35:53] App_Identifier[safetyEval-h5] Frontend_Branch[dev_1.0.1] Backend_Branch[<branch-name>]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body><script src="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Cesium.js"></script><link href="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Widgets/widgets.css" rel="stylesheet"></html>

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/14 17:06:09] App_Identifier[safetyEval]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () { <!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/15 17:30:37] App_Identifier[safetyEval]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
const APP_ENV = { const APP_ENV = {
antd: { antd: {
'ant-prefix': 'micro-temp', 'ant-prefix': 'micro-temp',
@ -89,4 +89,4 @@
}, },
} }
}</script><script defer="defer" src="/safetyEval/static/js/323.fd0657fd2fffbe7a.js"></script><script defer="defer" src="/safetyEval/static/js/121.ae75e71830bf4ae0.js"></script><script defer="defer" src="/safetyEval/static/js/289.ab5c99a14babc2d4.js"></script><script defer="defer" src="/safetyEval/static/js/main.5a03dc1748bb1352.js"></script><link href="/safetyEval/static/css/main.1d4eeef67f56f89e.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/14 17:06:09] App_Identifier[safetyEval] Frontend_Branch[dev] Backend_Branch[dev]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html> }</script><script defer="defer" src="/safetyEval/static/js/323.fd0657fd2fffbe7a.js"></script><script defer="defer" src="/safetyEval/static/js/121.ae75e71830bf4ae0.js"></script><script defer="defer" src="/safetyEval/static/js/289.ab5c99a14babc2d4.js"></script><script defer="defer" src="/safetyEval/static/js/main.cf3854095b32e85a.js"></script><link href="/safetyEval/static/css/main.d4bcd75c2815b66b.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/15 17:30:37] App_Identifier[safetyEval] Frontend_Branch[dev] Backend_Branch[dev]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>

View File

@ -1693,7 +1693,7 @@
color: #1e293b; color: #1e293b;
} }
.qual-monitor .org-info .org-name { .qual-monitor .org-info .org-name {
font-weight: 500; font-weight: 600;
} }
.qual-monitor .org-info .org-meta { .qual-monitor .org-info .org-meta {
font-size: 0.72rem; font-size: 0.72rem;

View File

@ -1 +1 @@
module.exports={javaGit:"http://47.92.113.182:3000/cq_anquan/safety-eval-service.git",javaGitName:"safety-eval-service",environment:{development:{javaGitBranch:"dev",API_HOST:"http://192.168.0.150"},production:{javaGitBranch:"dev",API_HOST:""}},appIdentifier:"safetyEval",contextInject:{appKey:"",fileUrl:"https://skqhdg.porthebei.com:9004/file/uploadFiles2/"},windowInject:{title:"微应用模板",links:[],element:{root:{id:"root"}},scripts:[]},server:{port:"8081",host:"192.168.0.187",open:!1},framework:{antd:{"ant-prefix":"micro-temp",fontFamily:"PingFangSC-Regular",colorPrimary:"#1677ff",borderRadius:2}},webpackConfig:{htmlWebpackPluginOption:{inject:!0}}}; module.exports={javaGit:"http://47.92.113.182:3000/cq_anquan/safety-eval-service.git",javaGitName:"safety-eval-service",environment:{development:{javaGitBranch:"dev",API_HOST:"https://gbs-gateway.qhdsafety.com"},production:{javaGitBranch:"dev",API_HOST:""}},appIdentifier:"safetyEval",contextInject:{appKey:"",fileUrl:"https://skqhdg.porthebei.com:9004/file/uploadFiles2/"},windowInject:{title:"微应用模板",links:[],element:{root:{id:"root"}},scripts:[]},server:{port:"8081",host:"192.168.0.187",open:!1},framework:{antd:{"ant-prefix":"micro-temp",fontFamily:"PingFangSC-Regular",colorPrimary:"#1677ff",borderRadius:2}},webpackConfig:{htmlWebpackPluginOption:{inject:!0}}};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long