From 031cc25631f4b82870ec48b716bd5bc42f1f1741 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Tue, 25 Aug 2026 15:24:10 +0800 Subject: [PATCH] archive file --- .../institution/EvalProjectController.java | 14 ++++++ .../institution/EvalProjectExecutor.java | 38 ++++++++++++++ .../api/institution/EvalProjectApi.java | 10 ++++ .../EvalProjectArchiveSupervisionCO.java | 40 +++++++++++++++ ...valProjectArchiveSupervisionPageQuery.java | 23 +++++++++ .../mapper/EvalProjectMapper.java | 15 ++++++ .../resources/mapper/EvalProjectMapper.xml | 50 +++++++++++++++++++ 7 files changed, 190 insertions(+) create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectArchiveSupervisionCO.java create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectArchiveSupervisionPageQuery.java 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 077f25dd..62023e6b 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 @@ -10,6 +10,7 @@ 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.CustomerEvalProjectPageQuery; +import org.qinan.safetyeval.client.dto.institution.EvalProjectArchiveSupervisionPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectProgressPageQuery; import org.qinan.safetyeval.client.dto.institution.RiskWarningPageQuery; @@ -99,4 +100,17 @@ public class EvalProjectController { public PageResponse customerPage(@Validated CustomerEvalProjectPageQuery query) { return evalProjectApi.customerPage(query); } + + /** + * 项目档案监管分页查询(keyword 按项目名称/编号模糊搜索,支持评价机构、评价类型筛选, + * 返回流程文档数与补充文件数) + */ + @ApiOperation("项目档案监管分页") + @GetMapping("/archive-supervision-page") + public PageResponse archiveSupervisionPage( + @Validated EvalProjectArchiveSupervisionPageQuery query) { + return evalProjectApi.archiveSupervisionPage(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 aafd8bde..9905ea8a 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 @@ -350,6 +350,44 @@ public class EvalProjectExecutor implements EvalProjectApi { return SingleResponse.success(null); } + /** + * 项目档案监管分页查询:先分页查出项目基础信息, + * 再按项目ID批量统计 eval_project_archive_file 的流程文档数与补充文件数并回填。 + */ + @Override + public PageResponse archiveSupervisionPage(EvalProjectArchiveSupervisionPageQuery query) { + Page page = new Page<>(query.getCurrent(), query.getSize()); + IPage result = evalProjectMapper.selectArchiveSupervisionPage(page, query); + fillArchiveFileStat(result.getRecords()); + return PageResponse.of(result.getRecords(), result.getTotal()); + } + + /** + * 回填分页结果的流程文档/补充文件统计数与评价类型名称。 + */ + private void fillArchiveFileStat(List records) { + if (CollectionUtils.isEmpty(records)) { + return; + } + List projectIds = records.stream() + .map(co -> Long.parseLong(co.getId())) + .collect(Collectors.toList()); + Map statMap = evalProjectMapper + .selectArchiveFileStatByProjectIds(projectIds).stream() + .collect(Collectors.toMap(EvalProjectArchiveSupervisionCO::getId, co -> co)); + records.forEach(co -> { + EvalProjectArchiveSupervisionCO stat = statMap.get(co.getId()); + if (stat != null) { + co.setProcessFileCount(stat.getProcessFileCount()); + co.setAdditionalFileCount(stat.getAdditionalFileCount()); + } + EvalTypeEnum evalType = EvalTypeEnum.ofCode(co.getEvalTypeCode()); + if (evalType != null) { + co.setEvalTypeName(evalType.getValue()); + } + }); + } + private CustomerEvalProjectCO convertToCustomerCO(EvalProjectEntity entity) { CustomerEvalProjectCO co = new CustomerEvalProjectCO(); co.setId(entity.getId() == null ? null : String.valueOf(entity.getId())); 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 6254c485..fd2488d7 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 @@ -12,6 +12,7 @@ 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.CustomerEvalProjectPageQuery; +import org.qinan.safetyeval.client.dto.institution.EvalProjectArchiveSupervisionPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery; import org.qinan.safetyeval.client.dto.institution.EvalProjectProgressPageQuery; import org.qinan.safetyeval.client.dto.institution.RiskWarningPageQuery; @@ -48,4 +49,13 @@ public interface EvalProjectApi { SingleResponse appProjectStatistics(); SingleResponse update(EvalProjectAddCmd cmd); + + /** + * 项目档案监管分页查询(keyword 按项目名称/编号模糊搜索,支持评价机构、评价类型筛选, + * 并统计各项目的流程文档数与补充文件数) + * + * @param query 分页查询条件 + * @return 项目档案监管分页数据 + */ + PageResponse archiveSupervisionPage(EvalProjectArchiveSupervisionPageQuery query); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectArchiveSupervisionCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectArchiveSupervisionCO.java new file mode 100644 index 00000000..9550d1a9 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectArchiveSupervisionCO.java @@ -0,0 +1,40 @@ +package org.qinan.safetyeval.client.co.institution; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 项目档案监管分页列表项 + */ +@Data +public class EvalProjectArchiveSupervisionCO { + + @ApiModelProperty("项目ID") + private String id; + + @ApiModelProperty("项目编号") + private String projectNo; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("评价机构") + private String orgName; + + @ApiModelProperty("评价类别编码") + private String evalTypeCode; + + @ApiModelProperty("评价类别名称") + private String evalTypeName; + + @ApiModelProperty("项目最后更新时间") + private LocalDateTime updateTime; + + @ApiModelProperty("流程文档数(eval_project_archive_file.record_source=auto_process_record)") + private Integer processFileCount; + + @ApiModelProperty("补充文件数(eval_project_archive_file.record_source=upload_additional_files)") + private Integer additionalFileCount; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectArchiveSupervisionPageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectArchiveSupervisionPageQuery.java new file mode 100644 index 00000000..1c9b126b --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectArchiveSupervisionPageQuery.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 EvalProjectArchiveSupervisionPageQuery extends BasePageQuery { + + @ApiModelProperty("评价机构ID") + private Long orgId; + + @ApiModelProperty("评价机构名称(模糊查询,对应 org_info.unit_name)") + private String orgName; + + @ApiModelProperty("评价类型:PRE安全预评价 ACCEPT安全设施竣工验收评价 STATUS安全现状评价") + private String evalTypeCode; +} 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 7678efd9..6b5060fa 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.EvalProjectArchiveSupervisionCO; import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; import org.qinan.safetyeval.client.co.institution.RiskWarningCO; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorPageCO; @@ -13,6 +14,7 @@ import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorStatC import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyPageCO; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectSurveyStatCO; import org.qinan.safetyeval.client.co.regulator.RegulatorEvalSurveyClockInCO; +import org.qinan.safetyeval.client.dto.institution.EvalProjectArchiveSupervisionPageQuery; import org.qinan.safetyeval.client.dto.institution.RiskWarningPageQuery; import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectMonitorRealtimePageQuery; import org.qinan.safetyeval.client.dto.regulator.RegulatorEvalProjectSurveyPageQuery; @@ -77,5 +79,18 @@ public interface EvalProjectMapper extends BaseMapper { */ List selectRegulatorSurveyClockInList(@Param("projectId") Long projectId); + /** + * 项目档案监管分页查询(关联 org_info 获取评价机构名称; + * 流程文档/补充文件统计由业务代码按项目ID批量查询后回填) + */ + IPage selectArchiveSupervisionPage( + Page page, @Param("query") EvalProjectArchiveSupervisionPageQuery query); + + /** + * 按项目ID批量统计 eval_project_archive_file 档案文件数据 + * (流程文档数=record_source为auto_process_record,补充文件数=record_source为upload_additional_files) + */ + List selectArchiveFileStatByProjectIds(@Param("projectIds") List projectIds); + List getByPersonnelId(@Param("currentUserId") Long currentUserId); } diff --git a/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml index 9f937d6f..b414cc5e 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/EvalProjectMapper.xml @@ -317,4 +317,54 @@ from eval_project where JSON_CONTAINS(participants_json, JSON_OBJECT('id', #{currentUserId})); + + + + + +