diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCertCapabilityComplianceCheckCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCertCapabilityComplianceCheckCO.java index 284b96c..8e41f90 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCertCapabilityComplianceCheckCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCertCapabilityComplianceCheckCO.java @@ -1,6 +1,7 @@ package org.qinan.safetyeval.client.co; import lombok.Data; +import org.qinan.safetyeval.domain.constant.CertLevelEnum; /** * 人员证书专业能力查询结果 @@ -29,4 +30,18 @@ public class OrgPersonnelCertCapabilityComplianceCheckCO { * 行业专业标准ID */ private Long industryProfessionalStandardsId; + + /** + * 行业 + */ + private String operationCategoryCode; + /** + * 证书类型 + */ + private String certTypeCode; + + /** + * 证书登录 + */ + private String certLevel; } 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 d2ec523..11b4f0e 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 @@ -175,16 +175,20 @@ public class ComplianceCheckUtil { QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据"); } int total = personnelList.size(); - long engineerCount = personnelList.stream() - .filter(p -> p.getRegisterEngineerFlag() != null && p.getRegisterEngineerFlag() == 1) - .count(); - long seniorTitleCount = personnelList.stream() + Set engineerSet = personnelCertCoList.stream() + .filter(p -> CertTypeCodeEnum.REGISTERED_SAFETY_ENGINEER + .getCode().equals(p.getCertTypeCode()) && !CertLevelEnum.JUNIOR.getCode().equals(p.getCertLevel())) + .map(OrgPersonnelCertCapabilityComplianceCheckCO::getPersonnelId) + .collect(Collectors.toSet()); + Set seniorTitleSet = personnelList.stream() .filter(p -> p.getTitleCodeArr() != null && p.getTitleCodeArr().stream() .anyMatch(t -> QualificationLevelEnum.SENIOR.getCode().equals(t.getTitleCode()))) - .count(); - long engineerRate = engineerCount * 100 / total; - long seniorTitleRate = seniorTitleCount * 100 / total; - long sumRate = engineerRate + seniorTitleRate; + .map(QualFilingPersonnelAddCmd::getSourcePersonnelId) + .collect(Collectors.toSet()); + long engineerRate = engineerSet.size() * 100L / total; + long seniorTitleRate = seniorTitleSet.size() * 100L / total; + engineerSet.addAll(seniorTitleSet); + long sumRate = engineerSet.size() * 100L / total; boolean pass = engineerRate >= QualFilingComplianceCheckEnum.PERSONNEL_RATE && seniorTitleRate >= QualFilingComplianceCheckEnum.PERSONNEL_RATE && sumRate >= 60; diff --git a/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelCertMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelCertMapper.xml index b7ac62d..aa869bf 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelCertMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelCertMapper.xml @@ -47,7 +47,10 @@ SELECT personnel_id, business_scope, ips.professional_capability_code, - industry_professional_standards_id + industry_professional_standards_id, + orc.operation_category_code, + orc.cert_type_code, + orc.cert_level FROM org_personnel_cert orc join industry_professional_standards ips on orc.industry_professional_standards_id = ips.id WHERE ips.delete_enum = 'false'