From 2b034872ad8695c3e83006a7aa6b7dd9a91ede1d Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Fri, 17 Jul 2026 09:34:48 +0800 Subject: [PATCH] init --- .../web/QualFilingChangeController.java | 4 ++-- .../executor/QualFilingChangeExecutor.java | 5 +++-- .../app/executor/QualFilingExecutor.java | 4 +++- .../orchestrator/QualFilingOrchestrator.java | 4 ++-- .../client/api/QualFilingChangeApi.java | 19 ++++--------------- .../utils/ComplianceCheckUtil.java | 19 ++++++++++++++----- 6 files changed, 28 insertions(+), 27 deletions(-) diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java index 9768889..c4dda5f 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/QualFilingChangeController.java @@ -6,8 +6,8 @@ import io.swagger.annotations.ApiParam; import org.qinan.safetyeval.client.api.QualFilingChangeApi; import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO; import org.qinan.safetyeval.client.co.QualFilingChangeCO; -import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO; import org.qinan.safetyeval.client.co.QualFilingChangeOrgCO; +import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO; import org.qinan.safetyeval.client.dto.*; import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum; import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; @@ -65,7 +65,7 @@ public class QualFilingChangeController { @PostMapping("/aggregationSaveOrEdit") public SingleResponse aggregationSaveOrEdit(@RequestBody AggregationSaveOrEditQualFilingChangeCmd cmd) { cmd.getQualFilingChangeAddCmd().setFilingStatusCode(QualFilingStatusEnum.CHANGE_REVIEWING.getCode()); - return qualFilingChangeApi.aggregationSaveOrEdit(cmd); + return qualFilingChangeApi.aggregationSaveOrEdit(cmd, false); } @ApiOperation("合规检查") diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java index 74fe810..aa06b0c 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java @@ -253,12 +253,13 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { @Override @Transactional(rollbackFor = Exception.class) - public SingleResponse aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd) { + public SingleResponse aggregationSaveOrEdit( + AggregationSaveOrEditQualFilingChangeCmd cmd, boolean throwException) { validateBeforeSaveOrEdit(cmd); // 合规性校验:只要有一项未通过则抛出异常 if (reviewEnable) { AggregationSaveOrEditQualFilingCmd qualFilingCmd = convertToQualFilingCmd(cmd); - List complianceResults = ComplianceCheckUtil.complianceCheck(qualFilingCmd); + List complianceResults = ComplianceCheckUtil.complianceCheck(qualFilingCmd, throwException); List failedItems = complianceResults.stream() .filter(r -> QualFilingComplianceCheckEnum.STATUS_FAIL.equals(r.getStatus())) .map(QualFilingComplianceCheckResultCO::getTitle) diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java index 9faae67..883fbe8 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java @@ -24,6 +24,7 @@ import org.qinan.safetyeval.domain.service.QualFilingDomainService; import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.dataobject.*; import org.qinan.safetyeval.infrastructure.mapper.*; +import org.qinan.safetyeval.infrastructure.utils.ComplianceCheckUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; @@ -168,6 +169,7 @@ public class QualFilingExecutor implements QualFilingApi { @Override public SingleResponse aggregationSaveOrEdit(AggregationSaveOrEditQualFilingCmd cmd) { + ComplianceCheckUtil.complianceCheck(cmd, true); // 新增时校验:用当前id查询记录获取org_id,若同机构已存在其他资质备案记录则不允许新增 Long currentId = cmd.getQualFilingAddCmd().getId(); if (currentId == null) { @@ -264,7 +266,7 @@ public class QualFilingExecutor implements QualFilingApi { BeanUtils.copyProperties(item, qualFilingPersonnelChangeAddCmd); return qualFilingPersonnelChangeAddCmd; }).collect(Collectors.toList())); - qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync); + qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync, true); } } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java index 9e93c4e..29c62fd 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java @@ -858,7 +858,7 @@ public class QualFilingOrchestrator { cmd.setQualFilingMaterialAddCmds( qualFilingCmdConvertor.convertEntityListToCmdList(qualFilingMaterialGateway.listByFilingId(id))); - return ComplianceCheckUtil.complianceCheck(cmd); + return ComplianceCheckUtil.complianceCheck(cmd, true); } /** @@ -893,7 +893,7 @@ public class QualFilingOrchestrator { qualFilingMaterialChangeCmdConvertor.convertChangeEListToCmdList( qualFilingMaterialChangeGateway.listByFilingId(changeId))); - return ComplianceCheckUtil.complianceCheck(qualFilingCmd); + return ComplianceCheckUtil.complianceCheck(qualFilingCmd, true); } private Long resolveOrgId() { diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java index 65965ba..0e07391 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/QualFilingChangeApi.java @@ -1,19 +1,7 @@ package org.qinan.safetyeval.client.api; -import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO; -import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO; -import org.qinan.safetyeval.client.co.QualFilingChangeHistoryCO; -import org.qinan.safetyeval.client.co.QualFilingChangeCO; -import org.qinan.safetyeval.client.co.QualFilingChangeOrgCO; -import org.qinan.safetyeval.client.dto.AggregationSaveOrEditQualFilingChangeCmd; -import org.qinan.safetyeval.client.dto.PageResponse; -import org.qinan.safetyeval.client.dto.SingleResponse; -import org.qinan.safetyeval.client.dto.QualFilingChangeAddCmd; -import org.qinan.safetyeval.client.dto.QualFilingChangeModifyCmd; -import org.qinan.safetyeval.client.dto.QualFilingChangePageQuery; -import org.qinan.safetyeval.client.dto.QualFilingChangeReviewAddCmd; -import org.qinan.safetyeval.client.dto.QualFilingChangeSubmitCmd; -import org.qinan.safetyeval.client.dto.QualFilingRejectCmd; +import org.qinan.safetyeval.client.co.*; +import org.qinan.safetyeval.client.dto.*; import java.util.List; @@ -46,7 +34,8 @@ public interface QualFilingChangeApi { SingleResponse> complianceCheck(Long id); - SingleResponse aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd); + SingleResponse aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd + , boolean throwException); void review(QualFilingChangeReviewAddCmd cmd); diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java index c6df836..9f71273 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java @@ -34,8 +34,13 @@ public class ComplianceCheckUtil { /** * 合规检查:根据聚合命令对象逐项检查是否满足法规要求 + * + * @param cmd cmd + * @param throwException true throw ; false show + * @return QualFilingComplianceCheckResultCO */ - public List complianceCheck(AggregationSaveOrEditQualFilingCmd cmd) { + public List complianceCheck(AggregationSaveOrEditQualFilingCmd cmd + , boolean throwException) { QualFilingAddCmd filing = cmd.getQualFilingAddCmd(); List personnelList = cmd.getQualFilingPersonnelAddCmds(); List materialList = cmd.getQualFilingMaterialAddCmds(); @@ -63,7 +68,7 @@ public class ComplianceCheckUtil { results.add(checkPersonnelCount(filing, personnelList)); // 6. 人员比例 - results.add(checkPersonnelRatio(filing.getBusinessScope(), personnelList, certCapabilityList)); + results.add(checkPersonnelRatio(filing.getBusinessScope(), personnelList, certCapabilityList, throwException)); // 7. 负责人配备 results.add(checkKeyPosition(filing, personnelList)); @@ -163,7 +168,7 @@ public class ComplianceCheckUtil { * 人员比例:中级注安师 >= 30%,高级职称 >= 30%,合计 >= 60% */ private QualFilingComplianceCheckResultCO checkPersonnelRatio(List businessScope - , List personnelList, List personnelCertCoList) { + , List personnelList, List personnelCertCoList, boolean throwException) { if (personnelList == null || personnelList.isEmpty()) { return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO, QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据"); @@ -188,12 +193,16 @@ public class ComplianceCheckUtil { .convertCmdsToCos(personnelList); Pair booleanStringPair = industryProfessionalStandardsValid( businessScope, personnelCoList, personnelCertCoList); - if (Boolean.FALSE.equals(booleanStringPair.getKey())) { + boolean personPassed = Boolean.TRUE.equals(booleanStringPair.getKey()); + if (!personPassed && throwException) { throw new BizException(PERSON_NOT_ENOUGH, booleanStringPair.getValue()); } + if (!personPassed) { + currentValue += booleanStringPair.getValue(); + } return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO, - pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL, + pass && personPassed ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL, currentValue); }