diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java index 773291dfcc..6dae6eb249 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/ExcelUtils.java @@ -19,8 +19,8 @@ import org.springframework.util.CollectionUtils; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.OutputStream; import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collection; import java.util.Date; @@ -121,5 +121,14 @@ public class ExcelUtils { out.flush(); out.close(); } + public static OutputStream getOutputStream(String fileName, HttpServletResponse response) throws Exception { + fileName = URLEncoder.encode(fileName, "UTF-8"); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + response.addHeader("Access-Control-Expose-Headers", "Content-disposition"); + + return response.getOutputStream(); + } } diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/CategoryProjectListResultDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/CategoryProjectListResultDTO.java index 5250826a3c..ec8694fd1b 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/CategoryProjectListResultDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/result/CategoryProjectListResultDTO.java @@ -25,6 +25,11 @@ public class CategoryProjectListResultDTO implements Serializable { */ private String projectStatus; + /** + * 项目状态:待处理 pending,结案closed + */ + private String projectStatusDesc; + /** * 项目标题 */ @@ -69,8 +74,13 @@ public class CategoryProjectListResultDTO implements Serializable { public CategoryProjectListResultDTO() { this.category = ""; this.projectStatus = ""; + this.projectStatusDesc = ""; this.projectTitle = ""; this.gridName = ""; this.createTime = ""; } + + public String getProjectStatusDesc() { + return "closed".equals(projectStatus)?"已结案":"处理中"; + } } diff --git a/epmet-module/data-report/data-report-server/pom.xml b/epmet-module/data-report/data-report-server/pom.xml index 15936771b6..25a8220b54 100644 --- a/epmet-module/data-report/data-report-server/pom.xml +++ b/epmet-module/data-report/data-report-server/pom.xml @@ -100,6 +100,12 @@ 2.0.0 compile + + com.alibaba + easyexcel + 3.0.3 + compile + diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java index 87aa340fac..81babdb9ce 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/controller/screen/ScreenProjectController.java @@ -2,12 +2,17 @@ package com.epmet.datareport.controller.screen; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.TemplateExportParams; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.epmet.commons.tools.annotation.LoginUser; +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.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.utils.ExcelUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.datareport.service.evaluationindex.screen.ScreenProjectOrgDailyService; @@ -241,30 +246,53 @@ public class ScreenProjectController { * @date 2021/11/4 3:38 下午 */ @PostMapping("selectcategoryprojectlist/export") - public void selectProjectCategoryExport(@RequestBody CategoryProjectListFormDTO formDTO,@LoginUser TokenDto tokenDto, HttpServletResponse response) throws Exception { - //tokenDto.setUserId("36bc0fb38565ecdebf8ab9b476b44548"); - //tokenDto.setCustomerId("45687aa479955f9d06204d415238f7cc"); - formDTO.setIsPage(false); - //formDTO.setStatus("all"); - //formDTO.setCategoryCode("0102"); - ValidatorUtils.validateEntity(formDTO, ProjectCategoryFormDTO.CategoryProjectExportForm.class); - PageCategoryProjectListResultDTO data = screenProjectService.selectCategoryProjectList(formDTO,tokenDto); - String templatePath = "excel/project_temp.xlsx"; + public void selectProjectCategoryExport(@RequestBody CategoryProjectListFormDTO formDTO, @LoginUser TokenDto tokenDto, HttpServletResponse response) throws Exception { + ExcelWriter excelWriter = null; + try { + //tokenDto.setUserId("36bc0fb38565ecdebf8ab9b476b44548"); + //tokenDto.setCustomerId("45687aa479955f9d06204d415238f7cc"); - CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); - Map mapData = new HashMap<>(); - mapData.put("list",data.getList()); - mapData.put("orgName",staffInfo.getAgencyName()); - mapData.put("exportDate",getExportDateStr(formDTO.getStartTime(),formDTO.getEndTime())); - mapData.put("categoryName", formDTO.getCategoryName()); - if (StringUtils.isNotBlank(formDTO.getParentCategoryName())){ - mapData.put("categoryName", formDTO.getParentCategoryName().concat(StrConstant.HYPHEN).concat(formDTO.getCategoryName())); - } + formDTO.setIsPage(false); + ValidatorUtils.validateEntity(formDTO, ProjectCategoryFormDTO.CategoryProjectExportForm.class); - Workbook workbook = ExcelExportUtil.exportExcel(new TemplateExportParams(templatePath), mapData); - response.setHeader("content-Type", "application/vnd.ms-excel"); - response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("项目统计.xls", "UTF-8")); - workbook.write(response.getOutputStream()); + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId()); + Map mapData = new HashMap<>(); + mapData.put("orgName", staffInfo == null ? StrConstant.EPMETY_STR : staffInfo.getAgencyName()); + mapData.put("exportDate", getExportDateStr(formDTO.getStartTime(), formDTO.getEndTime())); + mapData.put("categoryName", formDTO.getCategoryName()); + if (StringUtils.isNotBlank(formDTO.getParentCategoryName())) { + mapData.put("categoryName", formDTO.getParentCategoryName().concat(StrConstant.HYPHEN).concat(formDTO.getCategoryName())); + } + + String templatePath = "/excel/project_temp_easy_excel.xlsx"; + String template = this.getClass().getResource(templatePath).getPath(); + String fileName = "项目统计.xls"; + excelWriter = EasyExcel.write(ExcelUtils.getOutputStream(fileName, response)).withTemplate(template).build(); + WriteSheet writeSheet = EasyExcel.writerSheet().build(); + excelWriter.fill(mapData, writeSheet); + + formDTO.setPageSize(NumConstant.ONE); + PageCategoryProjectListResultDTO data = null; + do { + data = screenProjectService.selectCategoryProjectList(formDTO, tokenDto); + if (data.getList().isEmpty()) { + break; + } + formDTO.setPageNo(formDTO.getPageNo() + 1); + excelWriter.fill(data.getList(), writeSheet); + } while (data.getList().size() == formDTO.getPageSize()); + +// String templatePath = "excel/project_temp.xlsx"; +// Workbook workbook = ExcelExportUtil.exportExcel(new TemplateExportParams(templatePath), mapData); +// response.setHeader("content-Type", "application/vnd.ms-excel"); +// response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("项目统计.xls", "UTF-8")); +// workbook.write(response.getOutputStream()); + + } finally { + if (excelWriter != null) { + excelWriter.finish(); + } + } } @NotNull diff --git a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java index 4c0833ba3e..bc23641267 100644 --- a/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java +++ b/epmet-module/data-report/data-report-server/src/main/java/com/epmet/datareport/service/evaluationindex/screen/impl/ScreenProjectServiceImpl.java @@ -375,13 +375,11 @@ public class ScreenProjectServiceImpl implements ScreenProjectService { } PageCategoryProjectListResultDTO result = new PageCategoryProjectListResultDTO(); List list; - if (formDTO.getIsPage()){ - PageInfo objectPageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> screenProjectDataDao.selectCategoryProjectList(tokenDto.getCustomerId(), formDTO.getOrgId(), formDTO.getCategoryCode(), formDTO.getStatus())); - list = objectPageInfo.getList(); - result.setTotal(Integer.valueOf(String.valueOf(objectPageInfo.getTotal()))); - }else { - list = screenProjectDataDao.selectCategoryProjectList(tokenDto.getCustomerId(), formDTO.getOrgId(), formDTO.getCategoryCode(), formDTO.getStatus()); - } + PageInfo objectPageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()) + .doSelectPageInfo(() -> screenProjectDataDao.selectCategoryProjectList(tokenDto.getCustomerId(), formDTO.getOrgId(), formDTO.getCategoryCode(), formDTO.getStatus())); + list = objectPageInfo.getList(); + result.setTotal(Integer.valueOf(String.valueOf(objectPageInfo.getTotal()))); + if (!CollectionUtils.isEmpty(list)){ list.forEach(l -> { if (l.getOrgType().equals(FactConstant.AGENCY)){ diff --git a/epmet-module/data-report/data-report-server/src/main/resources/excel/project_temp_easy_excel.xlsx b/epmet-module/data-report/data-report-server/src/main/resources/excel/project_temp_easy_excel.xlsx new file mode 100644 index 0000000000..41f27c780c Binary files /dev/null and b/epmet-module/data-report/data-report-server/src/main/resources/excel/project_temp_easy_excel.xlsx differ