archive file
parent
4c29a8b077
commit
4bda2ada08
|
|
@ -5,6 +5,7 @@ import com.alibaba.cola.dto.Response;
|
|||
import com.alibaba.cola.dto.SingleResponse;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.qinan.safetyeval.app.file.service.EvalProjectArchiveFileServiceI;
|
||||
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileAddCmd;
|
||||
|
|
@ -17,6 +18,7 @@ import org.springframework.validation.annotation.Validated;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 安全评价项目档案文件
|
||||
|
|
@ -40,6 +42,13 @@ public class EvalProjectArchiveFileController implements Serializable {
|
|||
return evalProjectArchiveFileServiceI.listEvalProjectArchiveFileOrgPage(qry);
|
||||
}
|
||||
|
||||
@GetMapping("/org/list")
|
||||
@ApiOperation("查询安全评价项目档案文件列表-机构端按项目不分页")
|
||||
public org.qinan.safetyeval.client.dto.SingleResponse<List<EvalProjectArchiveFileCo>> orgListByProject(
|
||||
@ApiParam("项目ID") @RequestParam String projectId) {
|
||||
return evalProjectArchiveFileServiceI.listEvalProjectArchiveFileByProject(ThreadLocalUserInfoAdapter.getOrgId(), projectId);
|
||||
}
|
||||
|
||||
@GetMapping("/monitor/page")
|
||||
@ApiOperation("查询安全评价项目档案文件列表-监管端分页")
|
||||
public PageResponse<EvalProjectArchiveFileCo> monitorList(@Validated EvalProjectArchiveFileMonitorPageQry qry) {
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.alibaba.fastjson2.JSON;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.qinan.safetyeval.app.executor.institution.support.EvalCmdCopy;
|
||||
import org.qinan.safetyeval.app.executor.institution.support.EvalProjectArchiveFileSupport;
|
||||
import org.qinan.safetyeval.app.executor.institution.support.EvalProjectNodeSupport;
|
||||
import org.qinan.safetyeval.app.item.convertor.EvalReviewItemCmdConvertor;
|
||||
import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi;
|
||||
|
|
@ -103,6 +104,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
|||
@Resource
|
||||
private EvalProjectArchiveFileMapper evalProjectArchiveFileMapper;
|
||||
@Resource
|
||||
private EvalProjectArchiveFileSupport evalProjectArchiveFileSupport;
|
||||
@Resource
|
||||
private EvalSignTaskMapper evalSignTaskMapper;
|
||||
@Resource
|
||||
private WpsDocQueryService wpsDocQueryService;
|
||||
|
|
@ -541,77 +544,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
|||
.eq(EvalProjectArchiveFileDO::getRecordSource, ProjectArchiveFileSourceEnum.AUTO_PROCESS_RECORD.getCode()));
|
||||
|
||||
List<EvalProjectFileCO> files = listProjectFiles(projectId).getData();
|
||||
if (CollectionUtils.isEmpty(files)) {
|
||||
return;
|
||||
}
|
||||
for (EvalProjectFileCO file : files) {
|
||||
if (!StringUtils.hasText(file.getProjectDocUrl())) {
|
||||
continue;
|
||||
}
|
||||
ProjectStageEnum stage = resolveStageByMsg(file.getProcessName());
|
||||
evalProjectArchiveFileMapper.insert(buildArchiveFileDO(projectId, project, file, stage));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建单条档案文件记录:files 存文件 JSON 数组原文,archiveType 按业务节点映射 ArchiveTypeEnum,
|
||||
* businessNode 存 ProjectStageEnum 英文标识。
|
||||
*/
|
||||
private EvalProjectArchiveFileDO buildArchiveFileDO(Long projectId, EvalProjectEntity project,
|
||||
EvalProjectFileCO file, ProjectStageEnum stage) {
|
||||
EvalProjectArchiveFileDO archiveFileDO = new EvalProjectArchiveFileDO();
|
||||
archiveFileDO.setOrgId(project.getOrgId());
|
||||
archiveFileDO.setProjectId(String.valueOf(projectId));
|
||||
archiveFileDO.setFiles(file.getProjectDocUrl());
|
||||
archiveFileDO.setArchiveType(resolveArchiveType(stage).getCode());
|
||||
archiveFileDO.setBusinessNode(stage != null ? stage.getVal() : file.getProcessName());
|
||||
archiveFileDO.setRecordSource(ProjectArchiveFileSourceEnum.AUTO_PROCESS_RECORD.getCode());
|
||||
InsertFieldDefaults.apply(archiveFileDO);
|
||||
return archiveFileDO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据流程中文名(ProjectStageEnum.msg,如 业务合同/现场踏勘)查找对应阶段枚举,未匹配返回 null。
|
||||
*/
|
||||
private ProjectStageEnum resolveStageByMsg(String processName) {
|
||||
if (!StringUtils.hasText(processName)) {
|
||||
return null;
|
||||
}
|
||||
for (ProjectStageEnum stage : ProjectStageEnum.values()) {
|
||||
if (stage.getMsg().equals(processName)) {
|
||||
return stage;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按业务节点映射档案类型:风险分析→项目风险分析,业务合同→技术服务合同,项目组→项目组织文件,
|
||||
* 现场踏勘→现场勘察资料,报告编制→评价报告,内部审核/技术审核→审核记录,过程控制→过程控制文件,
|
||||
* 其余→其他。
|
||||
*/
|
||||
private ArchiveTypeEnum resolveArchiveType(ProjectStageEnum stage) {
|
||||
if (stage == null) {
|
||||
return ArchiveTypeEnum.OTHER;
|
||||
}
|
||||
switch (stage) {
|
||||
case RISK_ANALYSIS:
|
||||
return ArchiveTypeEnum.RISK_ANALYSIS;
|
||||
case BUSINESS_CONTRACT:
|
||||
return ArchiveTypeEnum.TECH_SERVICE_CONTRACT;
|
||||
case PROJECT_GROUP:
|
||||
return ArchiveTypeEnum.PROJECT_ORG_FILE;
|
||||
case SITE_SURVEY:
|
||||
return ArchiveTypeEnum.SITE_SURVEY;
|
||||
case REPORT_PREPARATION:
|
||||
return ArchiveTypeEnum.EVALUATION_REPORT;
|
||||
case INTERNAL_REVIEW:
|
||||
case TECHNICAL_REVIEW:
|
||||
return ArchiveTypeEnum.REVIEW_RECORD;
|
||||
case PROCESS_CONTROL:
|
||||
return ArchiveTypeEnum.PROCESS_CONTROL;
|
||||
default:
|
||||
return ArchiveTypeEnum.OTHER;
|
||||
for (EvalProjectArchiveFileDO archiveFileDO : evalProjectArchiveFileSupport.buildAutoArchiveFiles(projectId, project, files)) {
|
||||
evalProjectArchiveFileMapper.insert(archiveFileDO);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,105 @@
|
|||
package org.qinan.safetyeval.app.executor.institution.support;
|
||||
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectFileCO;
|
||||
import org.qinan.safetyeval.domain.constant.ArchiveTypeEnum;
|
||||
import org.qinan.safetyeval.domain.constant.ProjectArchiveFileSourceEnum;
|
||||
import org.qinan.safetyeval.domain.constant.ProjectStageEnum;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.infrastructure.persistence.domainobject.EvalProjectArchiveFileDO;
|
||||
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目档案文件构建支持类:按归档规则将项目过程文件构建为 eval_project_archive_file 记录(不落库)。
|
||||
* 供归档落库(EvalProcessControlExecutor)与未归档项目档案查询实时构造共用。
|
||||
*/
|
||||
@Component
|
||||
public class EvalProjectArchiveFileSupport {
|
||||
|
||||
/**
|
||||
* 按归档规则构建流程自动记录档案文件列表:files 存文件 JSON 数组原文,
|
||||
* archiveType 按业务节点映射 ArchiveTypeEnum,businessNode 存 ProjectStageEnum 英文标识。
|
||||
*
|
||||
* @param projectId 项目ID
|
||||
* @param project 项目实体
|
||||
* @param files 项目过程文件列表
|
||||
* @return 档案文件DO列表(未落库)
|
||||
*/
|
||||
public List<EvalProjectArchiveFileDO> buildAutoArchiveFiles(Long projectId, EvalProjectEntity project,
|
||||
List<EvalProjectFileCO> files) {
|
||||
List<EvalProjectArchiveFileDO> result = new ArrayList<>();
|
||||
for (EvalProjectFileCO file : files) {
|
||||
if (!StringUtils.hasText(file.getProjectDocUrl())) {
|
||||
continue;
|
||||
}
|
||||
ProjectStageEnum stage = resolveStageByMsg(file.getProcessName());
|
||||
result.add(buildArchiveFileDO(projectId, project, file, stage));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建单条档案文件记录:files 存文件 JSON 数组原文。
|
||||
*/
|
||||
private EvalProjectArchiveFileDO buildArchiveFileDO(Long projectId, EvalProjectEntity project,
|
||||
EvalProjectFileCO file, ProjectStageEnum stage) {
|
||||
EvalProjectArchiveFileDO archiveFileDO = new EvalProjectArchiveFileDO();
|
||||
archiveFileDO.setOrgId(project.getOrgId());
|
||||
archiveFileDO.setProjectId(String.valueOf(projectId));
|
||||
archiveFileDO.setFiles(file.getProjectDocUrl());
|
||||
archiveFileDO.setArchiveType(resolveArchiveType(stage).getCode());
|
||||
archiveFileDO.setBusinessNode(stage != null ? stage.getVal() : file.getProcessName());
|
||||
archiveFileDO.setRecordSource(ProjectArchiveFileSourceEnum.AUTO_PROCESS_RECORD.getCode());
|
||||
InsertFieldDefaults.apply(archiveFileDO);
|
||||
return archiveFileDO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据流程中文名(ProjectStageEnum.msg,如 业务合同/现场踏勘)查找对应阶段枚举,未匹配返回 null。
|
||||
*/
|
||||
private ProjectStageEnum resolveStageByMsg(String processName) {
|
||||
if (!StringUtils.hasText(processName)) {
|
||||
return null;
|
||||
}
|
||||
for (ProjectStageEnum stage : ProjectStageEnum.values()) {
|
||||
if (stage.getMsg().equals(processName)) {
|
||||
return stage;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按业务节点映射档案类型:风险分析→项目风险分析,业务合同→技术服务合同,项目组→项目组织文件,
|
||||
* 现场踏勘→现场勘察资料,报告编制→评价报告,内部审核/技术审核→审核记录,过程控制→过程控制文件,
|
||||
* 其余→其他。
|
||||
*/
|
||||
private ArchiveTypeEnum resolveArchiveType(ProjectStageEnum stage) {
|
||||
if (stage == null) {
|
||||
return ArchiveTypeEnum.OTHER;
|
||||
}
|
||||
switch (stage) {
|
||||
case RISK_ANALYSIS:
|
||||
return ArchiveTypeEnum.RISK_ANALYSIS;
|
||||
case BUSINESS_CONTRACT:
|
||||
return ArchiveTypeEnum.TECH_SERVICE_CONTRACT;
|
||||
case PROJECT_GROUP:
|
||||
return ArchiveTypeEnum.PROJECT_ORG_FILE;
|
||||
case SITE_SURVEY:
|
||||
return ArchiveTypeEnum.SITE_SURVEY;
|
||||
case REPORT_PREPARATION:
|
||||
return ArchiveTypeEnum.EVALUATION_REPORT;
|
||||
case INTERNAL_REVIEW:
|
||||
case TECHNICAL_REVIEW:
|
||||
return ArchiveTypeEnum.REVIEW_RECORD;
|
||||
case PROCESS_CONTROL:
|
||||
return ArchiveTypeEnum.PROCESS_CONTROL;
|
||||
default:
|
||||
return ArchiveTypeEnum.OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +1,25 @@
|
|||
package org.qinan.safetyeval.app.file.executor.query;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.qinan.safetyeval.app.executor.institution.support.EvalProjectArchiveFileSupport;
|
||||
import org.qinan.safetyeval.app.executor.institution.support.EvalProjectNodeSupport;
|
||||
import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectFileCO;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.file.response.EvalProjectArchiveFileCo;
|
||||
import org.qinan.safetyeval.domain.constant.BooleanQAEnum;
|
||||
import org.qinan.safetyeval.domain.constant.ProjectArchiveFileSourceEnum;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.infrastructure.convertor.EvalProjectArchiveFileDoConvertor;
|
||||
import org.qinan.safetyeval.infrastructure.persistence.domainobject.EvalProjectArchiveFileDO;
|
||||
import org.qinan.safetyeval.infrastructure.persistence.mapper.EvalProjectArchiveFileMapper;
|
||||
import org.qinan.safetyeval.infrastructure.persistence.queryservice.EvalProjectArchiveFileQueryService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 安全评价项目档案文件查询执行器
|
||||
*
|
||||
|
|
@ -19,6 +32,10 @@ public class EvalProjectArchiveFileListQueryExe {
|
|||
|
||||
private final EvalProjectArchiveFileQueryService evalProjectArchiveFileQueryService;
|
||||
private final EvalProjectArchiveFileDoConvertor evalProjectArchiveFileDoConvertor;
|
||||
private final EvalProjectNodeSupport evalProjectNodeSupport;
|
||||
private final EvalProcessControlApi evalProcessControlApi;
|
||||
private final EvalProjectArchiveFileSupport evalProjectArchiveFileSupport;
|
||||
private final EvalProjectArchiveFileMapper evalProjectArchiveFileMapper;
|
||||
|
||||
/**
|
||||
* 根据ID查找安全评价项目档案文件对象
|
||||
|
|
@ -31,4 +48,43 @@ public class EvalProjectArchiveFileListQueryExe {
|
|||
return evalProjectArchiveFileDoConvertor.converDoToCo(evalProjectArchiveFileDO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按机构ID+项目ID查询档案文件列表(不分页)。
|
||||
* 项目已归档:直接返回档案表记录;
|
||||
* 项目未归档:档案表流程自动记录尚未写入,仅返回补充上传记录,
|
||||
* 并按归档规则实时构造流程过程数据(不落库)合并返回。
|
||||
*
|
||||
* @param orgId 机构ID
|
||||
* @param projectId 项目ID
|
||||
* @return 档案文件列表
|
||||
*/
|
||||
public SingleResponse<List<EvalProjectArchiveFileCo>> execute(Long orgId, String projectId) {
|
||||
Long pid = Long.parseLong(projectId);
|
||||
EvalProjectEntity project = evalProjectNodeSupport.requireProject(pid);
|
||||
// 已归档:直接查询档案表数据返回
|
||||
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
|
||||
return SingleResponse.success(evalProjectArchiveFileDoConvertor.converDosToCos(listArchiveFiles(orgId, projectId, null)));
|
||||
}
|
||||
// 未归档:仅查补充上传记录,流程过程数据按归档规则实时构造(不落库)合并返回
|
||||
List<EvalProjectArchiveFileDO> result = new ArrayList<>(
|
||||
listArchiveFiles(orgId, projectId, ProjectArchiveFileSourceEnum.UPLOAD_ADDITIONAL_FILES.getCode()));
|
||||
List<EvalProjectFileCO> files = evalProcessControlApi.listProjectFiles(pid).getData();
|
||||
result.addAll(evalProjectArchiveFileSupport.buildAutoArchiveFiles(pid, project, files));
|
||||
return SingleResponse.success(evalProjectArchiveFileDoConvertor.converDosToCos(result));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询档案表记录:按机构+项目过滤并排除已删除;recordSource 非空时按来源过滤。
|
||||
*/
|
||||
private List<EvalProjectArchiveFileDO> listArchiveFiles(Long orgId, String projectId, String recordSource) {
|
||||
LambdaQueryWrapper<EvalProjectArchiveFileDO> wrapper = new LambdaQueryWrapper<EvalProjectArchiveFileDO>()
|
||||
.eq(EvalProjectArchiveFileDO::getOrgId, orgId)
|
||||
.eq(EvalProjectArchiveFileDO::getProjectId, projectId)
|
||||
.eq(EvalProjectArchiveFileDO::getDeleteEnum, BooleanQAEnum.FALSE.getValue());
|
||||
if (recordSource != null) {
|
||||
wrapper.eq(EvalProjectArchiveFileDO::getRecordSource, recordSource);
|
||||
}
|
||||
return evalProjectArchiveFileMapper.selectList(wrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,15 @@
|
|||
package org.qinan.safetyeval.app.file.service;
|
||||
|
||||
import com.alibaba.cola.dto.PageResponse;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileAddCmd;
|
||||
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileMonitorPageQry;
|
||||
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFilePageQry;
|
||||
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileUpdateCmd;
|
||||
import org.qinan.safetyeval.client.file.response.EvalProjectArchiveFileCo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 安全评价项目档案文件
|
||||
*
|
||||
|
|
@ -30,6 +33,15 @@ public interface EvalProjectArchiveFileServiceI {
|
|||
*/
|
||||
PageResponse<EvalProjectArchiveFileCo> listEvalProjectArchiveFileMonitorPage(EvalProjectArchiveFileMonitorPageQry evalProjectArchiveFileMonitorPageQry);
|
||||
|
||||
/**
|
||||
* 按机构ID+项目ID查询档案文件列表(不分页;未归档项目实时构造流程过程数据)
|
||||
*
|
||||
* @param orgId 机构ID
|
||||
* @param projectId 项目ID
|
||||
* @return 档案文件列表
|
||||
*/
|
||||
SingleResponse<List<EvalProjectArchiveFileCo>> listEvalProjectArchiveFileByProject(Long orgId, String projectId);
|
||||
|
||||
/**
|
||||
* 根据ID获取安全评价项目档案文件详情
|
||||
*
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import org.qinan.safetyeval.app.file.executor.command.EvalProjectArchiveFileUpda
|
|||
import org.qinan.safetyeval.app.file.executor.query.EvalProjectArchiveFileListQueryExe;
|
||||
import org.qinan.safetyeval.app.file.executor.query.EvalProjectArchiveFilePageQueryExe;
|
||||
import org.qinan.safetyeval.app.file.service.EvalProjectArchiveFileServiceI;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileAddCmd;
|
||||
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileMonitorPageQry;
|
||||
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFilePageQry;
|
||||
|
|
@ -15,6 +16,8 @@ import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileUpdateCmd;
|
|||
import org.qinan.safetyeval.client.file.response.EvalProjectArchiveFileCo;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 安全评价项目档案文件
|
||||
*
|
||||
|
|
@ -41,6 +44,11 @@ public class EvalProjectArchiveFileServiceImpl implements EvalProjectArchiveFile
|
|||
return evalProjectArchiveFilePageQueryExe.listEvalProjectArchiveFileMonitorPage(evalProjectArchiveFileMonitorPageQry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<List<EvalProjectArchiveFileCo>> listEvalProjectArchiveFileByProject(Long orgId, String projectId) {
|
||||
return evalProjectArchiveFileListQueryExe.execute(orgId, projectId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EvalProjectArchiveFileCo getEvalProjectArchiveFileById(Long id) {
|
||||
return evalProjectArchiveFileListQueryExe.execute(id);
|
||||
|
|
|
|||
Loading…
Reference in New Issue