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/form/ProjectCategoryFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/ProjectCategoryFormDTO.java
index 8cd3a4f083..c7a585ec6c 100644
--- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/ProjectCategoryFormDTO.java
+++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/ProjectCategoryFormDTO.java
@@ -35,4 +35,10 @@ public class ProjectCategoryFormDTO implements Serializable {
* 开始时间
*/
private String startTime;
+
+ /**
+ * 组织名称
+ */
+ @NotBlank(message = "组织名称不能为空",groups = CategoryProjectExportForm.class)
+ private String orgName;
}
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..98cda05a2b 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,15 @@ 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;
@@ -34,6 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
@@ -209,10 +213,9 @@ public class ScreenProjectController {
e.setIndex(1);
resultDTOList.addAll(ConvertUtils.sourceToTarget(e.getChildren(),ProjectCategoryResultDTO.class));
});
- CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
Map mapData = new HashMap<>();
mapData.put("list",resultDTOList);
- mapData.put("orgName",staffInfo.getAgencyName());
+ mapData.put("orgName", formDTO.getOrgName());
mapData.put("exportDate",getExportDateStr(formDTO.getStartTime(),formDTO.getEndTime()));
Workbook workbook = ExcelExportUtil.exportExcel(new TemplateExportParams(templatePath), mapData);
response.setHeader("content-Type", "application/vnd.ms-excel");
@@ -241,30 +244,56 @@ 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");
+ formDTO.setPageNo(NumConstant.ONE);
+ formDTO.setPageSize(NumConstant.ONE_THOUSAND);
+ formDTO.setIsPage(false);
+ ValidatorUtils.validateEntity(formDTO, ProjectCategoryFormDTO.CategoryProjectExportForm.class);
- 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()));
- }
+ Map mapData = new HashMap<>();
+ mapData.put("orgName", formDTO.getOrgName());
+ 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()));
+ }
- 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());
+ String templatePath = "excel/project_temp_easy_excel.xlsx";
+ InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(templatePath);
+
+
+ //String template = this.getClass().getResource(templatePath).getPath();
+ String fileName = "项目统计.xlsx";
+ excelWriter = EasyExcel.write(ExcelUtils.getOutputStream(fileName, response)).withTemplate(inputStream).build();
+ WriteSheet writeSheet = EasyExcel.writerSheet().build();
+ excelWriter.fill(mapData, writeSheet);
+
+ PageCategoryProjectListResultDTO data = null;
+ do {
+ data = screenProjectService.selectCategoryProjectList(formDTO, tokenDto);
+ if (data.getList().isEmpty()) {
+ break;
+ }
+ formDTO.setPageNo(formDTO.getPageNo() + 1);
+ excelWriter.fill(data.getList(), writeSheet);
+ data.getList().clear();
+ } 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
diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
index c053346087..6fefc845b6 100644
--- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
+++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/controller/DemoController.java
@@ -943,9 +943,25 @@ public class DemoController {
@Autowired
private ScreenProjectCategoryOrgDailyService screenProjectCategoryOrgDailyService;
- @PostMapping("orgdaily")
- public Result orgDaily(@RequestParam("customerId")String customerId,@RequestParam("dateId")String dateId){
- screenProjectCategoryOrgDailyService.extractProjectCategoryOrgData(customerId,dateId);
+ @PostMapping("gridandorgdaily")
+ public Result orgDaily(@RequestParam("customerId")String customerId,@RequestParam("dateId")String dateId,
+ @RequestParam(name = "startDate",required = false)String startDate,
+ @RequestParam(name = "endDate",required = false)String endDate
+ ){
+ long start = System.currentTimeMillis();
+ if (StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)){
+ List daysBetween = DateUtils.getDaysBetween(startDate, endDate);
+ daysBetween.forEach(d -> {
+ projectCategoryGridDailyService.extractProjectCategoryData(customerId,d);
+ screenProjectCategoryOrgDailyService.extractProjectCategoryOrgData(customerId,d);
+ });
+ }else {
+ projectCategoryGridDailyService.extractProjectCategoryData(customerId,dateId);
+ screenProjectCategoryOrgDailyService.extractProjectCategoryOrgData(customerId,dateId);
+ }
+ long end = System.currentTimeMillis();
+ long l = (end - start) / 1000;
+ log.info("gridAndOrgDaily耗时" + l+ "s");
return new Result();
}