dev
luotaiqian 2026-07-31 17:12:34 +08:00
parent 591884f6ec
commit 8471799126
3 changed files with 31 additions and 9 deletions

View File

@ -1,6 +1,7 @@
package org.qinan.safetyeval.client.co; package org.qinan.safetyeval.client.co;
import lombok.Data; import lombok.Data;
import org.qinan.safetyeval.domain.constant.CertLevelEnum;
/** /**
* *
@ -29,4 +30,18 @@ public class OrgPersonnelCertCapabilityComplianceCheckCO {
* ID * ID
*/ */
private Long industryProfessionalStandardsId; private Long industryProfessionalStandardsId;
/**
*
*/
private String operationCategoryCode;
/**
*
*/
private String certTypeCode;
/**
*
*/
private String certLevel;
} }

View File

@ -175,16 +175,20 @@ public class ComplianceCheckUtil {
QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据"); QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据");
} }
int total = personnelList.size(); int total = personnelList.size();
long engineerCount = personnelList.stream() Set<Long> engineerSet = personnelCertCoList.stream()
.filter(p -> p.getRegisterEngineerFlag() != null && p.getRegisterEngineerFlag() == 1) .filter(p -> CertTypeCodeEnum.REGISTERED_SAFETY_ENGINEER
.count(); .getCode().equals(p.getCertTypeCode()) && !CertLevelEnum.JUNIOR.getCode().equals(p.getCertLevel()))
long seniorTitleCount = personnelList.stream() .map(OrgPersonnelCertCapabilityComplianceCheckCO::getPersonnelId)
.collect(Collectors.toSet());
Set<Long> seniorTitleSet = personnelList.stream()
.filter(p -> p.getTitleCodeArr() != null && p.getTitleCodeArr().stream() .filter(p -> p.getTitleCodeArr() != null && p.getTitleCodeArr().stream()
.anyMatch(t -> QualificationLevelEnum.SENIOR.getCode().equals(t.getTitleCode()))) .anyMatch(t -> QualificationLevelEnum.SENIOR.getCode().equals(t.getTitleCode())))
.count(); .map(QualFilingPersonnelAddCmd::getSourcePersonnelId)
long engineerRate = engineerCount * 100 / total; .collect(Collectors.toSet());
long seniorTitleRate = seniorTitleCount * 100 / total; long engineerRate = engineerSet.size() * 100L / total;
long sumRate = engineerRate + seniorTitleRate; long seniorTitleRate = seniorTitleSet.size() * 100L / total;
engineerSet.addAll(seniorTitleSet);
long sumRate = engineerSet.size() * 100L / total;
boolean pass = engineerRate >= QualFilingComplianceCheckEnum.PERSONNEL_RATE boolean pass = engineerRate >= QualFilingComplianceCheckEnum.PERSONNEL_RATE
&& seniorTitleRate >= QualFilingComplianceCheckEnum.PERSONNEL_RATE && seniorTitleRate >= QualFilingComplianceCheckEnum.PERSONNEL_RATE
&& sumRate >= 60; && sumRate >= 60;

View File

@ -47,7 +47,10 @@
SELECT personnel_id, SELECT personnel_id,
business_scope, business_scope,
ips.professional_capability_code, 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 FROM org_personnel_cert orc
join industry_professional_standards ips on orc.industry_professional_standards_id = ips.id join industry_professional_standards ips on orc.industry_professional_standards_id = ips.id
WHERE ips.delete_enum = 'false' WHERE ips.delete_enum = 'false'