archive file

dev-tmp1
luotaiqian 2026-08-25 15:24:10 +08:00
parent f910cc3b27
commit 031cc25631
7 changed files with 190 additions and 0 deletions

View File

@ -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<CustomerEvalProjectCO> customerPage(@Validated CustomerEvalProjectPageQuery query) {
return evalProjectApi.customerPage(query);
}
/**
* keyword /
*
*/
@ApiOperation("项目档案监管分页")
@GetMapping("/archive-supervision-page")
public PageResponse<EvalProjectArchiveSupervisionCO> archiveSupervisionPage(
@Validated EvalProjectArchiveSupervisionPageQuery query) {
return evalProjectApi.archiveSupervisionPage(query);
}
}

View File

@ -350,6 +350,44 @@ public class EvalProjectExecutor implements EvalProjectApi {
return SingleResponse.success(null);
}
/**
*
* ID eval_project_archive_file
*/
@Override
public PageResponse<EvalProjectArchiveSupervisionCO> archiveSupervisionPage(EvalProjectArchiveSupervisionPageQuery query) {
Page<EvalProjectArchiveSupervisionCO> page = new Page<>(query.getCurrent(), query.getSize());
IPage<EvalProjectArchiveSupervisionCO> result = evalProjectMapper.selectArchiveSupervisionPage(page, query);
fillArchiveFileStat(result.getRecords());
return PageResponse.of(result.getRecords(), result.getTotal());
}
/**
* /
*/
private void fillArchiveFileStat(List<EvalProjectArchiveSupervisionCO> records) {
if (CollectionUtils.isEmpty(records)) {
return;
}
List<Long> projectIds = records.stream()
.map(co -> Long.parseLong(co.getId()))
.collect(Collectors.toList());
Map<String, EvalProjectArchiveSupervisionCO> 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()));

View File

@ -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<EvalProjectStatisticsCO> appProjectStatistics();
SingleResponse<EvalProjectCO> update(EvalProjectAddCmd cmd);
/**
* keyword /
*
*
* @param query
* @return
*/
PageResponse<EvalProjectArchiveSupervisionCO> archiveSupervisionPage(EvalProjectArchiveSupervisionPageQuery query);
}

View File

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

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 EvalProjectArchiveSupervisionPageQuery extends BasePageQuery {
@ApiModelProperty("评价机构ID")
private Long orgId;
@ApiModelProperty("评价机构名称(模糊查询,对应 org_info.unit_name")
private String orgName;
@ApiModelProperty("评价类型PRE安全预评价 ACCEPT安全设施竣工验收评价 STATUS安全现状评价")
private String evalTypeCode;
}

View File

@ -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<EvalProjectDO> {
*/
List<RegulatorEvalSurveyClockInCO> selectRegulatorSurveyClockInList(@Param("projectId") Long projectId);
/**
* org_info
* /ID
*/
IPage<EvalProjectArchiveSupervisionCO> selectArchiveSupervisionPage(
Page<EvalProjectArchiveSupervisionCO> page, @Param("query") EvalProjectArchiveSupervisionPageQuery query);
/**
* ID eval_project_archive_file
* =record_sourceauto_process_record=record_sourceupload_additional_files
*/
List<EvalProjectArchiveSupervisionCO> selectArchiveFileStatByProjectIds(@Param("projectIds") List<Long> projectIds);
List<Long> getByPersonnelId(@Param("currentUserId") Long currentUserId);
}

View File

@ -317,4 +317,54 @@
from eval_project
where JSON_CONTAINS(participants_json, JSON_OBJECT('id', #{currentUserId}));
</select>
<!-- 项目档案监管分页:关联 org_info 获取评价机构名称;
流程文档/补充文件统计由业务代码按项目ID批量查询 eval_project_archive_file 后回填 -->
<select id="selectArchiveSupervisionPage"
resultType="org.qinan.safetyeval.client.co.institution.EvalProjectArchiveSupervisionCO">
SELECT
p.id,
p.project_no,
p.project_name,
o.unit_name AS org_name,
p.eval_type_code,
p.update_time
FROM eval_project p
LEFT JOIN org_info o
ON o.id = p.org_id
AND o.delete_enum = 'false'
WHERE p.delete_enum = 'false'
and p.archive_flag = 1
<if test="query.keyword != null and query.keyword != ''">
AND (p.project_name LIKE CONCAT('%', #{query.keyword}, '%')
OR p.project_no LIKE CONCAT('%', #{query.keyword}, '%'))
</if>
<if test="query.orgId != null">
AND p.org_id = #{query.orgId}
</if>
<if test="query.orgName != null and query.orgName != ''">
AND o.unit_name LIKE CONCAT('%', #{query.orgName}, '%')
</if>
<if test="query.evalTypeCode != null and query.evalTypeCode != ''">
AND p.eval_type_code = #{query.evalTypeCode}
</if>
ORDER BY p.id DESC
</select>
<!-- 按项目ID批量统计 eval_project_archive_file 档案文件数据
(流程文档数=record_source为auto_process_record补充文件数=record_source为upload_additional_files -->
<select id="selectArchiveFileStatByProjectIds"
resultType="org.qinan.safetyeval.client.co.institution.EvalProjectArchiveSupervisionCO">
SELECT
f.project_id AS id,
SUM(CASE WHEN f.record_source = 'auto_process_record' THEN 1 ELSE 0 END) AS process_file_count,
SUM(CASE WHEN f.record_source = 'upload_additional_files' THEN 1 ELSE 0 END) AS additional_file_count
FROM eval_project_archive_file f
WHERE f.delete_enum = 'false'
AND f.project_id IN
<foreach collection="projectIds" item="pid" open="(" separator="," close=")">
#{pid}
</foreach>
GROUP BY f.project_id
</select>
</mapper>