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 33a99cbd1c..bd04087da4 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 @@ -237,8 +237,12 @@ public class HouseController implements ResultDataResolver { @RequestMapping("exporthouseinfo") public void exporthouseinfo(@RequestBody IcHouseListFormDTO formDTO, HttpServletResponse response) throws Exception { ValidatorUtils.validateEntity(formDTO); + if (StringUtils.isNotBlank(formDTO.getId())){ + formDTO.setSelectType("id"); + }else{ + formDTO.setSelectType("agency"); + } formDTO.setIsPage(false); - formDTO.setPageSize(NumConstant.TEN_THOUSAND); houseService.exportBuildinginfo(formDTO, response); } 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 ba9cb5e146..76ce9a6149 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 @@ -1,9 +1,10 @@ package com.epmet.service.impl; -import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; +import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.read.metadata.ReadSheet; +import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.epmet.commons.tools.constant.NumConstant; @@ -24,10 +25,7 @@ import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.redis.common.bean.GridInfoCache; import com.epmet.commons.tools.redis.common.bean.HouseInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.FileUtils; -import com.epmet.commons.tools.utils.HouseQRcodeUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.constant.CustomerGridConstant; import com.epmet.constant.NeighborhoodConstant; import com.epmet.constants.ImportTaskConstants; @@ -48,7 +46,6 @@ import com.epmet.model.HouseInfoModel; import com.epmet.model.ImportHouseInfoListener; import com.epmet.redis.IcHouseRedis; import com.epmet.service.*; -import com.epmet.util.ExcelPoiUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.cache.Cache; @@ -377,22 +374,41 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver { public void exportBuildinginfo(IcHouseListFormDTO formDTO, HttpServletResponse response) throws Exception { //如果类型是house 查房屋 //导出房屋 - PageData icHouseExcels = new PageData<>(new ArrayList<>(), NumConstant.ZERO); - List list = new ArrayList<>(); + PageData icHouseExcels = null; Integer pageNo = NumConstant.ONE; - do { - formDTO.setPageNo(pageNo); - icHouseExcels = getHouseList(formDTO); - if (CollectionUtils.isEmpty(icHouseExcels.getList())) { - break; + formDTO.setPageSize(NumConstant.TEN_THOUSAND); + ExcelWriter excelWriter = null; + long start = System.currentTimeMillis(); + try { + String templatePath = "excel/house_export_for_easyexcel.xlsx"; + InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(templatePath); + excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("房屋信息.xlsx", response)) + .withTemplate(inputStream).build(); + + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + do { + formDTO.setPageNo(pageNo); + icHouseExcels = getHouseList(formDTO); + if (CollectionUtils.isEmpty(icHouseExcels.getList())) { + break; + } + excelWriter.fill(icHouseExcels.getList(), writeSheet); + pageNo++; + } while (icHouseExcels.getList().size() == formDTO.getPageSize()); + } catch (EpmetException e) { + response.reset(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-type", "application/json; charset=UTF-8"); + PrintWriter printWriter = response.getWriter(); + Result result = new Result<>().error(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), e.getMsg()); + printWriter.write(JSON.toJSONString(result)); + printWriter.close(); + } finally { + if (excelWriter != null) { + excelWriter.finish(); } - list.addAll(icHouseExcels.getList()); - pageNo++; - } while (icHouseExcels.getList().size() == formDTO.getPageSize()); - TemplateExportParams templatePath = new TemplateExportParams("excel/house_export.xlsx"); - Map map = new HashMap<>(); - map.put("maplist", list); - ExcelPoiUtils.exportExcel(templatePath, map, "房屋信息录入表", response); + log.info("exportBuildinginfo cost:{}ms",System.currentTimeMillis()-start); + } } @Override diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx new file mode 100644 index 0000000000..359b68f0bd Binary files /dev/null and b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_export_for_easyexcel.xlsx differ diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml index d0dd039a7f..4943a95b1c 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml @@ -122,8 +122,8 @@ LEFT JOIN ic_building b on a.BUILDING_ID = b.ID and b.DEL_FLAG = '0' LEFT JOIN ic_neighbor_hood c on a.NEIGHBOR_HOOD_ID = c.ID and c.DEL_FLAG = '0' LEFT JOIN ic_building_unit d on a.BUILDING_UNIT_ID = d.ID and d.DEL_FLAG = '0' - LEFT JOIN customer_grid gr on gr.ID = c.GRID_ID and d.DEL_FLAG = '0' - LEFT JOIN customer_agency ag on ag.ID = c.AGENCY_ID and d.DEL_FLAG = '0' + LEFT JOIN customer_grid gr on gr.ID = c.GRID_ID and gr.DEL_FLAG = '0' + LEFT JOIN customer_agency ag on ag.ID = c.AGENCY_ID and ag.DEL_FLAG = '0' 1 = 1 and a.del_flag = '0'