dev
luotaiqian 2026-07-23 10:36:14 +08:00
parent f0f7384ca9
commit 84c3573e27
4 changed files with 157 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiParam;
import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi; import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO; import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO; import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO;
import org.qinan.safetyeval.client.co.institution.EvalProjectFileCO;
import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd;
@ -15,6 +16,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
@Api(tags = "机构端-过程控制") @Api(tags = "机构端-过程控制")
@RestController @RestController
@ -60,4 +62,10 @@ public class EvalProcessControlController {
return evalProcessControlApi.archive(cmd); return evalProcessControlApi.archive(cmd);
} }
} @ApiOperation("项目过程文件列表")
@GetMapping("/process-files")
public SingleResponse<List<EvalProjectFileCO>> processFiles(@ApiParam("项目ID") @RequestParam Long projectId) {
return evalProcessControlApi.listProjectFiles(projectId);
}
}

View File

@ -7,6 +7,7 @@ import org.qinan.safetyeval.app.item.convertor.EvalReviewItemCmdConvertor;
import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi; import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO; import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO; import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO;
import org.qinan.safetyeval.client.co.institution.EvalProjectFileCO;
import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd;
@ -17,22 +18,33 @@ import org.qinan.safetyeval.client.item.response.EvalReviewItemCo;
import org.qinan.safetyeval.domain.constant.EvalTypeEnum; import org.qinan.safetyeval.domain.constant.EvalTypeEnum;
import org.qinan.safetyeval.domain.constant.ProjectStageEnum; import org.qinan.safetyeval.domain.constant.ProjectStageEnum;
import org.qinan.safetyeval.domain.constant.ReviewDimensionEnum; import org.qinan.safetyeval.domain.constant.ReviewDimensionEnum;
import org.qinan.safetyeval.domain.entity.EvalContractEntity;
import org.qinan.safetyeval.domain.entity.EvalInternalReviewEntity;
import org.qinan.safetyeval.domain.entity.EvalProjectEntity; import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
import org.qinan.safetyeval.domain.entity.EvalProjectMemberEntity; import org.qinan.safetyeval.domain.entity.EvalProjectMemberEntity;
import org.qinan.safetyeval.domain.entity.EvalProcessControlEntity; import org.qinan.safetyeval.domain.entity.EvalProcessControlEntity;
import org.qinan.safetyeval.domain.entity.EvalReportDraftEntity; import org.qinan.safetyeval.domain.entity.EvalReportDraftEntity;
import org.qinan.safetyeval.domain.entity.EvalReportEntity; import org.qinan.safetyeval.domain.entity.EvalReportEntity;
import org.qinan.safetyeval.domain.entity.EvalSignTaskEntity; import org.qinan.safetyeval.domain.entity.EvalSignTaskEntity;
import org.qinan.safetyeval.domain.entity.EvalSurveyAttachEntity;
import org.qinan.safetyeval.domain.entity.EvalSurveyEntity;
import org.qinan.safetyeval.domain.entity.EvalTechReviewEntity;
import org.qinan.safetyeval.domain.exception.BizException; import org.qinan.safetyeval.domain.exception.BizException;
import org.qinan.safetyeval.domain.exception.ErrorCode; import org.qinan.safetyeval.domain.exception.ErrorCode;
import org.qinan.safetyeval.domain.gateway.EvalContractGateway;
import org.qinan.safetyeval.domain.gateway.EvalInternalReviewGateway;
import org.qinan.safetyeval.domain.gateway.EvalProcessControlGateway; import org.qinan.safetyeval.domain.gateway.EvalProcessControlGateway;
import org.qinan.safetyeval.domain.gateway.EvalProjectMemberGateway; import org.qinan.safetyeval.domain.gateway.EvalProjectMemberGateway;
import org.qinan.safetyeval.domain.gateway.EvalReportDraftGateway; import org.qinan.safetyeval.domain.gateway.EvalReportDraftGateway;
import org.qinan.safetyeval.domain.gateway.EvalReportGateway; import org.qinan.safetyeval.domain.gateway.EvalReportGateway;
import org.qinan.safetyeval.domain.gateway.EvalSignTaskGateway; import org.qinan.safetyeval.domain.gateway.EvalSignTaskGateway;
import org.qinan.safetyeval.domain.gateway.EvalSurveyAttachGateway;
import org.qinan.safetyeval.domain.gateway.EvalSurveyGateway;
import org.qinan.safetyeval.domain.gateway.EvalTechReviewGateway;
import org.qinan.safetyeval.domain.item.gateway.EvalReviewItemGateway; import org.qinan.safetyeval.domain.item.gateway.EvalReviewItemGateway;
import org.qinan.safetyeval.domain.item.model.EvalReviewItemE; import org.qinan.safetyeval.domain.item.model.EvalReviewItemE;
import org.qinan.safetyeval.domain.query.EvalReportDraftQuery; import org.qinan.safetyeval.domain.query.EvalReportDraftQuery;
import org.qinan.safetyeval.domain.query.EvalReportQuery;
import org.qinan.safetyeval.domain.query.EvalSignTaskQuery; import org.qinan.safetyeval.domain.query.EvalSignTaskQuery;
import org.qinan.safetyeval.domain.query.PageResult; import org.qinan.safetyeval.domain.query.PageResult;
import org.qinan.safetyeval.domain.service.EvalArchivePrecheckService; import org.qinan.safetyeval.domain.service.EvalArchivePrecheckService;
@ -81,6 +93,16 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
private EvalReviewItemCmdConvertor evalReviewItemCmdConvertor; private EvalReviewItemCmdConvertor evalReviewItemCmdConvertor;
@Resource @Resource
private EvalProjectWaringGateway evalProjectWaringGateway; private EvalProjectWaringGateway evalProjectWaringGateway;
@Resource
private EvalContractGateway evalContractGateway;
@Resource
private EvalSurveyGateway evalSurveyGateway;
@Resource
private EvalSurveyAttachGateway evalSurveyAttachGateway;
@Resource
private EvalInternalReviewGateway evalInternalReviewGateway;
@Resource
private EvalTechReviewGateway evalTechReviewGateway;
@Override @Override
public SingleResponse<EvalProcessControlCO> getOrSave(EvalProcessControlSaveCmd cmd) { public SingleResponse<EvalProcessControlCO> getOrSave(EvalProcessControlSaveCmd cmd) {
@ -237,6 +259,104 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
return SingleResponse.success(EvalNodeCoConverter.toProcessCO(entity)); return SingleResponse.success(EvalNodeCoConverter.toProcessCO(entity));
} }
@Override
public SingleResponse<List<EvalProjectFileCO>> listProjectFiles(Long projectId) {
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
Long orgId = project.getOrgId();
List<EvalProjectFileCO> files = new java.util.ArrayList<>();
// 业务合同-合同扫描件
EvalContractEntity contract = evalContractGateway.getByProjectId(projectId, orgId);
if (contract != null && contract.getScanFileUrl() != null) {
files.add(buildFile(contract.getId(), ProjectStageEnum.BUSINESS_CONTRACT.getMsg(),
"合同扫描件", "合同扫描件", contract.getScanFileUrl()));
}
// 现场踏勘-附件
EvalSurveyEntity survey = evalSurveyGateway.getByProjectId(projectId, orgId);
if (survey != null) {
List<EvalSurveyAttachEntity> attaches = evalSurveyAttachGateway.listBySurveyId(survey.getId(), orgId);
if (attaches != null) {
for (EvalSurveyAttachEntity attach : attaches) {
if (attach.getFileUrl() != null) {
String itemName = attach.getAttachTypeName() != null ? attach.getAttachTypeName() : "踏勘附件";
String name = attach.getFileName() != null ? attach.getFileName() : itemName;
files.add(buildFile(attach.getId(), ProjectStageEnum.SITE_SURVEY.getMsg(),
itemName, name, attach.getFileUrl()));
}
}
}
}
// 报告编制-报告草稿
EvalReportDraftQuery draftQuery = new EvalReportDraftQuery();
draftQuery.setProjectId(projectId);
draftQuery.setOrgId(orgId);
draftQuery.setPageNum(1L);
draftQuery.setPageSize(100L);
PageResult<EvalReportDraftEntity> drafts = evalReportDraftGateway.page(draftQuery);
if (drafts != null && !CollectionUtils.isEmpty(drafts.getRecords())) {
for (EvalReportDraftEntity draft : drafts.getRecords()) {
if (draft.getContentUrl() != null) {
String name = draft.getTemplateName() != null ? draft.getTemplateName() : "报告草稿";
String itemName = "V" + (draft.getDraftVersionNo() != null ? draft.getDraftVersionNo() : 0);
files.add(buildFile(draft.getId(), ProjectStageEnum.REPORT_PREPARATION.getMsg(),
itemName, name, draft.getContentUrl()));
}
}
}
// 内部审核-内审签字
EvalInternalReviewEntity internalReview = evalInternalReviewGateway.getByProjectId(projectId, orgId);
if (internalReview != null && internalReview.getReviewerSignatureUrl() != null) {
files.add(buildFile(internalReview.getId(), ProjectStageEnum.INTERNAL_REVIEW.getMsg(),
"内审签字", "内审签字", internalReview.getReviewerSignatureUrl()));
}
// 技术审核-技审签字
EvalTechReviewEntity techReview = evalTechReviewGateway.getByProjectId(projectId, orgId);
if (techReview != null && techReview.getReviewerSignatureUrl() != null) {
files.add(buildFile(techReview.getId(), ProjectStageEnum.TECHNICAL_REVIEW.getMsg(),
"技审签字", "技审签字", techReview.getReviewerSignatureUrl()));
}
// 过程控制-归档交接单
EvalProcessControlEntity processControl = evalProcessControlGateway.getByProjectId(projectId, orgId);
if (processControl != null && processControl.getHandoverFormUrl() != null) {
files.add(buildFile(processControl.getId(), ProjectStageEnum.PROCESS_CONTROL.getMsg(),
"归档交接单", "归档交接单", processControl.getHandoverFormUrl()));
}
// 过程控制-归档报告
EvalReportQuery reportQuery = new EvalReportQuery();
reportQuery.setProjectId(projectId);
reportQuery.setOrgId(orgId);
reportQuery.setPageNum(1L);
reportQuery.setPageSize(100L);
PageResult<EvalReportEntity> reports = evalReportGateway.page(reportQuery);
if (reports != null && !CollectionUtils.isEmpty(reports.getRecords())) {
for (EvalReportEntity report : reports.getRecords()) {
if (report.getFileUrl() != null) {
String name = report.getFileName() != null ? report.getFileName() : "归档报告";
files.add(buildFile(report.getId(), ProjectStageEnum.PROCESS_CONTROL.getMsg(),
"归档报告", name, report.getFileUrl()));
}
}
}
return SingleResponse.success(files);
}
private EvalProjectFileCO buildFile(Long id, String processName, String itemName, String name, String url) {
EvalProjectFileCO co = new EvalProjectFileCO();
co.setId(id != null ? String.valueOf(id) : null);
co.setProcessName(processName);
co.setItemName(itemName);
co.setName(name);
co.setUrl(url);
return co;
}
private EvalReportEntity buildReport(EvalProjectEntity project) { private EvalReportEntity buildReport(EvalProjectEntity project) {
EvalReportEntity report = new EvalReportEntity(); EvalReportEntity report = new EvalReportEntity();
report.setOrgId(project.getOrgId()); report.setOrgId(project.getOrgId());

View File

@ -2,12 +2,15 @@ package org.qinan.safetyeval.client.api.institution;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO; import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO;
import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO; import org.qinan.safetyeval.client.co.institution.EvalProcessControlDetailCO;
import org.qinan.safetyeval.client.co.institution.EvalProjectFileCO;
import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.SingleResponse;
import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlSaveCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessControlSaveCmd;
import org.qinan.safetyeval.client.dto.institution.EvalProcessHandoverFormCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessHandoverFormCmd;
import java.util.List;
public interface EvalProcessControlApi { public interface EvalProcessControlApi {
SingleResponse<EvalProcessControlCO> getOrSave(EvalProcessControlSaveCmd cmd); SingleResponse<EvalProcessControlCO> getOrSave(EvalProcessControlSaveCmd cmd);
SingleResponse<Void> confirm(EvalProcessControlConfirmCmd cmd); SingleResponse<Void> confirm(EvalProcessControlConfirmCmd cmd);
@ -15,4 +18,5 @@ public interface EvalProcessControlApi {
SingleResponse<EvalProcessControlDetailCO> getDetailByProject(Long projectId); SingleResponse<EvalProcessControlDetailCO> getDetailByProject(Long projectId);
SingleResponse<EvalProcessControlCO> generateHandoverForm(EvalProcessHandoverFormCmd cmd); SingleResponse<EvalProcessControlCO> generateHandoverForm(EvalProcessHandoverFormCmd cmd);
SingleResponse<EvalProcessControlCO> archive(EvalProcessArchiveCmd cmd); SingleResponse<EvalProcessControlCO> archive(EvalProcessArchiveCmd cmd);
SingleResponse<List<EvalProjectFileCO>> listProjectFiles(Long projectId);
} }

View File

@ -0,0 +1,24 @@
package org.qinan.safetyeval.client.co.institution;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class EvalProjectFileCO {
@ApiModelProperty(value = "所属流程名称对应ProjectStageEnum.msg风险分析/业务合同/项目组/现场踏勘/报告编制/内部审核/技术审核/过程控制)", example = "风险分析")
private String processName;
@ApiModelProperty("条目名称")
private String itemName;
@ApiModelProperty("文件名称")
private String materialName;
@ApiModelProperty("文件地址")
private String projectDocUrl;
@ApiModelProperty("资料类型")
private String materialType;
}