diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java index ff956aa49f..d359016f02 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java @@ -68,6 +68,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; @@ -208,19 +209,22 @@ public class IcResiUserController { sheetMap.put(0, mapData); AtomicInteger n = new AtomicInteger(); for (FormItemResult item : resiFormItems.getItemList()) { + //如果 childGroup是空 或者是主表 则跳过 继续下次循环 + if (item.getChildGroup() == null || BASE_TABLE_NAME.equals(item.getChildGroup().getTableName())) { + continue; + } + String tableName = item.getChildGroup().getTableName(); + + Map itemMap1 = otherSheetItems.get(tableName); + Map> resiChildMap = icResiUserService.getDataForExport(itemMap1, resiMainList, tableName, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath); + //resiChildMap.forEach((key, value) -> value.putAll(resiMainList.get(key))); + + Map mapData2 = new HashMap<>(); + mapData2.put("list", resiChildMap.values()); + System.out.println("===resiChildMap===" + tableName + " " + JSON.toJSONString(resiChildMap.values())); + sheetMap.put(n.incrementAndGet(), mapData2); - if (item.getChildGroup() != null) { - if (!item.getChildGroup().getTableName().equals(BASE_TABLE_NAME)) { - Map itemMap1 = otherSheetItems.get(item.getChildGroup().getTableName()); - Map> resiChildMap = icResiUserService.getDataForExport(itemMap1,resiMainList, item.getChildGroup().getTableName(),pageFormDTO,staffInfoCacheResult.getAgencyId(),staffOrgPath); - //resiChildMap.forEach((key, value) -> value.putAll(resiMainList.get(key))); - Map mapData2 = new HashMap<>(); - mapData2.put("list", resiChildMap.values()); - System.out.println("===resiChildMap==="+item.getChildGroup().getTableName()+" "+JSON.toJSONString(resiChildMap.values())); - sheetMap.put(n.incrementAndGet(), mapData2); - } - } } Workbook workbook = ExcelExportUtil.exportExcel(sheetMap, params); @@ -229,8 +233,8 @@ public class IcResiUserController { } @RequestMapping(value = "/exportExcel") - public void exportExcelByEasyExcel(@RequestHeader String customerId,@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception { - //tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02"); + public void exportExcelByEasyExcel(@RequestHeader String customerId,/*@LoginUser*/ TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception { + tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02"); CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId()); String staffOrgPath = null; if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) { @@ -246,37 +250,61 @@ public class IcResiUserController { /*List resiFormAllItems = getResiFormAllItems(pageFormDTO.getCustomerId()); resiFormAllItems.stream().collect(Collectors.groupingBy(e ->e.get));*/ - - Map> resiMainList = icResiUserService.getDataForExport(otherSheetItems.get(BASE_TABLE_NAME),new HashMap<>(), BASE_TABLE_NAME, pageFormDTO,staffInfoCacheResult.getAgencyId(),staffOrgPath); - - //========================================= + //读取模版 String templatePath = "excel/ic_resi_info_cid_for_easy_excel.xlsx"; InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(templatePath); - String fileName = "居民基本信息.xlsx"; ExcelWriter excelWriter = EasyExcel.write(getOutputStream(fileName,response)).withTemplate(inputStream).build(); FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build(); WriteSheet fistSheet = EasyExcel.writerSheet(NumConstant.ZERO).build(); - System.out.println("===resiMainList==="+" "+JSON.toJSONString(resiMainList.values())); - excelWriter.fill(new FillWrapper("t1", resiMainList.values()),fillConfig, fistSheet); - //======================================= - AtomicInteger n = new AtomicInteger(); - for (FormItemResult item : resiFormItems.getItemList()) { + pageFormDTO.setPageNo(NumConstant.ONE); + pageFormDTO.setPageSize(NumConstant.ONE_THOUSAND); + AtomicBoolean isGoon = new AtomicBoolean(true); + Map childTableIsGoonMap = new HashMap<>(); + Map childTableWriteSheetMap = new HashMap<>(); + do { + Map> resiMainList = icResiUserService.getDataForExport(otherSheetItems.get(BASE_TABLE_NAME),new HashMap<>(), BASE_TABLE_NAME, pageFormDTO,staffInfoCacheResult.getAgencyId(),staffOrgPath); + //如果 返回的条数小于每页显示的数 则退出查询 + if (resiMainList.keySet().size() itemMap1 = otherSheetItems.get(item.getChildGroup().getTableName()); - Map> resiChildMap = icResiUserService.getDataForExport(itemMap1,resiMainList,item.getChildGroup().getTableName() , pageFormDTO, staffInfoCacheResult.getAgencyId(),staffOrgPath); - //resiChildMap.forEach((key, value) -> value.putAll(resiMainList.get(key))); + System.out.println("===resiMainList==="+" "+JSON.toJSONString(resiMainList.values())); + //写入数据 + excelWriter.fill(new FillWrapper("t1", resiMainList.values()),fillConfig, fistSheet); - int sheetNo = n.incrementAndGet(); - WriteSheet writeSheet = EasyExcel.writerSheet(sheetNo).build(); - System.out.println("===resiChildMap==="+item.getChildGroup().getTableName()+" "+JSON.toJSONString(resiChildMap.values())); - excelWriter.fill(new FillWrapper("t"+(sheetNo+1), resiChildMap.values()), writeSheet); + //子表数据写入 + AtomicInteger n = new AtomicInteger(); + for (FormItemResult item : resiFormItems.getItemList()) { + //如果 childGroup是空 或者是主表 则跳过 继续下次循环 + if (item.getChildGroup() == null || BASE_TABLE_NAME.equals(item.getChildGroup().getTableName())) { + continue; + } + String tableName = item.getChildGroup().getTableName(); + AtomicBoolean childIsGoon = childTableIsGoonMap.getOrDefault(tableName, new AtomicBoolean(true)); + if (!childIsGoon.get()){ + continue; } + Map itemMap1 = otherSheetItems.get(tableName); + Map> resiChildMap = icResiUserService.getDataForExport(itemMap1, resiMainList, tableName, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath); + //如果 返回的条数小于每页显示的数 则退出查询 + if (resiChildMap.keySet().size() { * @param itemList * @param resiMainList * @param baseTableName - * @return + * @return Map> 用户Id:用户信息所有的字段名及值 */ Map> getDataForExport(Map itemList, Map> resiMainList, String baseTableName, IcResiUserPageFormDTO pageFormDTO, String currentStaffAgencyId, String staffOrgPath); 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 5499d7086a..2afbf99b64 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 @@ -50,6 +50,7 @@ import com.epmet.feign.EpmetMessageOpenFeignClient; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.feign.OperCustomizeOpenFeignClient; import com.epmet.service.IcResiUserService; +import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; @@ -621,7 +622,10 @@ public class IcResiUserServiceImpl extends BaseServiceImpl> getDataForExport(Map formItemMap, Map> resiMainList, String baseTableName,IcResiUserPageFormDTO pageFormDTO, String currentStaffAgencyId, String staffOrgPath) { - List> mapList = this.dynamicQuery(pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), baseTableName, pageFormDTO.getConditions(),currentStaffAgencyId,staffOrgPath); + Page> mapListPage = PageHelper.startPage(pageFormDTO.getPageNo(), pageFormDTO.getPageSize(), pageFormDTO.getPageFlag()).doSelectPage(() -> { + this.dynamicQuery(pageFormDTO.getCustomerId(), pageFormDTO.getFormCode(), baseTableName, pageFormDTO.getConditions(), currentStaffAgencyId, staffOrgPath); + }); + List> mapList = mapListPage.getResult(); Map> result = new LinkedHashMap<>(); mapList.stream().filter(Objects::nonNull).forEach(map -> { //遍历所有字段 格式化时间字段 diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls index 321666f7a4..e1493291eb 100644 Binary files a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls and b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid.xls differ diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid_for_easy_excel.xls b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid_for_easy_excel.xls index c9a0d77e2e..9afbfdd669 100644 Binary files a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid_for_easy_excel.xls and b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid_for_easy_excel.xls differ diff --git a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid_for_easy_excel.xlsx b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid_for_easy_excel.xlsx index 52df58c6c5..c427b87ad5 100644 Binary files a/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid_for_easy_excel.xlsx and b/epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid_for_easy_excel.xlsx differ