v0.0.1-final^2
luotaiqian 2026-07-17 09:34:48 +08:00
parent fe091beba0
commit 2b034872ad
6 changed files with 28 additions and 27 deletions

View File

@ -6,8 +6,8 @@ import io.swagger.annotations.ApiParam;
import org.qinan.safetyeval.client.api.QualFilingChangeApi; import org.qinan.safetyeval.client.api.QualFilingChangeApi;
import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO; import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO;
import org.qinan.safetyeval.client.co.QualFilingChangeCO; 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.QualFilingChangeOrgCO;
import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO;
import org.qinan.safetyeval.client.dto.*; import org.qinan.safetyeval.client.dto.*;
import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum; import org.qinan.safetyeval.domain.constant.QualFilingStatusEnum;
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
@ -65,7 +65,7 @@ public class QualFilingChangeController {
@PostMapping("/aggregationSaveOrEdit") @PostMapping("/aggregationSaveOrEdit")
public SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(@RequestBody AggregationSaveOrEditQualFilingChangeCmd cmd) { public SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(@RequestBody AggregationSaveOrEditQualFilingChangeCmd cmd) {
cmd.getQualFilingChangeAddCmd().setFilingStatusCode(QualFilingStatusEnum.CHANGE_REVIEWING.getCode()); cmd.getQualFilingChangeAddCmd().setFilingStatusCode(QualFilingStatusEnum.CHANGE_REVIEWING.getCode());
return qualFilingChangeApi.aggregationSaveOrEdit(cmd); return qualFilingChangeApi.aggregationSaveOrEdit(cmd, false);
} }
@ApiOperation("合规检查") @ApiOperation("合规检查")

View File

@ -253,12 +253,13 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd) { public SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(
AggregationSaveOrEditQualFilingChangeCmd cmd, boolean throwException) {
validateBeforeSaveOrEdit(cmd); validateBeforeSaveOrEdit(cmd);
// 合规性校验:只要有一项未通过则抛出异常 // 合规性校验:只要有一项未通过则抛出异常
if (reviewEnable) { if (reviewEnable) {
AggregationSaveOrEditQualFilingCmd qualFilingCmd = convertToQualFilingCmd(cmd); AggregationSaveOrEditQualFilingCmd qualFilingCmd = convertToQualFilingCmd(cmd);
List<QualFilingComplianceCheckResultCO> complianceResults = ComplianceCheckUtil.complianceCheck(qualFilingCmd); List<QualFilingComplianceCheckResultCO> complianceResults = ComplianceCheckUtil.complianceCheck(qualFilingCmd, throwException);
List<String> failedItems = complianceResults.stream() List<String> failedItems = complianceResults.stream()
.filter(r -> QualFilingComplianceCheckEnum.STATUS_FAIL.equals(r.getStatus())) .filter(r -> QualFilingComplianceCheckEnum.STATUS_FAIL.equals(r.getStatus()))
.map(QualFilingComplianceCheckResultCO::getTitle) .map(QualFilingComplianceCheckResultCO::getTitle)

View File

@ -24,6 +24,7 @@ import org.qinan.safetyeval.domain.service.QualFilingDomainService;
import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter;
import org.qinan.safetyeval.infrastructure.dataobject.*; import org.qinan.safetyeval.infrastructure.dataobject.*;
import org.qinan.safetyeval.infrastructure.mapper.*; import org.qinan.safetyeval.infrastructure.mapper.*;
import org.qinan.safetyeval.infrastructure.utils.ComplianceCheckUtil;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
@ -168,6 +169,7 @@ public class QualFilingExecutor implements QualFilingApi {
@Override @Override
public SingleResponse<QualFilingCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingCmd cmd) { public SingleResponse<QualFilingCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingCmd cmd) {
ComplianceCheckUtil.complianceCheck(cmd, true);
// 新增时校验用当前id查询记录获取org_id若同机构已存在其他资质备案记录则不允许新增 // 新增时校验用当前id查询记录获取org_id若同机构已存在其他资质备案记录则不允许新增
Long currentId = cmd.getQualFilingAddCmd().getId(); Long currentId = cmd.getQualFilingAddCmd().getId();
if (currentId == null) { if (currentId == null) {
@ -264,7 +266,7 @@ public class QualFilingExecutor implements QualFilingApi {
BeanUtils.copyProperties(item, qualFilingPersonnelChangeAddCmd); BeanUtils.copyProperties(item, qualFilingPersonnelChangeAddCmd);
return qualFilingPersonnelChangeAddCmd; return qualFilingPersonnelChangeAddCmd;
}).collect(Collectors.toList())); }).collect(Collectors.toList()));
qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync); qualFilingChangeExecutor.aggregationSaveOrEdit(cmdSync, true);
} }
} }

View File

