From b016bbe6d6ab530d7f2d1e198ee335851a011fb2 Mon Sep 17 00:00:00 2001 From: jianjun Date: Thu, 18 Nov 2021 13:11:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/constant/StrConstant.java | 2 ++ .../controller/IcResiUserController.java | 31 ++++++++++++------- .../service/impl/IcResiUserServiceImpl.java | 2 ++ 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java index fd4a97d11e..2e1d7d5bea 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/StrConstant.java @@ -74,6 +74,8 @@ public interface StrConstant { */ String STAR="*"; + String QUESTION_MARK="?"; + /** * 空字符串 */ 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 0c10ca50ed..08187f54b4 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 @@ -29,6 +29,7 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.ExceptionUtils; @@ -357,16 +358,14 @@ public class IcResiUserController { CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId()); String staffOrgPath = null; if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) { - staffOrgPath = staffInfoCacheResult.getAgencyPIds().concat(":").concat(staffInfoCacheResult.getAgencyId()); + staffOrgPath = staffInfoCacheResult.getAgencyPIds().concat(StrConstant.COLON).concat(staffInfoCacheResult.getAgencyId()); } else { staffOrgPath = staffInfoCacheResult.getAgencyId(); } pageFormDTO.setCustomerId(customerId); pageFormDTO.setPageFlag(false); - List resiFormAllItems = icResiUserService.listFormItems(customerId, IC_RESI_FORM_CODE); - Map> otherSheetItems = resiFormAllItems.stream() - .collect(Collectors.groupingBy(FormItemResult::getTableName, Collectors.toMap(FormItemResult::getColumnName, o -> o))); + //获取模版文件 File file = getExportTemplateFile(customerId); @@ -378,27 +377,35 @@ public class IcResiUserController { pageFormDTO.setPageNo(NumConstant.ONE); //子表是否停止查询 Set stopSearchSet = new HashSet<>(); - Map childTableWriteSheetMap = new HashMap<>(); + + //获取表单项 + List resiFormAllItems = icResiUserService.listFormItems(customerId, IC_RESI_FORM_CODE); + //每个表对应的 item ;key:表名,value:<字段名:item对象> + Map> tableItemMap = resiFormAllItems.stream() + .collect(Collectors.groupingBy(FormItemResult::getTableName, + Collectors.toMap(o->o.getColumnName().concat(NumConstant.ZERO == o.getColumnNum()? StrConstant.EPMETY_STR:o.getColumnNum().toString()), o -> o))); + Map childTableWriteSheetMap = new HashMap<>(); //表数据写入 //通过枚举获取相关表并按照sheetNo排序 - List resiTableList = Arrays.stream(IcResiUserTableEnum.values()).sorted(Comparator.comparing(IcResiUserTableEnum::getSheetNo)).collect(Collectors.toList()); + List resiTableList = Arrays.stream(IcResiUserTableEnum.values()) + .sorted(Comparator.comparing(IcResiUserTableEnum::getSheetNo)) + .collect(Collectors.toList()); for (IcResiUserTableEnum tableEnum : resiTableList) { String tableName = tableEnum.getTableName(); pageFormDTO.setPageNo(NumConstant.ONE); //循环一次 写入每个sheet do { - Map itemMap1 = otherSheetItems.get(tableName); - Map> resiChildMap = icResiUserService.getDataForExport(itemMap1, tableName, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath); + Map> resiChildMap = icResiUserService.getDataForExport(tableItemMap.get(tableName), tableName, pageFormDTO, staffInfoCacheResult.getAgencyId(), staffOrgPath); //如果 返回的条数小于每页显示的数 则退出查询 if (resiChildMap.keySet().size() < pageFormDTO.getPageSize()) { stopSearchSet.add(tableName); } - //构建新的sheet - WriteSheet childWriteSheet = childTableWriteSheetMap.getOrDefault(tableName,EasyExcel.writerSheet(tableEnum.getSheetNo()).build()); - childTableWriteSheetMap.put(tableName, childWriteSheet); + //如果没有 构建新的writeSheet + WriteSheet writeSheet = childTableWriteSheetMap.getOrDefault(tableName,EasyExcel.writerSheet(tableEnum.getSheetNo()).build()); + childTableWriteSheetMap.putIfAbsent(tableName, writeSheet); //写入数据 - excelWriter.fill(new FillWrapper("t" + (tableEnum.getSheetNo() + NumConstant.ONE), resiChildMap.values()), childWriteSheet); + excelWriter.fill(new FillWrapper("t" + (tableEnum.getSheetNo() + NumConstant.ONE), resiChildMap.values()), writeSheet); pageFormDTO.setPageNo(pageFormDTO.getPageNo() + NumConstant.ONE); //重置数据 resiChildMap.clear(); 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 c953563c81..c97cdbabdd 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 @@ -680,6 +680,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl stringMap = icResiUserImportService.listRemoteOptions(columnWrappers, v.getOptionSourceValue(), currentStaffAgencyId);