diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java index 08cee7d65d..4525030489 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/GovOrgOpenFeignClient.java @@ -522,4 +522,7 @@ public interface GovOrgOpenFeignClient { @PostMapping("/gov/org/building/buildinglistbyids") Result> buildingListByIds(@RequestBody List buildingIdList); + + @PostMapping("/gov/org/icneighborhood/getlistbyids") + Result> getListByIds(@RequestBody List ids); } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java index 7734d66901..5a5bc80ed5 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/feign/fallback/GovOrgOpenFeignClientFallback.java @@ -320,6 +320,11 @@ public class GovOrgOpenFeignClientFallback implements GovOrgOpenFeignClient { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "buildingListByIds", buildingIdList); } + @Override + public Result> getListByIds(List ids) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getListByIds", ids); + } + @Override public Result selectPidsByGridId(String gridId) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "selectPidsByGridId", gridId); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index 8af8c48978..48137bf4cb 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java @@ -95,4 +95,16 @@ public class IcNeighborHoodController { return new Result>().ok(icNeighborHoodService.getNeighborHoodOptions(dto.getAgencyId(), dto.getGridId())); } + /** + * @Description 通过ID查询小区信息 + * @Param ids + * @Return {@link Result< List< IcNeighborHoodDTO>>} + * @Author zhaoqifeng + * @Date 2021/11/8 10:46 + */ + @PostMapping("getlistbyids") + public Result> getListByIds(@RequestBody List ids) { + return new Result>().ok(icNeighborHoodService.getListByIds(ids)); + } + } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index d069185056..cc8fd47ad1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java @@ -103,4 +103,13 @@ public interface IcNeighborHoodService extends BaseService * @Date 2021/10/26 14:32 */ List getNeighborHoodOptions(String agencyId, String gridId); + + /** + * @Description 通过ID查询小区信息 + * @Param ids + * @Return {@link List< IcNeighborHoodDTO>} + * @Author zhaoqifeng + * @Date 2021/11/8 10:45 + */ + List getListByIds(List ids); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index ceea51f13d..db000d1208 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java @@ -134,4 +134,23 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl} + * @Author zhaoqifeng + * @Date 2021/11/8 10:45 + */ + @Override + public List getListByIds(List ids) { + if (CollectionUtils.isEmpty(ids)) { + return Collections.emptyList(); + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(IcNeighborHoodEntity::getId, ids); + List list = baseDao.selectList(wrapper); + return ConvertUtils.sourceToTarget(list, IcNeighborHoodDTO.class); + } + } \ No newline at end of file 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 6d4c874f59..9b5908dace 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 @@ -60,7 +60,10 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res // 错误和跳过excel行暂存 public static final ThreadLocal>> errorRows = new ThreadLocal<>(); public static final ThreadLocal>> skipedRows = new ThreadLocal<>(); - + + // 导入数字赋能平台居民信息form_code + public static final String IMPORT_IC_RESI_FORM_CODE = "resi_base_info"; + @Autowired private LoginUserUtil loginUserUtil; @@ -75,7 +78,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res @Autowired private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient; - + @Autowired private IcResiUserDao icResiUserDao; @@ -92,7 +95,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res private String columnName; private String itemType; private String itemId; - + // 是否必填 private Integer required; private List colIndexs; @@ -115,7 +118,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res */ private String optionSourceValue; } - + /** * 错误行信息 */ @@ -124,9 +127,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res @Excel(name = "工作表", width = 30) private String sheetName; - + private String tableName; - + @Excel(name = "身份证号", width = 40) private String idCard; @@ -142,9 +145,9 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res @Excel(name = "工作表") private String sheetName; - + private String tableName; - + @Excel(name = "身份证号") private String idCard; @@ -182,15 +185,15 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res initThreadLocalRowsStorage(); // 上传主表信息 - importIcResiBaseInfoFromExcel(excelPathName, IcResiUserTableEnums.IC_RESI_USER.getSheetNo(), IcResiUserTableEnums.IC_RESI_USER.getHeadRowNo(), - currUserAgencyId, agencyInfo.getPids(), loginUserId, IcResiUserTableEnums.IC_RESI_USER.getTableName()); + importIcResiBaseInfoFromExcel(excelPathName, IcResiUserTableEnums.IC_RESI_USER.getSheetNo(), IcResiUserTableEnums.IC_RESI_USER.getHeadRowNo(), + currUserAgencyId, agencyInfo.getPids(), loginUserId, IcResiUserTableEnums.IC_RESI_USER.getTableName()); // 上传附表信息 for (IcResiUserTableEnums sheet : IcResiUserTableEnums.values()) { if (sheet == IcResiUserTableEnums.IC_RESI_USER) { - continue; + continue; } - + try { importIcResiExtraInfoFromExcel(excelPathName, sheet.getSheetNo(), sheet.getHeadRowNo(), currUserAgencyId, loginUserId, sheet.getTableName(), customerId); } catch (Exception e) { @@ -205,7 +208,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String errors = JSON.toJSONString(errorRows.get()); //String skipeds = JSON.toJSONString(skipedRows.get()); - + log.error(errors); //log.error(skipeds); @@ -257,7 +260,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res Map> headers = mergeHead(headList); // 查询form相关信息 - List customerItems = listFormItems("resi_base_info"); + List customerItems = listFormItems(IMPORT_IC_RESI_FORM_CODE); // 清洗表头数据 Map abandonedHeaders = washHeaders(headers, customerItems); @@ -306,7 +309,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res Map> headers = mergeHead(headList); // 查询form相关信息 - List customerItems = listFormItems("resi_base_info"); + List customerItems = listFormItems(IMPORT_IC_RESI_FORM_CODE); // 清洗表头数据 Map abandonedHeaders = washHeaders(headers, customerItems); @@ -361,27 +364,34 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res columnAndValues.put("AGENCY_ID", currUserAgencyId); columnAndValues.put("PIDS", currUserAgencyPids); columnAndValues.put("CUSTOMER_ID", loginUserUtil.getCurrentCustomerId()); - columnAndValues.put("CREATED_BY", currentUserId); + columnAndValues.put("UPDATED_BY", currentUserId); - columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", "")); // 验证居民信息是否存在 String idCard = columnAndValues.get("ID_CARD"); LambdaQueryWrapper idCardQuery = new LambdaQueryWrapper<>(); idCardQuery.eq(IcResiUserEntity::getIdCard, idCard); + IcResiUserEntity resiBaseInfo = icResiUserDao.selectOne(idCardQuery); - if (icResiUserDao.selectCount(idCardQuery) > 0) { - //log.info("身份证号为【{}】的居民信息已存在,跳过导入", idCard); - SkipedRow skipedRow = new SkipedRow(); - skipedRow.setName(columnAndValues.get("NAME")); - skipedRow.setIdCard(idCard); - skipedRow.setInfo("身份证号已存在,跳过导入"); - skipedRow.setTableName(tableName); - skipedRows.get().get(IcResiUserTableEnums.IC_RESI_USER.getTableName()).add(skipedRow); - continue; + if (resiBaseInfo != null) { + icResiUserDao.upTable(tableName, resiBaseInfo.getId(), columnAndValues); + } else { + columnAndValues.put("CREATED_BY", currentUserId); + columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", "")); + icResiUserDao.add(tableName, columnAndValues); } - icResiUserDao.add(tableName, columnAndValues); + //if (icResiUserDao.selectCount(idCardQuery) > 0) { + // //log.info("身份证号为【{}】的居民信息已存在,跳过导入", idCard); + // SkipedRow skipedRow = new SkipedRow(); + // skipedRow.setName(columnAndValues.get("NAME")); + // skipedRow.setIdCard(idCard); + // skipedRow.setInfo("身份证号已存在,跳过导入"); + // skipedRow.setTableName(tableName); + // skipedRows.get().get(IcResiUserTableEnums.IC_RESI_USER.getTableName()).add(skipedRow); + // continue; + //} + } catch (Exception e) { String errorMsg; if (e instanceof RenException) { @@ -416,7 +426,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String currentUserId, String targetTableName, String customerId) { LinkedHashMap columnAndValues = new LinkedHashMap<>(); - + // 遍历每一行,将行内容转化为 for (Map row : dataRows) { @@ -440,32 +450,42 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String icResiId = icResiUserBaseInfo.getId(); - // 验证党员信息是否存在 - if (CollectionUtils.isNotEmpty(icResiUserDao.selectSubTableRecords(customerId, icResiId, targetTableName))) { - log.info("身份证号为【{}】的居民【{}】信息已存在,跳过导入", idCard, targetTableName); - - SkipedRow skipedRow = new SkipedRow(); - skipedRow.setName(columnAndValues.get("NAME")); - skipedRow.setIdCard(columnAndValues.get("ID_CARD")); - skipedRow.setInfo("信息已存在,跳过导入"); - skipedRow.setTableName(targetTableName); - skipedRows.get().get(targetTableName).add(skipedRow); - - continue; - } + //if (CollectionUtils.isNotEmpty(icResiUserDao.selectSubTableRecords(customerId, icResiId, targetTableName))) { + // log.info("身份证号为【{}】的居民【{}】信息已存在,跳过导入", idCard, targetTableName); + // + // SkipedRow skipedRow = new SkipedRow(); + // skipedRow.setName(columnAndValues.get("NAME")); + // skipedRow.setIdCard(columnAndValues.get("ID_CARD")); + // skipedRow.setInfo("信息已存在,跳过导入"); + // skipedRow.setTableName(targetTableName); + // skipedRows.get().get(targetTableName).add(skipedRow); + // + // continue; + //} columnAndValues.put("IC_RESI_USER", icResiId); - columnAndValues.put("CUSTOMER_ID", loginUserUtil.getCurrentCustomerId()); - columnAndValues.put("CREATED_BY", currentUserId); columnAndValues.put("UPDATED_BY", currentUserId); - columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", "")); + // 移除excel中存在,但是数据库表中不存在的无效列,方式sql语法错误 columnAndValues = removeNeedlessColumns(columnAndValues); - icResiUserDao.add(targetTableName, columnAndValues); - + // 更新主表的人员类型及更新时间 updateMainTableResiTypeFlag(Objects.requireNonNull(IcResiUserTableEnums.getObjectByTableName(targetTableName)), icResiId); + + // 验证附加信息是否存在 + List> subInfos = icResiUserDao.selectSubTableRecords(customerId, icResiId, targetTableName); + if (CollectionUtils.isNotEmpty(subInfos)) { + Map subInfo = subInfos.get(0); + // 附加信息存在,更新附加表内容 + icResiUserDao.upTable(targetTableName, subInfo.get("ID").toString(), columnAndValues); + } else { + // 新增附加表信息 + columnAndValues.put("CREATED_BY", currentUserId); + columnAndValues.put("ID", UUID.randomUUID().toString().replace("-", "")); + icResiUserDao.add(targetTableName, columnAndValues); + } + } catch (Exception e) { String errorMsg; if (e instanceof RenException) { @@ -474,7 +494,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res errorMsg = "未知系统错误"; log.error(ExceptionUtils.getErrorStackTrace(e)); } - + ErrorRow errorRow = new ErrorRow(); errorRow.setName(columnAndValues.get("NAME")); errorRow.setIdCard(columnAndValues.get("ID_CARD")); @@ -517,13 +537,13 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @param target 要将数据放到哪个对象中 */ private void convertColumnWrappers2Map4Persist(Map headerColumnWrapper, Map row, - String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, - LinkedHashMap target) { + String currUserAgencyId, Map checkBoxOptionColumnIdxAndLabel, + LinkedHashMap target) { boolean interupt = false; - + List errorColumnNames = new LinkedList<>(); - + for (Map.Entry columnWrapperEntry : headerColumnWrapper.entrySet()) { ColumnWrapper columnWrapper = columnWrapperEntry.getValue(); @@ -561,16 +581,16 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res String checkBoxColValue = getCheckBoxColValue(columnWrapper, row, checkBoxOptionColumnIdxAndLabel); columnWrapper.setColValue(checkBoxColValue); } - + // requiredColumns中的值为必填项 if (columnWrapper.getRequired() == 1 && StringUtils.isBlank(columnWrapper.colValue)) { interupt = true; errorColumnNames.add(columnWrapper.combinedLabel); } - + target.put(columnWrapper.columnName, columnWrapper.colValue); } - + if (interupt) { throw new RenException(String.join(",", errorColumnNames) + "的值未填写"); } @@ -654,7 +674,7 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res * @return */ private Map convertExcelHeaders2DBColumnWrappers(Map formItemMap, Map> combinedHeaders, - List> datas, Map abandonedHeaders) { + List> datas, Map abandonedHeaders) { // HashMap> tables = new HashMap<>(); Map columns = new LinkedHashMap<>(combinedHeaders.size()); @@ -896,21 +916,21 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res */ public void downLoadResults(HttpServletResponse response) throws IOException { //public static final ThreadLocal>> errorRows = new ThreadLocal<>(); - + String fileName = "导入失败条目清单.xls"; response.setHeader("content-Type", "application/vnd.ms-excel"); response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8")); - + LinkedList list = new LinkedList<>(); for (Map.Entry> entry : errorRows.get().entrySet()) { list.addAll(entry.getValue()); } - list.forEach(row -> row.setSheetName(IcResiUserTableEnums.getObjectByTableName(row.tableName).getTableComment())); - + list.forEach(row -> {System.out.println(row.getTableName());row.setSheetName(IcResiUserTableEnums.getObjectByTableName(row.tableName).getTableComment());}); + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("导入失败的条目列表","导入失败"), ErrorRow.class, list); - + workbook.write(response.getOutputStream()); } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java index ab211a7e29..59fe112b31 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java @@ -43,6 +43,7 @@ import com.epmet.dao.IcResiUserDao; import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.IcHouseDTO; +import com.epmet.dto.IcNeighborHoodDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.IcResiUserEntity; @@ -545,11 +546,32 @@ public class IcResiUserServiceImpl extends BaseServiceImpl pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.searchByName(formDTO.getName(), staffInfo.getAgencyId(), no)); List result = pageInfo.getList(); - // 查询小区,楼号,网格 - // TODO if (CollectionUtils.isEmpty(result)){ return new ArrayList<>(); } + // 查询小区,楼号,网格 + Result> gridResult = govOrgOpenFeignClient.getGridListByGridIds(result.stream().map(SearchByNameResultDTO::getGridId).collect(Collectors.toList())); + if (!gridResult.success()) { + throw new RenException(gridResult.getCode(),gridResult.getMsg()); + } + Map gridMap = gridResult.getData().stream().collect(Collectors.toMap(AllGridsByUserIdResultDTO::getGridId, AllGridsByUserIdResultDTO::getGridName)); + Result> neighborHoodResult = govOrgOpenFeignClient.getListByIds(result.stream().map(SearchByNameResultDTO::getNeighborHoodId).collect(Collectors.toList())); + if (!neighborHoodResult.success()) { + throw new RenException(neighborHoodResult.getCode(),neighborHoodResult.getMsg()); + } + Map neighborHoodMap = neighborHoodResult.getData().stream().collect(Collectors.toMap(IcNeighborHoodDTO::getId, IcNeighborHoodDTO::getNeighborHoodName)); + Result> buildResult = govOrgOpenFeignClient.buildingListByIds(result.stream().map(SearchByNameResultDTO::getBuildId).collect(Collectors.toList())); + if (!buildResult.success()) { + throw new RenException(buildResult.getCode(),buildResult.getMsg()); + } + Map buildMap = buildResult.getData().stream().collect(Collectors.toMap(BuildingResultDTO::getBuildingId, BuildingResultDTO::getBuildingName)); + + result.forEach(item -> { + item.setGridName(gridMap.get(item.getGridId())); + item.setNeighborHoodName(neighborHoodMap.get(item.getNeighborHoodId())); + item.setBuildNum(buildMap.get(item.getBuildId())); + }); + return result; }