|
@ -64,11 +64,7 @@ import java.net.URLEncoder; |
|
|
import java.nio.file.Files; |
|
|
import java.nio.file.Files; |
|
|
import java.nio.file.Path; |
|
|
import java.nio.file.Path; |
|
|
import java.nio.file.Paths; |
|
|
import java.nio.file.Paths; |
|
|
import java.util.HashMap; |
|
|
import java.util.*; |
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
import java.util.UUID; |
|
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean; |
|
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger; |
|
|
import java.util.concurrent.atomic.AtomicInteger; |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -175,6 +171,7 @@ public class IcResiUserController { |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* desc :备用 easypoi |
|
|
* desc :备用 easypoi |
|
|
|
|
|
* |
|
|
* @param customerId |
|
|
* @param customerId |
|
|
* @param pageFormDTO |
|
|
* @param pageFormDTO |
|
|
* @param response |
|
|
* @param response |
|
@ -196,7 +193,7 @@ public class IcResiUserController { |
|
|
|
|
|
|
|
|
Map<String, Map<String, FormItemResult>> otherSheetItems = buildItemMap(resiFormItems); |
|
|
Map<String, Map<String, FormItemResult>> otherSheetItems = buildItemMap(resiFormItems); |
|
|
|
|
|
|
|
|
Map<String, Map<String, Object>> resiMainList = icResiUserService.getDataForExport(otherSheetItems.get(BASE_TABLE_NAME),new HashMap<>(),BASE_TABLE_NAME, pageFormDTO,staffInfoCacheResult.getAgencyId(),staffOrgPath); |
|
|
Map<String, Map<String, Object>> resiMainList = icResiUserService.getDataForExport(otherSheetItems.get(BASE_TABLE_NAME), BASE_TABLE_NAME, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath); |
|
|
//resiMainList = (List<Map<String, Object>>)JSON.parse("[{\"IS_BDHJ\":\"1\",\"IS_SPECIAL\":\"1\",\"IS_XFRY\":\"0\",\"REMARKS\":\"beizhu\",\"IS_PARTY\":\"1\",\"icResiUserId\":\"yzmtest2\",\"HOME_ID\":\"中海国际社区一里城1号楼1单元101\",\"HOUSE_TYPE\":\"平房\",\"UNIT_NAME\":\"1单元\",\"GRID_ID\":\"市北区-市北区第三网格3\",\"IS_DB\":\"0\",\"GENDER\":\"男\",\"BIRTHDAY\":\"2021-10-04\",\"IS_VETERANS\":\"0\",\"IS_MB\":\"0\",\"IS_UNEMPLOYED\":\"0\",\"DEMAND_NAME\":null,\"IS_KC\":\"0\",\"IS_ENSURE_HOUSE\":\"0\",\"IS_SD\":\"0\",\"NAME\":\"尹作梅\",\"RDSJ\":null,\"IS_VOLUNTEER\":\"1\",\"GRID_ID_VALUE\":\"e74829ffc43d5470eba6b5e060c11e63\",\"IS_SZ\":\"0\",\"IS_CJ\":\"0\",\"HOME_ID_VALUE\":\"200\",\"DEMAND_CATEGORY_IDS\":null,\"VILLAGE_NAME\":\"中海国际社区一里城\",\"IS_DBH\":\"0\",\"IS_SN\":\"0\",\"BUILD_NAME\":\"1号楼\",\"IS_YLFN\":\"0\",\"IS_UNITED_FRONT\":\"0\",\"ID_CARD\":\"371325199310260529\",\"MOBILE\":\"15764229697\",\"IS_OLD_PEOPLE\":\"0\",\"DOOR_NAME\":\"101\"},{\"IS_SPECIAL\":\"1\",\"IS_XFRY\":\"0\",\"REMARKS\":\"beizhu\",\"IS_PARTY\":\"1\",\"icResiUserId\":\"yzmtest\",\"HOME_ID\":\"中海国际社区一里城1号楼1单元101\",\"HOUSE_TYPE\":\"平房\",\"UNIT_NAME\":\"1单元\",\"GRID_ID\":\"市北区-市北区第三网格3\",\"IS_DB\":\"0\",\"GENDER\":\"男\",\"BIRTHDAY\":\"2021-10-04\",\"IS_VETERANS\":\"0\",\"IS_MB\":\"0\",\"IS_UNEMPLOYED\":\"0\",\"DEMAND_NAME\":\"心理咨询\",\"IS_KC\":\"0\",\"IS_ENSURE_HOUSE\":\"0\",\"IS_SD\":\"0\",\"NAME\":\"尹作梅\",\"RDSJ\":\"2021-10-28 00:00:00\",\"IS_VOLUNTEER\":\"1\",\"GRID_ID_VALUE\":\"e74829ffc43d5470eba6b5e060c11e63\",\"IS_SZ\":\"0\",\"IS_CJ\":\"0\",\"HOME_ID_VALUE\":\"200\",\"DEMAND_CATEGORY_IDS\":\"10180002\",\"VILLAGE_NAME\":\"中海国际社区一里城\",\"IS_DBH\":\"0\",\"IS_SN\":\"0\",\"BUILD_NAME\":\"1号楼\",\"IS_YLFN\":\"0\",\"IS_UNITED_FRONT\":\"0\",\"ID_CARD\":\"371325199310260529\",\"MOBILE\":\"15764229697\",\"IS_OLD_PEOPLE\":\"0\",\"DOOR_NAME\":\"101\"}]");
|
|
|
//resiMainList = (List<Map<String, Object>>)JSON.parse("[{\"IS_BDHJ\":\"1\",\"IS_SPECIAL\":\"1\",\"IS_XFRY\":\"0\",\"REMARKS\":\"beizhu\",\"IS_PARTY\":\"1\",\"icResiUserId\":\"yzmtest2\",\"HOME_ID\":\"中海国际社区一里城1号楼1单元101\",\"HOUSE_TYPE\":\"平房\",\"UNIT_NAME\":\"1单元\",\"GRID_ID\":\"市北区-市北区第三网格3\",\"IS_DB\":\"0\",\"GENDER\":\"男\",\"BIRTHDAY\":\"2021-10-04\",\"IS_VETERANS\":\"0\",\"IS_MB\":\"0\",\"IS_UNEMPLOYED\":\"0\",\"DEMAND_NAME\":null,\"IS_KC\":\"0\",\"IS_ENSURE_HOUSE\":\"0\",\"IS_SD\":\"0\",\"NAME\":\"尹作梅\",\"RDSJ\":null,\"IS_VOLUNTEER\":\"1\",\"GRID_ID_VALUE\":\"e74829ffc43d5470eba6b5e060c11e63\",\"IS_SZ\":\"0\",\"IS_CJ\":\"0\",\"HOME_ID_VALUE\":\"200\",\"DEMAND_CATEGORY_IDS\":null,\"VILLAGE_NAME\":\"中海国际社区一里城\",\"IS_DBH\":\"0\",\"IS_SN\":\"0\",\"BUILD_NAME\":\"1号楼\",\"IS_YLFN\":\"0\",\"IS_UNITED_FRONT\":\"0\",\"ID_CARD\":\"371325199310260529\",\"MOBILE\":\"15764229697\",\"IS_OLD_PEOPLE\":\"0\",\"DOOR_NAME\":\"101\"},{\"IS_SPECIAL\":\"1\",\"IS_XFRY\":\"0\",\"REMARKS\":\"beizhu\",\"IS_PARTY\":\"1\",\"icResiUserId\":\"yzmtest\",\"HOME_ID\":\"中海国际社区一里城1号楼1单元101\",\"HOUSE_TYPE\":\"平房\",\"UNIT_NAME\":\"1单元\",\"GRID_ID\":\"市北区-市北区第三网格3\",\"IS_DB\":\"0\",\"GENDER\":\"男\",\"BIRTHDAY\":\"2021-10-04\",\"IS_VETERANS\":\"0\",\"IS_MB\":\"0\",\"IS_UNEMPLOYED\":\"0\",\"DEMAND_NAME\":\"心理咨询\",\"IS_KC\":\"0\",\"IS_ENSURE_HOUSE\":\"0\",\"IS_SD\":\"0\",\"NAME\":\"尹作梅\",\"RDSJ\":\"2021-10-28 00:00:00\",\"IS_VOLUNTEER\":\"1\",\"GRID_ID_VALUE\":\"e74829ffc43d5470eba6b5e060c11e63\",\"IS_SZ\":\"0\",\"IS_CJ\":\"0\",\"HOME_ID_VALUE\":\"200\",\"DEMAND_CATEGORY_IDS\":\"10180002\",\"VILLAGE_NAME\":\"中海国际社区一里城\",\"IS_DBH\":\"0\",\"IS_SN\":\"0\",\"BUILD_NAME\":\"1号楼\",\"IS_YLFN\":\"0\",\"IS_UNITED_FRONT\":\"0\",\"ID_CARD\":\"371325199310260529\",\"MOBILE\":\"15764229697\",\"IS_OLD_PEOPLE\":\"0\",\"DOOR_NAME\":\"101\"}]");
|
|
|
log.info("resiMainList:{}", JSON.toJSONString(resiMainList)); |
|
|
log.info("resiMainList:{}", JSON.toJSONString(resiMainList)); |
|
|
String templatePath = "excel/ic_resi_info_cid.xls"; |
|
|
String templatePath = "excel/ic_resi_info_cid.xls"; |
|
@ -216,7 +213,7 @@ public class IcResiUserController { |
|
|
String tableName = item.getChildGroup().getTableName(); |
|
|
String tableName = item.getChildGroup().getTableName(); |
|
|
|
|
|
|
|
|
Map<String, FormItemResult> itemMap1 = otherSheetItems.get(tableName); |
|
|
Map<String, FormItemResult> itemMap1 = otherSheetItems.get(tableName); |
|
|
Map<String, Map<String, Object>> resiChildMap = icResiUserService.getDataForExport(itemMap1, resiMainList, tableName, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath); |
|
|
Map<String, Map<String, Object>> resiChildMap = icResiUserService.getDataForExport(itemMap1, tableName, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath); |
|
|
//resiChildMap.forEach((key, value) -> value.putAll(resiMainList.get(key)));
|
|
|
//resiChildMap.forEach((key, value) -> value.putAll(resiMainList.get(key)));
|
|
|
|
|
|
|
|
|
Map<String, Object> mapData2 = new HashMap<>(); |
|
|
Map<String, Object> mapData2 = new HashMap<>(); |
|
@ -233,8 +230,8 @@ public class IcResiUserController { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@RequestMapping(value = "/exportExcel") |
|
|
@RequestMapping(value = "/exportExcel") |
|
|
public void exportExcelByEasyExcel(@RequestHeader String customerId,@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception { |
|
|
public void exportExcelByEasyExcel(@RequestHeader String customerId,/*@LoginUser*/ TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception { |
|
|
//tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02");
|
|
|
tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02"); |
|
|
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId()); |
|
|
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId()); |
|
|
String staffOrgPath = null; |
|
|
String staffOrgPath = null; |
|
|
if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) { |
|
|
if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) { |
|
@ -258,56 +255,67 @@ public class IcResiUserController { |
|
|
FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build(); |
|
|
FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build(); |
|
|
WriteSheet fistSheet = EasyExcel.writerSheet(NumConstant.ZERO).build(); |
|
|
WriteSheet fistSheet = EasyExcel.writerSheet(NumConstant.ZERO).build(); |
|
|
|
|
|
|
|
|
|
|
|
pageFormDTO.setPageSize(4); |
|
|
pageFormDTO.setPageNo(NumConstant.ONE); |
|
|
pageFormDTO.setPageNo(NumConstant.ONE); |
|
|
pageFormDTO.setPageSize(NumConstant.ONE_THOUSAND); |
|
|
//子表是否停止查询
|
|
|
AtomicBoolean isGoon = new AtomicBoolean(true); |
|
|
Set<String> stopSearchSet = new HashSet<>(); |
|
|
Map<String,AtomicBoolean> childTableIsGoonMap = new HashMap<>(); |
|
|
|
|
|
Map<String, WriteSheet> childTableWriteSheetMap = new HashMap<>(); |
|
|
Map<String, WriteSheet> childTableWriteSheetMap = new HashMap<>(); |
|
|
|
|
|
Map<String, Map<String, Object>> resiMainTableMap = null; |
|
|
do { |
|
|
do { |
|
|
Map<String, Map<String, Object>> resiMainList = icResiUserService.getDataForExport(otherSheetItems.get(BASE_TABLE_NAME),new HashMap<>(), BASE_TABLE_NAME, pageFormDTO,staffInfoCacheResult.getAgencyId(),staffOrgPath); |
|
|
resiMainTableMap = icResiUserService.getDataForExport(otherSheetItems.get(BASE_TABLE_NAME), BASE_TABLE_NAME, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath); |
|
|
//如果 返回的条数小于每页显示的数 则退出查询
|
|
|
//如果 返回的条数小于每页显示的数 则退出查询
|
|
|
if (resiMainList.keySet().size()<pageFormDTO.getPageSize()){ |
|
|
if (resiMainTableMap.keySet().size() < pageFormDTO.getPageSize()) { |
|
|
isGoon.set(false); |
|
|
stopSearchSet.add(BASE_TABLE_NAME); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
System.out.println("===resiMainList==="+" "+JSON.toJSONString(resiMainList.values())); |
|
|
System.out.println("===resiMainTableMap===" + " " + JSON.toJSONString(resiMainTableMap.values())); |
|
|
//写入数据
|
|
|
//写入数据
|
|
|
excelWriter.fill(new FillWrapper("t1", resiMainList.values()),fillConfig, fistSheet); |
|
|
excelWriter.fill(new FillWrapper("t1", resiMainTableMap.values()), fillConfig, fistSheet); |
|
|
|
|
|
pageFormDTO.setPageNo(pageFormDTO.getPageNo() + 1); |
|
|
|
|
|
//重置数据
|
|
|
|
|
|
resiMainTableMap.clear(); |
|
|
|
|
|
} while (!stopSearchSet.contains(BASE_TABLE_NAME)); |
|
|
|
|
|
|
|
|
//子表数据写入
|
|
|
//子表数据写入
|
|
|
AtomicInteger n = new AtomicInteger(); |
|
|
AtomicInteger n = new AtomicInteger(); |
|
|
for (FormItemResult item : resiFormItems.getItemList()) { |
|
|
for (FormItemResult item : resiFormItems.getItemList()) { |
|
|
|
|
|
|
|
|
//如果 childGroup是空 或者是主表 则跳过 继续下次循环
|
|
|
//如果 childGroup是空 或者是主表 则跳过 继续下次循环
|
|
|
if (item.getChildGroup() == null || BASE_TABLE_NAME.equals(item.getChildGroup().getTableName())) { |
|
|
if (item.getChildGroup() == null || BASE_TABLE_NAME.equals(item.getChildGroup().getTableName())) { |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
String tableName = item.getChildGroup().getTableName(); |
|
|
String tableName = item.getChildGroup().getTableName(); |
|
|
AtomicBoolean childIsGoon = childTableIsGoonMap.getOrDefault(tableName, new AtomicBoolean(true)); |
|
|
pageFormDTO.setPageNo(NumConstant.ONE); |
|
|
if (!childIsGoon.get()){ |
|
|
//循环一次 写入每个sheet
|
|
|
|
|
|
do { |
|
|
|
|
|
//如果包含则说明子表的数据 已经查询完毕 无需再继续查询了
|
|
|
|
|
|
boolean contains = stopSearchSet.contains(tableName); |
|
|
|
|
|
if (contains) { |
|
|
continue; |
|
|
continue; |
|
|
} |
|
|
} |
|
|
Map<String, FormItemResult> itemMap1 = otherSheetItems.get(tableName); |
|
|
Map<String, FormItemResult> itemMap1 = otherSheetItems.get(tableName); |
|
|
Map<String, Map<String, Object>> resiChildMap = icResiUserService.getDataForExport(itemMap1, resiMainList, tableName, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath); |
|
|
Map<String, Map<String, Object>> resiChildMap = icResiUserService.getDataForExport(itemMap1, tableName, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath); |
|
|
//如果 返回的条数小于每页显示的数 则退出查询
|
|
|
//如果 返回的条数小于每页显示的数 则退出查询
|
|
|
if (resiChildMap.keySet().size() < pageFormDTO.getPageSize()) { |
|
|
if (resiChildMap.keySet().size() < pageFormDTO.getPageSize()) { |
|
|
childIsGoon.set(false); |
|
|
stopSearchSet.add(tableName); |
|
|
} |
|
|
} |
|
|
System.out.println("===resiChildMap===" + tableName + " " + JSON.toJSONString(resiChildMap.values())); |
|
|
System.out.println("===resiChildMap===" + tableName + " " + JSON.toJSONString(resiChildMap.values())); |
|
|
|
|
|
|
|
|
//构建新的sheet
|
|
|
//构建新的sheet
|
|
|
WriteSheet childWriteSheet = childTableWriteSheetMap.getOrDefault(tableName, EasyExcel.writerSheet(n.incrementAndGet()).build()); |
|
|
WriteSheet childWriteSheet = childTableWriteSheetMap.get(tableName); |
|
|
//int sheetNo = n.incrementAndGet();
|
|
|
if (childWriteSheet == null) { |
|
|
//WriteSheet writeSheet = EasyExcel.writerSheet(sheetNo).build();
|
|
|
childWriteSheet = EasyExcel.writerSheet(n.incrementAndGet()).build(); |
|
|
|
|
|
} |
|
|
|
|
|
childTableWriteSheetMap.put(tableName, childWriteSheet); |
|
|
//写入数据
|
|
|
//写入数据
|
|
|
excelWriter.fill(new FillWrapper("t" + (n.get() + 1), resiChildMap.values()), childWriteSheet); |
|
|
excelWriter.fill(new FillWrapper("t" + (n.get() + NumConstant.ONE), resiChildMap.values()), childWriteSheet); |
|
|
|
|
|
pageFormDTO.setPageNo(pageFormDTO.getPageNo() + NumConstant.ONE); |
|
|
|
|
|
//重置数据
|
|
|
|
|
|
resiChildMap.clear(); |
|
|
|
|
|
} while (!stopSearchSet.contains(tableName)); |
|
|
} |
|
|
} |
|
|
pageFormDTO.setPageNo(pageFormDTO.getPageNo()+1); |
|
|
|
|
|
}while (isGoon.get()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
excelWriter.finish(); |
|
|
excelWriter.finish(); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@NotNull |
|
|
@NotNull |
|
|