From 34b9e4f9b31c0506288e2b78228103a45377c0ad Mon Sep 17 00:00:00 2001 From: jianjun Date: Mon, 15 Nov 2021 12:09:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=B1=85=E6=B0=91=20?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E5=95=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/IcResiUserController.java | 94 ++++++++++++------ .../com/epmet/service/IcResiUserService.java | 2 +- .../service/impl/IcResiUserServiceImpl.java | 6 +- .../main/resources/excel/ic_resi_info_cid.xls | Bin 42496 -> 43008 bytes .../excel/ic_resi_info_cid_for_easy_excel.xls | Bin 45056 -> 45056 bytes .../ic_resi_info_cid_for_easy_excel.xlsx | Bin 25172 -> 25132 bytes 6 files changed, 67 insertions(+), 35 deletions(-) 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 321666f7a4517921ac51f831b129f0a674eb9570..e1493291eb581a3e3cd4a3540972db7ecbc2312c 100644 GIT binary patch delta 2691 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 ZF8@WQQ-=}MMpBb3+h|PQSo?0a`Y*SyXY>F7 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 c9a0d77e2e98d0729e9e0b5e4b79deb37a2b3074..9afbfdd669087f317eb2e9ab6d57f94ecab8cfd4 100644 GIT binary patch delta 1232 zcmZ{jTSyd97{|YJX2#uhcP2--b$8s_6{MouW=3YF4kY%VDN9y%)q*5?s3;LdyhS&o zsQfgE6%8_ih=@)Xw1=Xo2Ya#0Q&3q@(L+&CbdjhtXPqq(84mOD`~T1XJLemwZIrf+ z(yLb_d?gyvVoT+0}spdahDv#cd{4fDnVSw z-@|f{ZBL*@Tx8<2lEuD(LQIh_>YLNkMYIE|&IK|)w-meLgyPjLXRl33M|d4wv*tWK=C<1yvBwUKa@ zSCnl&&h_q7b{8jGbMl15PfUc#Ix!*aQ|C%TKX!A|Fk!#D^Ju^|Zg2sw$XTA5<$4Rd zK*h|acKm$2hklIx%gl)>l9mdR$V>%ZNvx!Ah~VD-aOXL{Jn|$o#)9W`IYlnKyg&Mc XnB3Vm$A|=2!NBb#lE;2tawvZR2~#~M delta 1396 zcmZ`&ZAep57=F*$U3YHY+g59C*O@CSAwQHE2!hCh{)HiZBV^~^yStT}7Y_H_=Xu`edEaxmZKJqt z6yLmVAOoC}TsPRsTZ3EOi|qS{!AVwg4w7edkdK_3+~e}deD>a8bdo=uogCpLQpuKs zeedJ!bh}YDBA)b_y+yMD;QOQ%pvPwGwe(tm^Lj?X4!n-v0gyei2RMg@(+M+=!Wl_) z?lfiDDsD^CFP=u9sp58BKLR^tPoWdwiHgtC@GwBUuY8pd^@5&;hR4~Dvw>T#;%u_` zd>Wpn;&XI-1lV+PJiwvj-(qvef_WWRb1lk&NUD*ESOhOSOuyhQVlGS!A8jVKIZ_a{SQ_IyS32 z4}Bs{rSrlU_OVpp(e_|<<%f#>JGO;(2lsRx1vlI}s4!;quA={3>8`=R|GWgQW`$2f zMKw|&nGLpSESx?Z>I)7A{`Hoi_L#=LCr)_|3XuXi6Q@N;xh$bl(jb>(XEvqsPfLyn zs09wf5-5N&*a{nA9fTkNYhW|1hgPt~XmX=!0Uh781iNDezElO&U$F)2mc^+Q3Cm*D z@^!E=Zn-p70j;Ynj4PIN8t(B;) zMe1{~F}Mlf5_uHzA|D+KJ+R{a2k4j3Q$(^l+_bZC94o&Adyux$$%@V%A|1Mb-!zdg zpDSgQ!xS$%x80BMyrZg!W_1XPKuCm5(iNS#2roRY zB+>frS4k-=PcZ)OX+6b6eWy5Ir(goSfVG=%88vnAN23=|(pI1d;WqnrmRNx8Omxw}Ac|aca@Nha^Qrryjk7+J1`30(k*qjB TABvjks_4TRsD}Q&#vA_v#5`3m 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 52df58c6c5b780c3281f9cf552b3cfd9169f2800..c427b87ad521578abe21e75d3462592d4dc793b6 100644 GIT binary patch delta 15110 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 Cu%7z>