From 4ea9576af87bc3c6c7c8bafc20b27bae30e0b97a Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Wed, 22 Jul 2026 14:12:38 +0800 Subject: [PATCH] waring --- .../web/EvalProjectWaringController.java | 15 ++++++ .../service/EvalProjectWaringServiceI.java | 15 ++++++ .../impl/EvalProjectWaringServiceImpl.java | 27 +++++++++- .../EvalProjectWaringRemindPageQry.java | 28 +++++++++++ .../response/EvalProjectWaringRemindCo.java | 49 ++++++++++++++++++ .../response/EvalProjectWaringStatCo.java | 27 ++++++++++ .../mapper/EvalProjectWaringMapper.java | 16 ++++++ .../mapper/EvalProjectWaringMapper.xml | 50 +++++++++++++++++++ 8 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/request/EvalProjectWaringRemindPageQry.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/response/EvalProjectWaringRemindCo.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/response/EvalProjectWaringStatCo.java diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/EvalProjectWaringController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/EvalProjectWaringController.java index 7fd1e67..b1f47f7 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/EvalProjectWaringController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/EvalProjectWaringController.java @@ -5,8 +5,11 @@ import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.SingleResponse; import org.qinan.safetyeval.app.waring.service.EvalProjectWaringServiceI; import org.qinan.safetyeval.client.waring.response.EvalProjectWaringCo; +import org.qinan.safetyeval.client.waring.response.EvalProjectWaringRemindCo; +import org.qinan.safetyeval.client.waring.response.EvalProjectWaringStatCo; import org.qinan.safetyeval.client.waring.request.EvalProjectWaringAddCmd; import org.qinan.safetyeval.client.waring.request.EvalProjectWaringPageQry; +import org.qinan.safetyeval.client.waring.request.EvalProjectWaringRemindPageQry; import org.qinan.safetyeval.client.waring.request.EvalProjectWaringUpdateCmd; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -68,4 +71,16 @@ public class EvalProjectWaringController implements Serializable{ return Response.buildSuccess(); } + @GetMapping("/stat") + @ApiOperation("安评业务提醒统计") + public SingleResponse stat() { + return SingleResponse.of(evalProjectWaringServiceI.statEvalProjectWaring()); + } + + @GetMapping("/remind-page") + @ApiOperation("安评业务提醒分页") + public PageResponse remindPage(@Validated EvalProjectWaringRemindPageQry qry) { + return evalProjectWaringServiceI.remindPageEvalProjectWaring(qry); + } + } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/waring/service/EvalProjectWaringServiceI.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/waring/service/EvalProjectWaringServiceI.java index 724a52a..4b0a704 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/waring/service/EvalProjectWaringServiceI.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/waring/service/EvalProjectWaringServiceI.java @@ -2,8 +2,11 @@ package org.qinan.safetyeval.app.waring.service; import com.alibaba.cola.dto.PageResponse; import org.qinan.safetyeval.client.waring.response.EvalProjectWaringCo; +import org.qinan.safetyeval.client.waring.response.EvalProjectWaringRemindCo; +import org.qinan.safetyeval.client.waring.response.EvalProjectWaringStatCo; import org.qinan.safetyeval.client.waring.request.EvalProjectWaringAddCmd; import org.qinan.safetyeval.client.waring.request.EvalProjectWaringPageQry; +import org.qinan.safetyeval.client.waring.request.EvalProjectWaringRemindPageQry; import org.qinan.safetyeval.client.waring.request.EvalProjectWaringUpdateCmd; /** @@ -54,5 +57,17 @@ public interface EvalProjectWaringServiceI { */ boolean deletedEvalProjectWaringByIds(Long[] ids); + /** + * 安评业务提醒统计 + * @return 统计结果 + */ + EvalProjectWaringStatCo statEvalProjectWaring(); + + /** + * 安评业务提醒分页 + * @param evalProjectWaringRemindPageQry 查询条件 + * @return 分页结果 + */ + PageResponse remindPageEvalProjectWaring(EvalProjectWaringRemindPageQry evalProjectWaringRemindPageQry); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/waring/service/impl/EvalProjectWaringServiceImpl.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/waring/service/impl/EvalProjectWaringServiceImpl.java index 2de4fca..946b57f 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/waring/service/impl/EvalProjectWaringServiceImpl.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/waring/service/impl/EvalProjectWaringServiceImpl.java @@ -1,16 +1,23 @@ package org.qinan.safetyeval.app.waring.service.impl; import com.alibaba.cola.dto.PageResponse; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jjb.saas.framework.repository.common.PageHelper; import org.qinan.safetyeval.app.waring.executor.command.EvalProjectWaringAddCmdExe; import org.qinan.safetyeval.app.waring.executor.command.EvalProjectWaringDelCmdExe; import org.qinan.safetyeval.app.waring.executor.command.EvalProjectWaringUpdateCmdExe; import org.qinan.safetyeval.app.waring.executor.query.EvalProjectWaringListQueryExe; import org.qinan.safetyeval.app.waring.executor.query.EvalProjectWaringPageQueryExe; import org.qinan.safetyeval.app.waring.service.EvalProjectWaringServiceI; -import org.qinan.safetyeval.client.waring.response.EvalProjectWaringCo; import org.qinan.safetyeval.client.waring.request.EvalProjectWaringAddCmd; import org.qinan.safetyeval.client.waring.request.EvalProjectWaringPageQry; +import org.qinan.safetyeval.client.waring.request.EvalProjectWaringRemindPageQry; import org.qinan.safetyeval.client.waring.request.EvalProjectWaringUpdateCmd; +import org.qinan.safetyeval.client.waring.response.EvalProjectWaringCo; +import org.qinan.safetyeval.client.waring.response.EvalProjectWaringRemindCo; +import org.qinan.safetyeval.client.waring.response.EvalProjectWaringStatCo; +import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; +import org.qinan.safetyeval.infrastructure.persistence.mapper.EvalProjectWaringMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; @@ -28,6 +35,8 @@ public class EvalProjectWaringServiceImpl implements EvalProjectWaringServiceI { private final EvalProjectWaringAddCmdExe evalProjectWaringAddCommandExe; private final EvalProjectWaringDelCmdExe evalProjectWaringDelCommandExe; private final EvalProjectWaringPageQueryExe evalProjectWaringPageQueryExe; + private final EvalProjectWaringMapper evalProjectWaringMapper; + @Override public PageResponse listEvalProjectWaringPage(EvalProjectWaringPageQry evalProjectWaringPageQry) { return evalProjectWaringPageQueryExe.execute(evalProjectWaringPageQry); @@ -58,4 +67,20 @@ public class EvalProjectWaringServiceImpl implements EvalProjectWaringServiceI { return evalProjectWaringDelCommandExe.execute(ids); } + @Override + public EvalProjectWaringStatCo statEvalProjectWaring() { + Long orgId = ThreadLocalUserInfoAdapter.getOrgId(); + EvalProjectWaringStatCo co = evalProjectWaringMapper.selectStat(orgId); + return co != null ? co : new EvalProjectWaringStatCo(); + } + + @SuppressWarnings("unchecked") + @Override + public PageResponse remindPageEvalProjectWaring(EvalProjectWaringRemindPageQry evalProjectWaringRemindPageQry) { + Long orgId = ThreadLocalUserInfoAdapter.getOrgId(); + IPage page = PageHelper.queryToPage(evalProjectWaringRemindPageQry); + IPage result = evalProjectWaringMapper.selectRemindPage(page, orgId, evalProjectWaringRemindPageQry); + return PageHelper.pageToResponse(result, result.getRecords()); + } + } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/request/EvalProjectWaringRemindPageQry.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/request/EvalProjectWaringRemindPageQry.java new file mode 100644 index 0000000..dc46c45 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/request/EvalProjectWaringRemindPageQry.java @@ -0,0 +1,28 @@ +package org.qinan.safetyeval.client.waring.request; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 安评业务提醒分页查询 + */ +@Data +public class EvalProjectWaringRemindPageQry extends PageQuery implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("客户名称") + private String customerName; + + @ApiModelProperty("行业") + private String industryCode; + + @ApiModelProperty("提醒等级") + private String waringStatus; + + @ApiModelProperty("项目名称") + private String projectName; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/response/EvalProjectWaringRemindCo.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/response/EvalProjectWaringRemindCo.java new file mode 100644 index 0000000..12bb1a4 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/response/EvalProjectWaringRemindCo.java @@ -0,0 +1,49 @@ +package org.qinan.safetyeval.client.waring.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 安评业务提醒列表项 + */ +@Data +public class EvalProjectWaringRemindCo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("预警id") + private Long id; + + @ApiModelProperty("项目id") + private Long projectId; + + @ApiModelProperty("客户名称") + private String customerName; + + @ApiModelProperty("行业") + private String industryCode; + + @ApiModelProperty("最近报告完成日") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime archiveDate; + + @ApiModelProperty("周期") + private Long cycleDate; + + @ApiModelProperty("下次应开展") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime reassessmentDate; + + @ApiModelProperty("提醒等级") + private String waringStatus; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("业务负责人") + private String projectLeaderName; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/response/EvalProjectWaringStatCo.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/response/EvalProjectWaringStatCo.java new file mode 100644 index 0000000..1db3f24 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/waring/response/EvalProjectWaringStatCo.java @@ -0,0 +1,27 @@ +package org.qinan.safetyeval.client.waring.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 安评业务提醒统计 + */ +@Data +public class EvalProjectWaringStatCo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty("首次预警数") + private Integer firstWaringCount; + + @ApiModelProperty("二次提醒数") + private Integer secondWaringCount; + + @ApiModelProperty("紧急预警数") + private Integer emergencyWaringCount; + + @ApiModelProperty("纳入提醒客户数") + private Integer remindCount; +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/mapper/EvalProjectWaringMapper.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/mapper/EvalProjectWaringMapper.java index 446ca6b..467c1ca 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/mapper/EvalProjectWaringMapper.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/mapper/EvalProjectWaringMapper.java @@ -2,6 +2,10 @@ package org.qinan.safetyeval.infrastructure.persistence.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.qinan.safetyeval.infrastructure.persistence.domainobject.EvalProjectWaringDO; +import org.qinan.safetyeval.client.waring.request.EvalProjectWaringRemindPageQry; +import org.qinan.safetyeval.client.waring.response.EvalProjectWaringRemindCo; +import org.qinan.safetyeval.client.waring.response.EvalProjectWaringStatCo; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -12,4 +16,16 @@ import org.apache.ibatis.annotations.Param; */ @Mapper public interface EvalProjectWaringMapper extends BaseMapper { + + /** + * 安评业务提醒统计(单条SQL聚合) + */ + EvalProjectWaringStatCo selectStat(@Param("orgId") Long orgId); + + /** + * 安评业务提醒分页查询(关联 eval_project、eval_customer) + */ + IPage selectRemindPage(IPage page, + @Param("orgId") Long orgId, + @Param("query") EvalProjectWaringRemindPageQry query); } diff --git a/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectWaringMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectWaringMapper.xml index 26295ea..94f58a6 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectWaringMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectWaringMapper.xml @@ -32,4 +32,54 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, org_id, project_id, archive_date, waring_status, waring_start_time, reassessment_date, cycle_date, delete_enum, remarks, create_name, update_name, tenant_id, version, create_time, update_time, create_id, update_id, env, project_node, industry_code from eval_project_waring + + + + + + \ No newline at end of file