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 4a4c850a..74553dde 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 @@ -521,7 +521,7 @@ public class ComplianceCheckUtil { String capCode = standard.getProfessionalCapabilityCode(); long required = standard.getPersonNum() == null ? 0L : standard.getPersonNum(); long assigned = assignedMap.getOrDefault(industryCode + "::" + capCode, 0L); - appendIfShort(industryCode, capCode, required, assigned, failureMsg); + appendIfShort(industryCode, standard, required, assigned, failureMsg); } } @@ -540,22 +540,22 @@ public class ComplianceCheckUtil { long available = personCapabilityMap.values().stream() .filter(caps -> caps.contains(capCode)) .count(); - appendIfShort(industryName, capCode, required, available, failureMsg); + appendIfShort(industryName, standard, required, available, failureMsg); } } /** * 当实际人数小于需求时,追加一条失败明细 */ - private static void appendIfShort(String industryOrCode, String capCode, long required + private static void appendIfShort(String industryOrCode, IndustryProfessionalStandardsDO standard, long required , long available, StringBuilder failureMsg) { if (available >= required) { return; } IndustryEnum industryEnum = IndustryEnum.ofCode(industryOrCode); String industryName = industryEnum != null ? industryEnum.getValue() : industryOrCode; - ProfessionalCapabilityEnum capEnum = ProfessionalCapabilityEnum.ofCode(capCode); - String capName = capEnum != null ? capEnum.getValue() : capCode; + ProfessionalCapabilityEnum capEnum = ProfessionalCapabilityEnum.ofCode(standard.getProfessionalCapabilityCode()); + String capName = capEnum != null ? capEnum.getValue() : standard.getProfessionalCapabilityCode(); failureMsg.append(industryName) .append(CommonUtil.COLON) .append(capName) @@ -566,81 +566,6 @@ public class ComplianceCheckUtil { .append("人;"); } - /** - * 行业专业能力人员要求校验(一人一岗) - *
- * 每个人员(sourcePersonnelId)可能具备多个专业能力,但只能被分配到一个专业能力岗位。 - * 使用最大流算法(Dinic)求解最优分配方案,判断是否能满足所有专业能力的人数要求。 - *
- * 核心约束:certCapabilityList 中 personnelId == industryProfessionalPersonCos 中 sourcePersonnelId 标识同一人,
- * 一个人最多只能占用一个专业能力名额。
- *
- * @param standardsDOList 人员要求标准(按 行业code + 专业能力code 分类的人数要求)
- * @param industryProfessionalPersonCos 当前实际人员(用于确定参检人员范围)
- * @param certCapabilityList 人员证书专业能力信息(提供人员→专业能力映射)
- * @return Pair