archive file
parent
f910cc3b27
commit
031cc25631
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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_source为auto_process_record,补充文件数=record_source为upload_additional_files)
|
||||
*/
|
||||
List<EvalProjectArchiveSupervisionCO> selectArchiveFileStatByProjectIds(@Param("projectIds") List<Long> projectIds);
|
||||
|
||||
List<Long> getByPersonnelId(@Param("currentUserId") Long currentUserId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue