diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectController.java index 126a66b..82aa437 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectController.java @@ -8,11 +8,14 @@ import org.qinan.safetyeval.client.co.institution.EvalProjectCO; import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressStatCO; +import org.qinan.safetyeval.client.co.institution.RiskWarningCO; +import org.qinan.safetyeval.client.co.institution.RiskWarningStatCO; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd; import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectProgressPageQuery; +import org.qinan.safetyeval.client.dto.institution.RiskWarningPageQuery; import org.qinan.safetyeval.infrastructure.dataobject.base.Req; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -69,4 +72,16 @@ public class EvalProjectController { public PageResponse progressPage(@Validated EvalProjectProgressPageQuery query) { return evalProjectApi.progressPage(query); } + + @ApiOperation("风险预警管理统计") + @GetMapping("/risk-warning-stat") + public SingleResponse riskWarningStat() { + return evalProjectApi.riskWarningStat(); + } + + @ApiOperation("风险预警管理分页") + @GetMapping("/risk-warning-page") + public PageResponse riskWarningPage(@Validated RiskWarningPageQuery query) { + return evalProjectApi.riskWarningPage(query); + } } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java index 86eede0..4e3d88f 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java @@ -6,11 +6,14 @@ import org.qinan.safetyeval.client.co.institution.EvalProjectCO; import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressStatCO; +import org.qinan.safetyeval.client.co.institution.RiskWarningCO; +import org.qinan.safetyeval.client.co.institution.RiskWarningStatCO; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd; import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectProgressPageQuery; +import org.qinan.safetyeval.client.dto.institution.RiskWarningPageQuery; import org.qinan.safetyeval.domain.constant.EvalProjectProgressStatEnum; import org.qinan.safetyeval.domain.entity.EvalProjectEntity; import org.qinan.safetyeval.domain.exception.BizException; @@ -114,6 +117,25 @@ public class EvalProjectExecutor implements EvalProjectApi { return PageResponse.of(result.getRecords(), result.getTotal()); } + @Override + public SingleResponse riskWarningStat() { + RiskWarningStatCO co = new RiskWarningStatCO(); + co.setTotalCount(0); + co.setHighRiskCount(0); + co.setProcessingCount(0); + co.setWeekNewCount(0); + return SingleResponse.success(co); + } + + @Override + public PageResponse riskWarningPage(RiskWarningPageQuery query) { + EvalProjectQuery domainQuery = new EvalProjectQuery(); + domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId()); + Page page = new Page<>( query.getCurrent(), query.getSize()); + IPage result = evalProjectMapper.selectRiskWarningPage(page, domainQuery); + return PageResponse.of(result.getRecords(), result.getTotal()); + } + /** * 根据项目结束日期计算剩余天数、进度状态码、进度状态名称。 * 规则(参考原型页面): diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectApi.java index ca15e5b..460ed73 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectApi.java @@ -4,11 +4,14 @@ import org.qinan.safetyeval.client.co.institution.EvalProjectCO; import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressStatCO; +import org.qinan.safetyeval.client.co.institution.RiskWarningCO; +import org.qinan.safetyeval.client.co.institution.RiskWarningStatCO; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd; import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectProgressPageQuery; +import org.qinan.safetyeval.client.dto.institution.RiskWarningPageQuery; import java.util.List; @@ -27,4 +30,8 @@ public interface EvalProjectApi { SingleResponse progressStat(); PageResponse progressPage(EvalProjectProgressPageQuery query); + + SingleResponse riskWarningStat(); + + PageResponse riskWarningPage(RiskWarningPageQuery query); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/RiskWarningCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/RiskWarningCO.java new file mode 100644 index 0000000..62e0a57 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/RiskWarningCO.java @@ -0,0 +1,52 @@ +package org.qinan.safetyeval.client.co.institution; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDate; + +/** + * 风险预警管理列表项 + */ +@Data +public class RiskWarningCO { + + @ApiModelProperty("主键ID") + private String id; + + @ApiModelProperty("项目编号") + private String projectNo; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("客户名称") + private String customerName; + + @ApiModelProperty("风险等级码:HIGH高风险 MIDDLE中风险 LOW低风险") + private String riskLevelCode; + + @ApiModelProperty("风险等级名称") + private String riskLevelName; + + @ApiModelProperty("预警类型码:PROGRESS进度 CYCLE周期 QUALITY质量 PERSONNEL人员 ARCHIVE归档") + private String warningTypeCode; + + @ApiModelProperty("预警类型名称") + private String warningTypeName; + + @ApiModelProperty("触发条件") + private String triggerCondition; + + @ApiModelProperty("责任人") + private String responsiblePerson; + + @ApiModelProperty("预警时间") + private LocalDate warningTime; + + @ApiModelProperty("状态码:UNHANDLED未处理 PROCESSING处理中") + private String statusCode; + + @ApiModelProperty("状态名称") + private String statusName; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/RiskWarningStatCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/RiskWarningStatCO.java new file mode 100644 index 0000000..a9e5f4a --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/RiskWarningStatCO.java @@ -0,0 +1,23 @@ +package org.qinan.safetyeval.client.co.institution; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 风险预警管理统计 + */ +@Data +public class RiskWarningStatCO { + + @ApiModelProperty("预警总数") + private Integer totalCount; + + @ApiModelProperty("高风险数(延期、逾期、重大整改)") + private Integer highRiskCount; + + @ApiModelProperty("处理中数(已分派但未闭环)") + private Integer processingCount; + + @ApiModelProperty("本周新增数") + private Integer weekNewCount; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/BasePageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/BasePageQuery.java index 5fc9d5f..cf0f01f 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/BasePageQuery.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/BasePageQuery.java @@ -4,6 +4,9 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import javax.validation.constraints.Digits; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; import java.time.LocalDateTime; /** @@ -18,9 +21,12 @@ import java.time.LocalDateTime; public class BasePageQuery { @ApiModelProperty(value = "当前页(默认1)") + @Min(1) + @Max(Integer.MAX_VALUE) private Long current = 1L; @ApiModelProperty(value = "每页条数(默认10)") + @Min(1) private Long size = 10L; @ApiModelProperty(value = "排序(格式: column:asc|desc, 多个用逗号分隔)") diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/RiskWarningPageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/RiskWarningPageQuery.java new file mode 100644 index 0000000..2501bb8 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/RiskWarningPageQuery.java @@ -0,0 +1,23 @@ +package org.qinan.safetyeval.client.dto.institution; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.qinan.safetyeval.client.dto.BasePageQuery; + +/** + * 风险预警管理分页查询 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class RiskWarningPageQuery extends BasePageQuery { + + @ApiModelProperty("项目或客户名称") + private String projectOrCustomer; + + @ApiModelProperty("风险等级:HIGH高风险 MIDDLE中风险 LOW低风险") + private String riskLevel; + + @ApiModelProperty("预警类型:PROGRESS进度 CYCLE周期 QUALITY质量 PERSONNEL人员 ARCHIVE归档") + private String warningType; +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/EvalProjectMapper.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/EvalProjectMapper.java index bdaa9b8..1642169 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/EvalProjectMapper.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/EvalProjectMapper.java @@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; +import org.qinan.safetyeval.client.co.institution.RiskWarningCO; import org.qinan.safetyeval.domain.query.EvalProjectQuery; import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO; @@ -20,4 +21,9 @@ public interface EvalProjectMapper extends BaseMapper { * 项目进度管理分页查询(关联 eval_customer 获取客户名称,直接返回 EvalProjectProgressCO) */ IPage selectProgressPage(Page page, @Param("query") EvalProjectQuery query); + + /** + * 风险预警管理分页查询(暂只查项目编号、项目/客户、责任人) + */ + IPage selectRiskWarningPage(Page page, @Param("query") EvalProjectQuery query); } diff --git a/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml index 7d4d5f5..54d25b7 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml @@ -40,4 +40,24 @@ ORDER BY p.id DESC + + +