dev-tmp1
luotaiqian 2026-08-18 20:09:47 +08:00
parent 5995ab2cbf
commit f7ec3dc7fb
1 changed files with 24 additions and 29 deletions

View File

@ -208,7 +208,7 @@ public class OrgPersonnelExcelImporter {
/**
* Excel sheet1 sheet2
*
*
* 12
* <p>
* errors
@ -238,7 +238,7 @@ public class OrgPersonnelExcelImporter {
return new ArrayList<>();
}
Map<String, OrgPersonnelImportRow.CapabilityRow> capabilityMap = indexCapabilityRows(capabilityRaw);
Map<String, List<OrgPersonnelImportRow.CapabilityRow>> capabilityMap = indexCapabilityRows(capabilityRaw);
List<OrgPersonnelImportRow> rows = new ArrayList<>(basicRaw.size());
Set<String> seenAccounts = new HashSet<>();
@ -254,7 +254,11 @@ public class OrgPersonnelExcelImporter {
OrgPersonnelImportRow row = new OrgPersonnelImportRow();
basic.setRowIndex(i + 2);
row.setBasic(basic);
row.setCapability(matchCapability(basic, capabilityMap));
row.setCapability(matchCapability(basic, capabilityMap, errors));
// 能力信息未匹配或存在多条,已记录异常,剔除该行
if (row.getCapability() == null) {
continue;
}
// 字段校验JSR-303 注解(必填、长度、手机号格式)+ 身份证号
if (!validateRowFields(row, errors)) {
@ -270,11 +274,11 @@ public class OrgPersonnelExcelImporter {
}
/**
* sheet2
* sheet2
*/
private Map<String, OrgPersonnelImportRow.CapabilityRow> indexCapabilityRows(
private Map<String, List<OrgPersonnelImportRow.CapabilityRow>> indexCapabilityRows(
List<OrgPersonnelImportRow.CapabilityRow> capabilityRaw) {
Map<String, OrgPersonnelImportRow.CapabilityRow> map = new LinkedHashMap<>();
Map<String, List<OrgPersonnelImportRow.CapabilityRow>> map = new LinkedHashMap<>();
if (capabilityRaw == null || capabilityRaw.isEmpty()) {
return map;
}
@ -289,39 +293,30 @@ public class OrgPersonnelExcelImporter {
continue;
}
capability.setRowIndex(i + 2);
String key = capabilityKey(capability.getIdCardNo(), capability.getUserName());
if (map.putIfAbsent(key, capability) != null) {
LOGGER.warn("人员导入能力信息重复key={}sheet2行号={},仅保留首条", key, capability.getRowIndex());
}
map.computeIfAbsent(trim(capability.getIdCardNo()), k -> new ArrayList<>()).add(capability);
}
return map;
}
/**
* null
*
* null
*/
private OrgPersonnelImportRow.CapabilityRow matchCapability(OrgPersonnelImportRow.BasicRow basic,
Map<String, OrgPersonnelImportRow.CapabilityRow> capabilityMap) {
if (capabilityMap.isEmpty()) {
Map<String, List<OrgPersonnelImportRow.CapabilityRow>> capabilityMap,
List<OrgPersonnelImportErrorCO> errors) {
List<OrgPersonnelImportRow.CapabilityRow> capabilityList = capabilityMap.get(trim(basic.getIdCardNo()));
if (CollectionUtils.isEmpty(capabilityList)) {
errors.add(new OrgPersonnelImportErrorCO(basic.getRowIndex(), trim(basic.getAccount()), trim(basic.getUserName()),
"没有在专职人员能力信息中查询到数据"));
return null;
}
OrgPersonnelImportRow.CapabilityRow capability =
capabilityMap.get(capabilityKey(basic.getIdCardNo(), null));
if (capability != null) {
return capability;
if (capabilityList.size() > 1) {
errors.add(new OrgPersonnelImportErrorCO(basic.getRowIndex(), trim(basic.getAccount()), trim(basic.getUserName()),
"专职人员能力信息中查询到多条数据"));
return null;
}
return capabilityMap.get(capabilityKey(null, basic.getUserName()));
}
/**
* ID:使 NAME:
*/
private String capabilityKey(String idCardNo, String userName) {
String idCard = trim(idCardNo);
if (StringUtils.hasText(idCard)) {
return "ID:" + idCard;
}
return "NAME:" + trim(userName);
return capabilityList.get(0);
}
/**