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