@ -858,7 +858,7 @@ public class QualFilingOrchestrator {
cmd.setQualFilingMaterialAddCmds( cmd.setQualFilingMaterialAddCmds(
qualFilingCmdConvertor.convertEntityListToCmdList(qualFilingMaterialGateway.listByFilingId(id))); qualFilingCmdConvertor.convertEntityListToCmdList(qualFilingMaterialGateway.listByFilingId(id)));
return ComplianceCheckUtil.complianceCheck(cmd); return ComplianceCheckUtil.complianceCheck(cmd, true);
} }
/** /**
@ -893,7 +893,7 @@ public class QualFilingOrchestrator {
qualFilingMaterialChangeCmdConvertor.convertChangeEListToCmdList( qualFilingMaterialChangeCmdConvertor.convertChangeEListToCmdList(
qualFilingMaterialChangeGateway.listByFilingId(changeId))); qualFilingMaterialChangeGateway.listByFilingId(changeId)));
return ComplianceCheckUtil.complianceCheck(qualFilingCmd); return ComplianceCheckUtil.complianceCheck(qualFilingCmd, true);
} }
private Long resolveOrgId() { private Long resolveOrgId() {

View File

@ -1,19 +1,7 @@
package org.qinan.safetyeval.client.api; package org.qinan.safetyeval.client.api;
import org.qinan.safetyeval.client.co.QualFilingChangeAggregationCO; import org.qinan.safetyeval.client.co.*;
import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO; import org.qinan.safetyeval.client.dto.*;
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 java.util.List; import java.util.List;
@ -46,7 +34,8 @@ public interface QualFilingChangeApi {
SingleResponse<List<QualFilingComplianceCheckResultCO>> complianceCheck(Long id); SingleResponse<List<QualFilingComplianceCheckResultCO>> complianceCheck(Long id);
SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd); SingleResponse<QualFilingChangeCO> aggregationSaveOrEdit(AggregationSaveOrEditQualFilingChangeCmd cmd
, boolean throwException);
void review(QualFilingChangeReviewAddCmd cmd); void review(QualFilingChangeReviewAddCmd cmd);

View File

@ -34,8 +34,13 @@ public class ComplianceCheckUtil {
/** /**
* *
*
* @param cmd cmd
* @param throwException true throw ; false show
* @return QualFilingComplianceCheckResultCO
*/ */
public List<QualFilingComplianceCheckResultCO> complianceCheck(AggregationSaveOrEditQualFilingCmd cmd) { public List<QualFilingComplianceCheckResultCO> complianceCheck(AggregationSaveOrEditQualFilingCmd cmd
, boolean throwException) {
QualFilingAddCmd filing = cmd.getQualFilingAddCmd(); QualFilingAddCmd filing = cmd.getQualFilingAddCmd();
List<QualFilingPersonnelAddCmd> personnelList = cmd.getQualFilingPersonnelAddCmds(); List<QualFilingPersonnelAddCmd> personnelList = cmd.getQualFilingPersonnelAddCmds();
List<QualFilingMaterialAddCmd> materialList = cmd.getQualFilingMaterialAddCmds(); List<QualFilingMaterialAddCmd> materialList = cmd.getQualFilingMaterialAddCmds();
@ -63,7 +68,7 @@ public class ComplianceCheckUtil {
results.add(checkPersonnelCount(filing, personnelList)); results.add(checkPersonnelCount(filing, personnelList));
// 6. 人员比例 // 6. 人员比例
results.add(checkPersonnelRatio(filing.getBusinessScope(), personnelList, certCapabilityList)); results.add(checkPersonnelRatio(filing.getBusinessScope(), personnelList, certCapabilityList, throwException));
// 7. 负责人配备 // 7. 负责人配备
results.add(checkKeyPosition(filing, personnelList)); results.add(checkKeyPosition(filing, personnelList));
@ -163,7 +168,7 @@ public class ComplianceCheckUtil {
* >= 30% >= 30% >= 60% * >= 30% >= 30% >= 60%
*/ */
private QualFilingComplianceCheckResultCO checkPersonnelRatio(List<String> businessScope private QualFilingComplianceCheckResultCO checkPersonnelRatio(List<String> businessScope
, List<QualFilingPersonnelAddCmd> personnelList, List<OrgPersonnelCertCapabilityComplianceCheckCO> personnelCertCoList) { , List<QualFilingPersonnelAddCmd> personnelList, List<OrgPersonnelCertCapabilityComplianceCheckCO> personnelCertCoList, boolean throwException) {
if (personnelList == null || personnelList.isEmpty()) { if (personnelList == null || personnelList.isEmpty()) {
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO, return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO,
QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据"); QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据");
@ -188,12 +193,16 @@ public class ComplianceCheckUtil {
.convertCmdsToCos(personnelList); .convertCmdsToCos(personnelList);
Pair<Boolean, String> booleanStringPair = industryProfessionalStandardsValid( Pair<Boolean, String> booleanStringPair = industryProfessionalStandardsValid(
businessScope, personnelCoList, personnelCertCoList); 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()); throw new BizException(PERSON_NOT_ENOUGH, booleanStringPair.getValue());
} }
if (!personPassed) {
currentValue += booleanStringPair.getValue();
}
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO, return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO,
pass ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL, pass && personPassed ? QualFilingComplianceCheckEnum.STATUS_PASS : QualFilingComplianceCheckEnum.STATUS_FAIL,
currentValue); currentValue);
} }