diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/regulator/RegulatorEvalProjectMonitorController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/regulator/RegulatorEvalProjectMonitorController.java index 7068ac7..cb42837 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/regulator/RegulatorEvalProjectMonitorController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/regulator/RegulatorEvalProjectMonitorController.java @@ -5,10 +5,13 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.qinan.safetyeval.client.api.regulator.RegulatorEvalProjectMonitorApi; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatCO; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectNodeOverviewCO; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorPageQuery; +import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorRealtimePageQuery; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -44,5 +47,16 @@ public class RegulatorEvalProjectMonitorController { return regulatorEvalProjectMonitorApi.nodeOverview(projectId); } + @ApiOperation("实时监控统计") + @GetMapping("/stat") + public SingleResponse stat() { + return regulatorEvalProjectMonitorApi.stat(); + } + + @ApiOperation("实时监控分页") + @GetMapping("/realtime-page") + public PageResponse realtimePage(@Validated RegulatorEvalProjectMonitorRealtimePageQuery query) { + return regulatorEvalProjectMonitorApi.realtimePage(query); + } } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java index 8a18490..8433ffe 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/regulator/RegulatorEvalProjectMonitorExecutor.java @@ -1,19 +1,27 @@ package org.qinan.safetyeval.app.executor.regulator; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.qinan.safetyeval.app.executor.support.EvalProjectNodeOverviewAssembler; import org.qinan.safetyeval.app.executor.support.RegulatorMonitorCoConverter; import org.qinan.safetyeval.client.api.regulator.RegulatorEvalProjectMonitorApi; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatCO; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectNodeOverviewCO; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorPageQuery; +import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorRealtimePageQuery; +import org.qinan.safetyeval.domain.constant.EvalTypeEnum; +import org.qinan.safetyeval.domain.constant.IndustryEnum; import org.qinan.safetyeval.domain.entity.EvalProjectEntity; import org.qinan.safetyeval.domain.exception.BizException; import org.qinan.safetyeval.domain.exception.ErrorCode; import org.qinan.safetyeval.domain.gateway.EvalProjectGateway; import org.qinan.safetyeval.domain.query.EvalProjectQuery; import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -26,6 +34,8 @@ public class RegulatorEvalProjectMonitorExecutor implements RegulatorEvalProject private EvalProjectGateway evalProjectGateway; @Resource private EvalProjectNodeOverviewAssembler evalProjectNodeOverviewAssembler; + @Resource + private EvalProjectMapper evalProjectMapper; @Override public PageResponse page(RegulatorEvalProjectMonitorPageQuery query) { @@ -57,4 +67,23 @@ public class RegulatorEvalProjectMonitorExecutor implements RegulatorEvalProject return SingleResponse.success(RegulatorMonitorCoConverter.toRegulatorOverview( evalProjectNodeOverviewAssembler.buildForRegulator(Long.parseLong(projectId)))); } + + @Override + public SingleResponse stat() { + return SingleResponse.success(evalProjectMapper.selectRegulatorMonitorStat()); + } + + @Override + public PageResponse realtimePage(RegulatorEvalProjectMonitorRealtimePageQuery query) { + Page page = new Page<>(query.getCurrent(), query.getSize()); + IPage result = evalProjectMapper.selectRegulatorMonitorPage(page, query); + if (result.getRecords() != null) { + result.getRecords().forEach(this::fillDisplayFields); + } + return PageResponse.of(result.getRecords(), result.getTotal()); + } + + private void fillDisplayFields(RegulatorEvalProjectMonitorPageCO co) { + + } } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/regulator/RegulatorEvalProjectMonitorApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/regulator/RegulatorEvalProjectMonitorApi.java index e3e1f0f..8299ee8 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/regulator/RegulatorEvalProjectMonitorApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/regulator/RegulatorEvalProjectMonitorApi.java @@ -1,10 +1,13 @@ package org.qinan.safetyeval.client.api.regulator; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatCO; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectNodeOverviewCO; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorPageQuery; +import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorRealtimePageQuery; public interface RegulatorEvalProjectMonitorApi { @@ -13,4 +16,8 @@ public interface RegulatorEvalProjectMonitorApi { SingleResponse get(Long id); SingleResponse nodeOverview(String projectId); + + SingleResponse stat(); + + PageResponse realtimePage(RegulatorEvalProjectMonitorRealtimePageQuery query); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalProjectMonitorPageCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalProjectMonitorPageCO.java new file mode 100644 index 0000000..12a07ff --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalProjectMonitorPageCO.java @@ -0,0 +1,40 @@ +package org.qinan.safetyeval.client.co.regulator; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDate; + +/** + * 监管端-安评项目实时监控分页列表项 + */ +@Data +public class RegulatorEvalProjectMonitorPageCO { + + @ApiModelProperty("项目ID") + private String id; + + @ApiModelProperty("机构ID") + private String orgId; + + @ApiModelProperty("项目编号") + private String projectNo; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("评价机构") + private String orgName; + + @ApiModelProperty("评价类型编码") + private String evalTypeCode; + + @ApiModelProperty("行业编码") + private String industryCode; + + @ApiModelProperty("负责人") + private String leaderName; + + @ApiModelProperty("计划完成日期") + private LocalDate planEndDate; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalProjectMonitorStatCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalProjectMonitorStatCO.java new file mode 100644 index 0000000..24b1059 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/regulator/RegulatorEvalProjectMonitorStatCO.java @@ -0,0 +1,23 @@ +package org.qinan.safetyeval.client.co.regulator; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 监管端-安评项目实时监控统计 + */ +@Data +public class RegulatorEvalProjectMonitorStatCO { + + @ApiModelProperty("在监项目数") + private Integer monitoringCount; + + @ApiModelProperty("正常执行数(未归档)") + private Integer normalCount; + + @ApiModelProperty("进度/人员预警数") + private Integer warningCount; + + @ApiModelProperty("本月计划完成数") + private Integer monthPlanCompleteCount; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/regulator/RegulatorEvalProjectMonitorRealtimePageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/regulator/RegulatorEvalProjectMonitorRealtimePageQuery.java new file mode 100644 index 0000000..1808406 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/regulator/RegulatorEvalProjectMonitorRealtimePageQuery.java @@ -0,0 +1,40 @@ +package org.qinan.safetyeval.client.dto.regulator; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.qinan.safetyeval.client.dto.BasePageQuery; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +/** + * 监管端-安评项目实时监控分页查询 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class RegulatorEvalProjectMonitorRealtimePageQuery extends BasePageQuery { + + @ApiModelProperty("项目名称/编号") + private String projectNameOrNo; + + @ApiModelProperty("评价机构ID") + private Long orgId; + + @ApiModelProperty("评价类型编码:PRE/ACCEPT/STATUS") + private String evalTypeCode; + + @ApiModelProperty("行业类别编码") + private String industryCode; + + @ApiModelProperty("项目负责人") + private String leaderName; + + @ApiModelProperty("计划完成日期-起") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate planEndDateStart; + + @ApiModelProperty("计划完成日期-止") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate planEndDateEnd; +} 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 7b891b7..3270063 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 @@ -8,6 +8,9 @@ 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.client.co.regulator.RegulatorEvalProjectMonitorPageCO; +import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatCO; +import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorRealtimePageQuery; import org.qinan.safetyeval.domain.query.EvalProjectQuery; import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO; @@ -31,4 +34,15 @@ public interface EvalProjectMapper extends BaseMapper { long onSiteTaskSum(@Param("pIds") List pIds, @Param("val") String val); + /** + * 监管端-安评项目实时监控统计(未删除且法定项目,一条SQL聚合) + */ + RegulatorEvalProjectMonitorStatCO selectRegulatorMonitorStat(); + + /** + * 监管端-安评项目实时监控分页(未删除且法定项目,关联 org_info 获取评价机构名称) + */ + IPage selectRegulatorMonitorPage( + Page page, @Param("query") RegulatorEvalProjectMonitorRealtimePageQuery query); + } diff --git a/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml index 62ca2e1..9b0061d 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml @@ -78,4 +78,63 @@ JSON_CONTAINS(project_node, JSON_OBJECT('type', #{val},'state', 0)) + + + + + +