From 2d6d0e0b85d1c8802e28cec44554b645fbe1e778 Mon Sep 17 00:00:00 2001 From: jianjun Date: Mon, 8 Nov 2021 14:25:33 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=88=97=E8=A1=A8=E5=AF=BC?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/form/CategoryProjectListFormDTO.java | 16 ++--- .../dto/form/ProjectCategoryFormDTO.java | 3 +- .../screen/ScreenProjectController.java | 64 ++++++++++++++---- .../excel/project_category_temp.xlsx | Bin 9409 -> 9439 bytes .../main/resources/excel/project_temp.xlsx | Bin 0 -> 9248 bytes 5 files changed, 62 insertions(+), 21 deletions(-) create mode 100644 epmet-module/data-report/data-report-server/src/main/resources/excel/project_temp.xlsx diff --git a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/CategoryProjectListFormDTO.java b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/CategoryProjectListFormDTO.java index d182572061..3da140aa04 100644 --- a/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/CategoryProjectListFormDTO.java +++ b/epmet-module/data-report/data-report-client/src/main/java/com/epmet/project/dto/form/CategoryProjectListFormDTO.java @@ -11,12 +11,13 @@ import java.io.Serializable; * @DESC */ @Data -public class CategoryProjectListFormDTO implements Serializable { +public class CategoryProjectListFormDTO extends ProjectCategoryFormDTO implements Serializable { private static final long serialVersionUID = -5448734274886241594L; public interface CategoryProjectListForm{} + @NotNull(message = "pageSize不能为空",groups = CategoryProjectListForm.class) private Integer pageSize; @@ -26,22 +27,21 @@ public class CategoryProjectListFormDTO implements Serializable { /** * 项目状态:closed:已结案,all:全部 */ - @NotNull(message = "status不能为空",groups = CategoryProjectListForm.class) + @NotNull(message = "status不能为空",groups = {CategoryProjectListForm.class, CategoryProjectExportForm.class}) private String status; - @NotNull(message = "categoryCode不能为空",groups = CategoryProjectListForm.class) + @NotNull(message = "categoryCode不能为空",groups = {CategoryProjectListForm.class, CategoryProjectExportForm.class}) private String categoryCode; + @NotNull(message = "categoryName不能为空",groups = CategoryProjectExportForm.class) + private String categoryName; + private String parentCategoryName; + /** * 组织ID */ private String orgId; - /** - * 组织类型:agency:组织,grid:网格 - */ - private String orgType; - /** * 是否分页,默认true,false的时候 给导出用 */ 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 34043933bc..8cd3a4f083 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 @@ -16,6 +16,7 @@ public class ProjectCategoryFormDTO implements Serializable { private static final long serialVersionUID = 5047143743629810527L; public interface ProjectCategoryForm{} + public interface CategoryProjectExportForm {} /** * 组织ID @@ -27,7 +28,7 @@ public class ProjectCategoryFormDTO implements Serializable { */ private String orgType; - @NotBlank(message = "结束时间不能为空",groups = ProjectCategoryForm.class) + @NotBlank(message = "结束时间不能为空",groups = {ProjectCategoryForm.class,CategoryProjectExportForm.class}) private String endTime; /** 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 afc882a39d..3a58d96d4c 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 @@ -29,6 +29,7 @@ import com.epmet.project.dto.result.ProjectCategoryResultDTO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Workbook; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -195,20 +196,13 @@ public class ScreenProjectController { * @date 2021/11/4 3:38 下午 */ @PostMapping("selectprojectcategory/export") - public void selectProjectCategoryExport(@RequestBody ProjectCategoryFormDTO formDTO, /*@LoginUser*/ TokenDto tokenDto, HttpServletResponse response) throws Exception { - tokenDto.setUserId("36bc0fb38565ecdebf8ab9b476b44548"); - tokenDto.setCustomerId("45687aa479955f9d06204d415238f7cc"); - ValidatorUtils.validateEntity(formDTO, ProjectCategoryFormDTO.ProjectCategoryForm.class); + public void selectProjectCategoryExport(@RequestBody ProjectCategoryFormDTO formDTO, @LoginUser TokenDto tokenDto, HttpServletResponse response) throws Exception { + //tokenDto.setUserId("36bc0fb38565ecdebf8ab9b476b44548"); + //tokenDto.setCustomerId("45687aa479955f9d06204d415238f7cc"); + ValidatorUtils.validateEntity(formDTO, ProjectCategoryFormDTO.CategoryProjectExportForm.class); List data = screenProjectService.selectProjectCategory(formDTO, tokenDto); String templatePath = "excel/project_category_temp.xlsx"; - StringBuilder dateBuilder = new StringBuilder(); - if (StringUtils.isNotBlank(formDTO.getStartTime())){ - dateBuilder.append(formDTO.getStartTime()).append(StrConstant.HYPHEN); - } - if (StringUtils.isNotBlank(formDTO.getEndTime())){ - dateBuilder.append(formDTO.getEndTime()); - } List resultDTOList = new ArrayList<>(); data.forEach(e->{ resultDTOList.add(e); @@ -219,7 +213,7 @@ public class ScreenProjectController { Map mapData = new HashMap<>(); mapData.put("list",resultDTOList); mapData.put("orgName",staffInfo.getAgencyName()); - mapData.put("exportDate",dateBuilder.toString()); + mapData.put("exportDate",getExportDateStr(formDTO.getStartTime(),formDTO.getEndTime())); 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")); @@ -239,4 +233,50 @@ public class ScreenProjectController { return new Result().ok(screenProjectService.selectCategoryProjectList(formDTO,tokenDto)); } + /** + * @Description 【项目分类】查询项目分类 + * @param formDTO + * @param tokenDto + * @author zxc + * @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"; + + 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())); + } + + 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()); + } + + @NotNull + private String getExportDateStr(String startTime,String endTime) { + StringBuilder dateBuilder = new StringBuilder(); + if (StringUtils.isNotBlank(startTime)) { + dateBuilder.append(startTime).append(StrConstant.HYPHEN); + } + if (StringUtils.isNotBlank(endTime)) { + dateBuilder.append(endTime); + } + return dateBuilder.toString(); + } + } diff --git a/epmet-module/data-report/data-report-server/src/main/resources/excel/project_category_temp.xlsx b/epmet-module/data-report/data-report-server/src/main/resources/excel/project_category_temp.xlsx index f12e92967d768f7ee7873566c8c431caabba3676..6054a88289f783eb48e4831805680dcd7824ba67 100644 GIT binary patch delta 5015 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 diff --git a/epmet-module/data-report/data-report-server/src/main/resources/excel/project_temp.xlsx b/epmet-module/data-report/data-report-server/src/main/resources/excel/project_temp.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..743bd60ecc64cd5359d5050345a7f4aa781c5058 GIT binary patch literal 9248 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 literal 0 HcmV?d00001