luotaiqian 2026-07-22 09:27:59 +08:00
parent 7bb48050e8
commit 247e384a96
9 changed files with 174 additions and 0 deletions

View File

@ -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.EvalProjectEnumsCO;
import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO;
import org.qinan.safetyeval.client.co.institution.EvalProjectProgressStatCO; 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.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd; import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery;
import org.qinan.safetyeval.client.dto.institution.EvalProjectProgressPageQuery; 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.qinan.safetyeval.infrastructure.dataobject.base.Req;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -69,4 +72,16 @@ public class EvalProjectController {
public PageResponse<EvalProjectProgressCO> progressPage(@Validated EvalProjectProgressPageQuery query) { public PageResponse<EvalProjectProgressCO> progressPage(@Validated EvalProjectProgressPageQuery query) {
return evalProjectApi.progressPage(query); return evalProjectApi.progressPage(query);
} }
@ApiOperation("风险预警管理统计")
@GetMapping("/risk-warning-stat")
public SingleResponse<RiskWarningStatCO> riskWarningStat() {
return evalProjectApi.riskWarningStat();
}
@ApiOperation("风险预警管理分页")
@GetMapping("/risk-warning-page")
public PageResponse<RiskWarningCO> riskWarningPage(@Validated RiskWarningPageQuery query) {
return evalProjectApi.riskWarningPage(query);
}
} }

View File

@ -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.EvalProjectEnumsCO;
import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO;
import org.qinan.safetyeval.client.co.institution.EvalProjectProgressStatCO; 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.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd; import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery;
import org.qinan.safetyeval.client.dto.institution.EvalProjectProgressPageQuery; 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.constant.EvalProjectProgressStatEnum;
import org.qinan.safetyeval.domain.entity.EvalProjectEntity; import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
import org.qinan.safetyeval.domain.exception.BizException; import org.qinan.safetyeval.domain.exception.BizException;
@ -114,6 +117,25 @@ public class EvalProjectExecutor implements EvalProjectApi {
return PageResponse.of(result.getRecords(), result.getTotal()); return PageResponse.of(result.getRecords(), result.getTotal());
} }
@Override
public SingleResponse<RiskWarningStatCO> riskWarningStat() {
RiskWarningStatCO co = new RiskWarningStatCO();
co.setTotalCount(0);
co.setHighRiskCount(0);
co.setProcessingCount(0);
co.setWeekNewCount(0);
return SingleResponse.success(co);
}
@Override
public PageResponse<RiskWarningCO> riskWarningPage(RiskWarningPageQuery query) {
EvalProjectQuery domainQuery = new EvalProjectQuery();
domainQuery.setOrgId(ThreadLocalUserInfoAdapter.getOrgId());
Page<RiskWarningCO> page = new Page<>( query.getCurrent(), query.getSize());
IPage<RiskWarningCO> result = evalProjectMapper.selectRiskWarningPage(page, domainQuery);
return PageResponse.of(result.getRecords(), result.getTotal());
}
/** /**
* *
* *

View File

@ -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.EvalProjectEnumsCO;
import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO;
import org.qinan.safetyeval.client.co.institution.EvalProjectProgressStatCO; 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.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd; import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery;
import org.qinan.safetyeval.client.dto.institution.EvalProjectProgressPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectProgressPageQuery;
import org.qinan.safetyeval.client.dto.institution.RiskWarningPageQuery;
import java.util.List; import java.util.List;
@ -27,4 +30,8 @@ public interface EvalProjectApi {
SingleResponse<EvalProjectProgressStatCO> progressStat(); SingleResponse<EvalProjectProgressStatCO> progressStat();
PageResponse<EvalProjectProgressCO> progressPage(EvalProjectProgressPageQuery query); PageResponse<EvalProjectProgressCO> progressPage(EvalProjectProgressPageQuery query);
SingleResponse<RiskWarningStatCO> riskWarningStat();
PageResponse<RiskWarningCO> riskWarningPage(RiskWarningPageQuery query);
} }

View File

@ -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;
}

View File

@ -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;
}

View File

@ -4,6 +4,9 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat; 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; import java.time.LocalDateTime;
/** /**
@ -18,9 +21,12 @@ import java.time.LocalDateTime;
public class BasePageQuery { public class BasePageQuery {
@ApiModelProperty(value = "当前页默认1") @ApiModelProperty(value = "当前页默认1")
@Min(1)
@Max(Integer.MAX_VALUE)
private Long current = 1L; private Long current = 1L;
@ApiModelProperty(value = "每页条数默认10") @ApiModelProperty(value = "每页条数默认10")
@Min(1)
private Long size = 10L; private Long size = 10L;
@ApiModelProperty(value = "排序(格式: column:asc|desc, 多个用逗号分隔)") @ApiModelProperty(value = "排序(格式: column:asc|desc, 多个用逗号分隔)")

View File

@ -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;
}

View File

@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; 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.domain.query.EvalProjectQuery;
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO; import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO;
@ -20,4 +21,9 @@ public interface EvalProjectMapper extends BaseMapper<EvalProjectDO> {
* eval_customer EvalProjectProgressCO * eval_customer EvalProjectProgressCO
*/ */
IPage<EvalProjectProgressCO> selectProgressPage(Page<EvalProjectProgressCO> page, @Param("query") EvalProjectQuery query); IPage<EvalProjectProgressCO> selectProgressPage(Page<EvalProjectProgressCO> page, @Param("query") EvalProjectQuery query);
/**
* /
*/
IPage<RiskWarningCO> selectRiskWarningPage(Page<RiskWarningCO> page, @Param("query") EvalProjectQuery query);
} }

View File

@ -40,4 +40,24 @@
ORDER BY p.id DESC ORDER BY p.id DESC
</select> </select>
<!-- 风险预警管理分页查询(暂只查项目编号、项目/客户、责任人) -->
<select id="selectRiskWarningPage"
resultType="org.qinan.safetyeval.client.co.institution.RiskWarningCO">
SELECT
p.id,
p.project_no,
p.project_name,
c.customer_name,
p.project_leader_name AS responsible_person
FROM eval_project p
LEFT JOIN eval_customer c
ON c.id = p.customer_id
AND c.delete_enum = 'false'
WHERE p.delete_enum = 'false'
<if test="query.orgId != null">
AND p.org_id = #{query.orgId}
</if>
ORDER BY p.id DESC
</select>
</mapper> </mapper>