diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java index 0b554c980e..c44cce4b73 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java @@ -85,6 +85,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res @Autowired private IcResiUserDao icResiUserDao; + /** + * 字表中不需要的列 + */ + private List subTableNeedlessColumns = Arrays.asList("GRID_ID", "VILLAGE_ID", "BUILD_ID", "UNIT_ID", "HOME_ID", + "IS_BDHJ", "NAME", "MOBILE", "GENDER", "ID_CARD", + "BIRTHDAY", "CONTACTS", "CONTACTS_MOBILE"); + /** * @description 列信息封装 * @@ -353,7 +360,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res LinkedHashMap columnAndValues = new LinkedHashMap<>(); try { - convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues); + convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues, true); columnAndValues.put("IS_ENSURE_HOUSE", "0"); columnAndValues.put("IS_OLD_PEOPLE", "0"); @@ -434,12 +441,16 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res for (Map row : dataRows) { try { - convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues); + convertColumnWrappers2Map4Persist(headerColumnWrapper, row, currUserAgencyId, checkBoxOptionColumnIdxAndLabel, columnAndValues, false); // 检验身份证号 String idCard = columnAndValues.get("ID_CARD"); if (StringUtils.isBlank(idCard)) { - throw new RenException(EpmetErrorCode.IDCARDNO_ERROR.getCode(), String.format("用户【%s】身份证号未填写或格式错误", columnAndValues.get("NAME"))); + String resiName = columnAndValues.get("NAME"); + if (resiName == null) { + resiName = ""; + } + throw new RenException(EpmetErrorCode.IDCARDNO_ERROR.getCode(), String.format("用户【%s】身份证号未填写或格式错误", resiName)); } // 检查用户是否存在 @@ -538,10 +549,11 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param currUserAgencyId 当前用户所属机构ID * @param checkBoxOptionColumnIdxAndLabel 复选框options列表。key:列号,value:复选框中文 * @param target 要将数据放到哪个对象中 + * @param isPrimaryTable 是否是主表 */ private void convertColumnWrappers2Map4Persist(Map headerColumnWrapper, Map row, String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, - LinkedHashMap target) { + LinkedHashMap target, boolean isPrimaryTable) { boolean interupt = false; @@ -588,10 +600,21 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnWrapper.setColValue(checkBoxColValue); } - // requiredColumns中的值为必填项 - if (columnWrapper.getRequired() == 1 && StringUtils.isBlank(columnWrapper.colValue)) { - interupt = true; - errorColumnNames.add(columnWrapper.combinedLabel); + // requiredColumns中的值不在排除字段中 && 是必填 && 未填写 + if (isPrimaryTable) { + // 主表没有需要排除的列 + if (columnWrapper.getRequired() == 1 && StringUtils.isBlank(columnWrapper.colValue)) { + interupt = true; + errorColumnNames.add(columnWrapper.combinedLabel); + } + } else { + // 从表需要排除掉一些不必要校验的列 + if (!subTableNeedlessColumns.contains(columnWrapper.columnName) + && columnWrapper.getRequired() == 1 + && StringUtils.isBlank(columnWrapper.colValue)) { + interupt = true; + errorColumnNames.add(columnWrapper.combinedLabel); + } } target.put(columnWrapper.columnName, columnWrapper.colValue);