From d2ae84dc811713579c7cb2dfbaddd16ccd5a7c36 Mon Sep 17 00:00:00 2001 From: jianjun Date: Wed, 11 May 2022 07:41:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=B8=80=E6=88=B7=E4=B8=80?= =?UTF-8?q?=E6=A1=A3=20=E6=9A=82=E5=AD=983?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/ExcelFillCellMergeStrategy.java | 13 ++++++++++++- .../dto/result/HouseMemberResultDTO.java | 3 +++ .../com/epmet/controller/HouseController.java | 13 +++++++------ .../java/com/epmet/service/HouseService.java | 2 +- .../epmet/service/impl/HouseServiceImpl.java | 19 ++++++++++++------- 5 files changed, 35 insertions(+), 15 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java index 4d02d241c7..e8408478ea 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java @@ -28,6 +28,10 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { * 从下标n行开始合并 */ private int mergeRowIndex; + /** + * 默认隐藏第一列 用于合并数据 + */ + private boolean hiddenFirst = true; public ExcelFillCellMergeStrategy() { } @@ -36,6 +40,11 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { this.mergeRowIndex = mergeRowIndex; this.mergeColumnIndexArr = mergeColumnIndexArr; } + public ExcelFillCellMergeStrategy(int mergeRowIndex, int[] mergeColumnIndexArr,boolean hiddenFirst) { + this.mergeRowIndex = mergeRowIndex; + this.mergeColumnIndexArr = mergeColumnIndexArr; + this.hiddenFirst = hiddenFirst; + } @Override public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { @@ -45,7 +54,9 @@ public class ExcelFillCellMergeStrategy implements CellWriteHandler { @Override public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { // 隐藏id列 - writeSheetHolder.getSheet().setColumnHidden(0, true); + if (hiddenFirst ){ + writeSheetHolder.getSheet().setColumnHidden(0, true); + } } @Override diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseMemberResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseMemberResultDTO.java index 615b887d03..cdf2e7855f 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseMemberResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseMemberResultDTO.java @@ -17,6 +17,9 @@ import java.io.Serializable; public class HouseMemberResultDTO implements Serializable { private static final long serialVersionUID = 1L; + @ExcelProperty(value = {"序号","序号"},index = 0) + private Integer num; + @ExcelProperty(value = {"房屋信息","所属组织"},index = 1) private String agencyName; @ExcelProperty(value = {"房屋信息","所属网格"},index = 2) diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java index 438cc31abd..233aec7c13 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java @@ -346,7 +346,7 @@ public class HouseController implements ResultDataResolver { excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("一户一档信息.xlsx", response), HouseMemberResultDTO.class) .registerWriteHandler(new FreezeAndFilter()) .build(); - int[] mergeRowArr = new int[]{0,1,2,3,4,5,6,7,8,9,10}; + int[] mergeRowArr = new int[]{0,1,2,3,4,5,6,7,8,9,10,11,12}; // 头的策略 WriteCellStyle headWriteCellStyle = new WriteCellStyle(); @@ -356,19 +356,20 @@ public class HouseController implements ResultDataResolver { contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); FreezeAndFilter writeHandler = new FreezeAndFilter(); - ExcelFillCellMergeStrategy mergeStrategy = new ExcelFillCellMergeStrategy(2,mergeRowArr); - WriteSheet writeSheet = EasyExcel.writerSheet().registerWriteHandler(mergeStrategy) + writeHandler.rowSplit = 2; + ExcelFillCellMergeStrategy mergeStrategy = new ExcelFillCellMergeStrategy(2,mergeRowArr,false); + WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").registerWriteHandler(mergeStrategy) .registerWriteHandler(horizontalCellStyleStrategy) .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) .registerWriteHandler(writeHandler) .build(); - List dataList = null; + PageData dataList = null; do { dataList = houseService.getHouseUser(tokenDto,formDTO); System.out.println("====:"+JSON.toJSONString(dataList)); - excelWriter.write(dataList,writeSheet); + excelWriter.write(dataList.getList(), writeSheet); formDTO.setPageSize(formDTO.getPageSize()+1); - }while (dataList != null && dataList.size() == formDTO.getPageSize()); + }while (dataList != null && dataList.getTotal() == formDTO.getPageSize()); //获取导出配置 } catch (EpmetException e) { diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java index 506ac2e30b..48d88c38f3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java @@ -102,5 +102,5 @@ public interface HouseService { * @param formDTO * @return */ - List getHouseUser(TokenDto tokenDto, IcHouseListFormDTO formDTO); + PageData getHouseUser(TokenDto tokenDto, IcHouseListFormDTO formDTO); } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java index e790fc07a9..25862ead97 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java @@ -190,7 +190,8 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { item.setPurpose(HousePurposeEnums.getTypeValue(item.getPurposeKey())); }); - return new PageData<>(records,pageInfo.getTotal()); + + return new PageData<>(records == null? new ArrayList<>():records,pageInfo.getTotal()); } public String getPids(String agencyId){ String pids = null; @@ -473,9 +474,9 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { icBuildingService.update(icBuildingDTO); } } - //Cache + Cache exportNumCacheMap = CacheBuilder.newBuilder().build(); @Override - public List getHouseUser(TokenDto tokenDto, IcHouseListFormDTO formDTO) { + public PageData getHouseUser(TokenDto tokenDto, IcHouseListFormDTO formDTO) { RentTenantDataFormDTO resiParam = new RentTenantDataFormDTO(); resiParam.setCustomerId(tokenDto.getCustomerId()); resiParam.setAgencyId(formDTO.getAgencyId()); @@ -494,11 +495,13 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { searchLevel = 2; } - PageData houseList = this.getHouseList(formDTO); - List resultDTOS = ConvertUtils.sourceToTarget(houseList.getList(), HouseMemberResultDTO.class); + PageData houseData = this.getHouseList(formDTO); + List resultDTOS = ConvertUtils.sourceToTarget(houseData.getList(), HouseMemberResultDTO.class); - List result = new ArrayList<>(); + List resultList = new ArrayList<>(); + PageData result = new PageData<>(resultList,houseData.getList().size()); int finalSearchLevel = searchLevel; + AtomicInteger num = new AtomicInteger((formDTO.getPageNo()-1) * formDTO.getPageSize()); Cache> memberMap = CacheBuilder.newBuilder().expireAfterAccess(1, TimeUnit.SECONDS).build(); resultDTOS.parallelStream().forEach(o ->{ resiParam.setNeighborHoodId(o.getNeighborHoodId()); @@ -513,8 +516,10 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { if (members == null){ return; } + int n = num.incrementAndGet(); members.forEach(m->{ HouseMemberResultDTO resultDTO = ConvertUtils.sourceToTarget(m, HouseMemberResultDTO.class); + resultDTO.setNum(n); resultDTO.setAgencyName(o.getAgencyName()); resultDTO.setGridName(o.getGridName()); resultDTO.setNeighborHoodName(o.getNeighborHoodName()); @@ -527,7 +532,7 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { resultDTO.setOwnerName(o.getOwnerName()); resultDTO.setOwnerPhone(o.getOwnerPhone()); resultDTO.setOwnerIdCard(o.getOwnerIdCard()); - result.add(resultDTO); + resultList.add(resultDTO); }); }); return result;