archive file

dev-tmp1
luotaiqian 2026-08-27 16:43:14 +08:00
parent 426bd3e22b
commit 2a4421a274
1 changed files with 5 additions and 80 deletions

View File

@ -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("人;");
}
/**
*
* <p>
* sourcePersonnelId
* 使Dinic
* <p>
* certCapabilityList personnelId == industryProfessionalPersonCos sourcePersonnelId
*
*
* @param standardsDOList code + code
* @param industryProfessionalPersonCos
* @param certCapabilityList
* @return Pair<Boolean, String> key value null
*/
public static Pair<Boolean, String> doIndustryProfessionalStandardsValid(
List<IndustryProfessionalStandardsDO> standardsDOList
, List<IndustryProfessionalPersonCo> industryProfessionalPersonCos
, List<OrgPersonnelCertCapabilityComplianceCheckCO> certCapabilityList) {
if (CollectionUtils.isEmpty(standardsDOList)) {
return Pair.of(true, null);
}
Map<String, Long> requiredMap = new HashMap<>();
for (IndustryProfessionalStandardsDO standardsDO : standardsDOList) {
requiredMap.put(standardsDO.getProfessionalCapabilityCode(), standardsDO.getPersonNum());
}
// 3. 构建人员→可担任专业能力code集合同一人可能具备多个专业能力
Map<Long, IndustryProfessionalPersonCo> personnelMap = industryProfessionalPersonCos.stream()
.collect(Collectors.toMap(IndustryProfessionalPersonCo::getSourcePersonnelId, Function.identity()));
Map<Long, Set<String>> personCapabilityMap = new HashMap<>();
for (OrgPersonnelCertCapabilityComplianceCheckCO pc : certCapabilityList) {
// 人员证书的能力
personCapabilityMap.computeIfAbsent(pc.getPersonnelId(), k -> new HashSet<>())
.add(pc.getProfessionalCapabilityCode());
IndustryProfessionalPersonCo co = personnelMap.get(pc.getPersonnelId());
if (co != null) {
// 人员学科能力
Set<String> pdcSet = Arrays.stream(co.getProfessionalCapabilityCode().split(CommonUtil.COMMA))
.collect(Collectors.toSet());
personCapabilityMap.computeIfAbsent(pc.getPersonnelId(), k -> new HashSet<>())
.addAll(pdcSet);
}
}
// 数据来源industryProfessionalPersonCos备案人员自带专业能力+ certCapabilityList证书专业能力
Map<String, Long> assignedMap = canFullyAssign(personCapabilityMap, requiredMap);
IndustryEnum industryEnum = IndustryEnum.ofCode(standardsDOList.get(0).getIndustryCode());
String industryName = industryEnum != null ? industryEnum.getValue() : standardsDOList.get(0).getIndustryCode();
boolean allMet = true;
StringBuilder failureMsg = new StringBuilder();
for (Map.Entry<String, Long> entry : requiredMap.entrySet()) {
String capCode = entry.getKey();
long required = entry.getValue() == null ? 0L : entry.getValue();
long assigned = assignedMap.getOrDefault(capCode, 0L);
if (assigned < required) {
allMet = false;
ProfessionalCapabilityEnum capEnum = ProfessionalCapabilityEnum.ofCode(capCode);
String capName = capEnum != null ? capEnum.getValue() : capCode;
failureMsg.append(industryName)
.append(CommonUtil.COLON)
.append(capName)
.append(" 需要")
.append(required)
.append("人,当前可用")
.append(assigned)
.append("人;");
}
}
return allMet ? Pair.of(true, null) : Pair.of(false, failureMsg.toString());
}
/**