archive file

dev-tmp1
luotaiqian 2026-08-25 18:20:42 +08:00
parent 4c29a8b077
commit 4bda2ada08
6 changed files with 195 additions and 71 deletions

View File

@ -5,6 +5,7 @@ import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse; import com.alibaba.cola.dto.SingleResponse;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.qinan.safetyeval.app.file.service.EvalProjectArchiveFileServiceI; import org.qinan.safetyeval.app.file.service.EvalProjectArchiveFileServiceI;
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileAddCmd; 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 org.springframework.web.bind.annotation.*;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* *
@ -40,6 +42,13 @@ public class EvalProjectArchiveFileController implements Serializable {
return evalProjectArchiveFileServiceI.listEvalProjectArchiveFileOrgPage(qry); 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") @GetMapping("/monitor/page")
@ApiOperation("查询安全评价项目档案文件列表-监管端分页") @ApiOperation("查询安全评价项目档案文件列表-监管端分页")
public PageResponse<EvalProjectArchiveFileCo> monitorList(@Validated EvalProjectArchiveFileMonitorPageQry qry) { public PageResponse<EvalProjectArchiveFileCo> monitorList(@Validated EvalProjectArchiveFileMonitorPageQry qry) {

View File

@ -9,6 +9,7 @@ import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.qinan.safetyeval.app.executor.institution.support.EvalCmdCopy; 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.executor.institution.support.EvalProjectNodeSupport;
import org.qinan.safetyeval.app.item.convertor.EvalReviewItemCmdConvertor; import org.qinan.safetyeval.app.item.convertor.EvalReviewItemCmdConvertor;
import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi; import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi;
@ -103,6 +104,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
@Resource @Resource
private EvalProjectArchiveFileMapper evalProjectArchiveFileMapper; private EvalProjectArchiveFileMapper evalProjectArchiveFileMapper;
@Resource @Resource
private EvalProjectArchiveFileSupport evalProjectArchiveFileSupport;
@Resource
private EvalSignTaskMapper evalSignTaskMapper; private EvalSignTaskMapper evalSignTaskMapper;
@Resource @Resource
private WpsDocQueryService wpsDocQueryService; private WpsDocQueryService wpsDocQueryService;
@ -541,77 +544,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
.eq(EvalProjectArchiveFileDO::getRecordSource, ProjectArchiveFileSourceEnum.AUTO_PROCESS_RECORD.getCode())); .eq(EvalProjectArchiveFileDO::getRecordSource, ProjectArchiveFileSourceEnum.AUTO_PROCESS_RECORD.getCode()));
List<EvalProjectFileCO> files = listProjectFiles(projectId).getData(); List<EvalProjectFileCO> files = listProjectFiles(projectId).getData();
if (CollectionUtils.isEmpty(files)) { for (EvalProjectArchiveFileDO archiveFileDO : evalProjectArchiveFileSupport.buildAutoArchiveFiles(projectId, project, files)) {
return; evalProjectArchiveFileMapper.insert(archiveFileDO);
}
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;
} }
} }

View File

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

View File

@ -1,12 +1,25 @@
package org.qinan.safetyeval.app.file.executor.query; package org.qinan.safetyeval.app.file.executor.query;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.AllArgsConstructor; 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.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.convertor.EvalProjectArchiveFileDoConvertor;
import org.qinan.safetyeval.infrastructure.persistence.domainobject.EvalProjectArchiveFileDO; 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.qinan.safetyeval.infrastructure.persistence.queryservice.EvalProjectArchiveFileQueryService;
import org.springframework.stereotype.Component; 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 EvalProjectArchiveFileQueryService evalProjectArchiveFileQueryService;
private final EvalProjectArchiveFileDoConvertor evalProjectArchiveFileDoConvertor; private final EvalProjectArchiveFileDoConvertor evalProjectArchiveFileDoConvertor;
private final EvalProjectNodeSupport evalProjectNodeSupport;
private final EvalProcessControlApi evalProcessControlApi;
private final EvalProjectArchiveFileSupport evalProjectArchiveFileSupport;
private final EvalProjectArchiveFileMapper evalProjectArchiveFileMapper;
/** /**
* ID * ID
@ -31,4 +48,43 @@ public class EvalProjectArchiveFileListQueryExe {
return evalProjectArchiveFileDoConvertor.converDoToCo(evalProjectArchiveFileDO); 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);
}
} }

View File

@ -1,12 +1,15 @@
package org.qinan.safetyeval.app.file.service; package org.qinan.safetyeval.app.file.service;
import com.alibaba.cola.dto.PageResponse; 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.EvalProjectArchiveFileAddCmd;
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileMonitorPageQry; import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileMonitorPageQry;
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFilePageQry; import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFilePageQry;
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileUpdateCmd; import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileUpdateCmd;
import org.qinan.safetyeval.client.file.response.EvalProjectArchiveFileCo; import org.qinan.safetyeval.client.file.response.EvalProjectArchiveFileCo;
import java.util.List;
/** /**
* *
* *
@ -30,6 +33,15 @@ public interface EvalProjectArchiveFileServiceI {
*/ */
PageResponse<EvalProjectArchiveFileCo> listEvalProjectArchiveFileMonitorPage(EvalProjectArchiveFileMonitorPageQry evalProjectArchiveFileMonitorPageQry); PageResponse<EvalProjectArchiveFileCo> listEvalProjectArchiveFileMonitorPage(EvalProjectArchiveFileMonitorPageQry evalProjectArchiveFileMonitorPageQry);
/**
* ID+ID
*
* @param orgId ID
* @param projectId ID
* @return
*/
SingleResponse<List<EvalProjectArchiveFileCo>> listEvalProjectArchiveFileByProject(Long orgId, String projectId);
/** /**
* ID * ID
* *

View File

@ -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.EvalProjectArchiveFileListQueryExe;
import org.qinan.safetyeval.app.file.executor.query.EvalProjectArchiveFilePageQueryExe; import org.qinan.safetyeval.app.file.executor.query.EvalProjectArchiveFilePageQueryExe;
import org.qinan.safetyeval.app.file.service.EvalProjectArchiveFileServiceI; 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.EvalProjectArchiveFileAddCmd;
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileMonitorPageQry; import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFileMonitorPageQry;
import org.qinan.safetyeval.client.file.request.EvalProjectArchiveFilePageQry; 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.qinan.safetyeval.client.file.response.EvalProjectArchiveFileCo;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* *
* *
@ -41,6 +44,11 @@ public class EvalProjectArchiveFileServiceImpl implements EvalProjectArchiveFile
return evalProjectArchiveFilePageQueryExe.listEvalProjectArchiveFileMonitorPage(evalProjectArchiveFileMonitorPageQry); return evalProjectArchiveFilePageQueryExe.listEvalProjectArchiveFileMonitorPage(evalProjectArchiveFileMonitorPageQry);
} }
@Override
public SingleResponse<List<EvalProjectArchiveFileCo>> listEvalProjectArchiveFileByProject(Long orgId, String projectId) {
return evalProjectArchiveFileListQueryExe.execute(orgId, projectId);
}
@Override @Override
public EvalProjectArchiveFileCo getEvalProjectArchiveFileById(Long id) { public EvalProjectArchiveFileCo getEvalProjectArchiveFileById(Long id) {
return evalProjectArchiveFileListQueryExe.execute(id); return evalProjectArchiveFileListQueryExe.execute(id);