From 84c3573e27f326826077a7e3c2ef722ad48c75e0 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Thu, 23 Jul 2026 10:36:14 +0800 Subject: [PATCH] waring --- .../EvalProcessControlController.java | 10 +- .../EvalProcessControlExecutor.java | 120 ++++++++++++++++++ .../institution/EvalProcessControlApi.java | 4 + .../co/institution/EvalProjectFileCO.java | 24 ++++ 4 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectFileCO.java diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProcessControlController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProcessControlController.java index 5e9e954..e46e44e 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProcessControlController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProcessControlController.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiParam; import org.qinan.safetyeval.client.api.institution.EvalProcessControlApi; import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO; 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.institution.EvalProcessArchiveCmd; 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 javax.annotation.Resource; +import java.util.List; @Api(tags = "机构端-过程控制") @RestController @@ -60,4 +62,10 @@ public class EvalProcessControlController { return evalProcessControlApi.archive(cmd); } -} + @ApiOperation("项目过程文件列表") + @GetMapping("/process-files") + public SingleResponse> processFiles(@ApiParam("项目ID") @RequestParam Long projectId) { + return evalProcessControlApi.listProjectFiles(projectId); + } + +} \ No newline at end of file diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java index 6ec0936..77a5c5b 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProcessControlExecutor.java @@ -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.co.institution.EvalProcessControlCO; 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.institution.EvalProcessArchiveCmd; 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.ProjectStageEnum; 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.EvalProjectMemberEntity; import org.qinan.safetyeval.domain.entity.EvalProcessControlEntity; import org.qinan.safetyeval.domain.entity.EvalReportDraftEntity; import org.qinan.safetyeval.domain.entity.EvalReportEntity; 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.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.EvalProjectMemberGateway; import org.qinan.safetyeval.domain.gateway.EvalReportDraftGateway; import org.qinan.safetyeval.domain.gateway.EvalReportGateway; 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.model.EvalReviewItemE; 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.PageResult; import org.qinan.safetyeval.domain.service.EvalArchivePrecheckService; @@ -81,6 +93,16 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { private EvalReviewItemCmdConvertor evalReviewItemCmdConvertor; @Resource private EvalProjectWaringGateway evalProjectWaringGateway; + @Resource + private EvalContractGateway evalContractGateway; + @Resource + private EvalSurveyGateway evalSurveyGateway; + @Resource + private EvalSurveyAttachGateway evalSurveyAttachGateway; + @Resource + private EvalInternalReviewGateway evalInternalReviewGateway; + @Resource + private EvalTechReviewGateway evalTechReviewGateway; @Override public SingleResponse getOrSave(EvalProcessControlSaveCmd cmd) { @@ -237,6 +259,104 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi { return SingleResponse.success(EvalNodeCoConverter.toProcessCO(entity)); } + @Override + public SingleResponse> listProjectFiles(Long projectId) { + EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId); + Long orgId = project.getOrgId(); + List 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 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 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 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) { EvalReportEntity report = new EvalReportEntity(); report.setOrgId(project.getOrgId()); diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProcessControlApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProcessControlApi.java index 644c9bb..13f1d8f 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProcessControlApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProcessControlApi.java @@ -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.EvalProcessControlDetailCO; +import org.qinan.safetyeval.client.co.institution.EvalProjectFileCO; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessControlConfirmCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessControlSaveCmd; import org.qinan.safetyeval.client.dto.institution.EvalProcessHandoverFormCmd; +import java.util.List; + public interface EvalProcessControlApi { SingleResponse getOrSave(EvalProcessControlSaveCmd cmd); SingleResponse confirm(EvalProcessControlConfirmCmd cmd); @@ -15,4 +18,5 @@ public interface EvalProcessControlApi { SingleResponse getDetailByProject(Long projectId); SingleResponse generateHandoverForm(EvalProcessHandoverFormCmd cmd); SingleResponse archive(EvalProcessArchiveCmd cmd); + SingleResponse> listProjectFiles(Long projectId); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectFileCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectFileCO.java new file mode 100644 index 0000000..d3a0c18 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectFileCO.java @@ -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; + +}