From 61095855a6cab77f370d338657ec8c611d855ead Mon Sep 17 00:00:00 2001 From: zxc <1272811460@qq.com> Date: Tue, 24 May 2022 15:55:13 +0800 Subject: [PATCH] daochu --- .../epmet/controller/ProjectController.java | 17 +++++++ .../epmet/excel/ProjectListExportExcel.java | 42 ++++++++++++++++++ .../com/epmet/service/ProjectService.java | 11 +++++ .../service/impl/ProjectServiceImpl.java | 23 +++++++++- .../resources/excel/project_list_export.xlsx | Bin 0 -> 11369 bytes 5 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ProjectListExportExcel.java create mode 100644 epmet-module/gov-project/gov-project-server/src/main/resources/excel/project_list_export.xlsx diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java index 4e09cbf193..03bb218bd1 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/controller/ProjectController.java @@ -38,6 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -351,6 +352,22 @@ public class ProjectController { return new Result().ok(projectService.projectList(formDTO)); } + /** + * Desc: 项目管理导出 + * @param response + * @param tokenDto + * @param formDTO + * @author zxc + * @date 2022/5/24 15:22 + */ + @PostMapping("project-list-export") + public void projectListExport(HttpServletResponse response,@LoginUser TokenDto tokenDto,@RequestBody ProjectManageListFormDTO formDTO) throws IOException { + formDTO.setUserId(tokenDto.getUserId()); + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setIsPage(false); + projectService.projectListExport(response,formDTO); + } + /** * Desc: 满意度评价列表 * @param formDTO diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ProjectListExportExcel.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ProjectListExportExcel.java new file mode 100644 index 0000000000..0afc9cd28b --- /dev/null +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/excel/ProjectListExportExcel.java @@ -0,0 +1,42 @@ +package com.epmet.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import cn.afterturn.easypoi.excel.annotation.ExcelCollection; +import com.epmet.commons.tools.utils.ExcelVerifyInfo; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @Author zxc + * @DateTime 2022/5/24 15:24 + * @DESC + */ +@Data +public class ProjectListExportExcel extends ExcelVerifyInfo implements Serializable { + + @Excel(name = "所属网格",needMerge = true) + private String gridName = ""; + + @Excel(name = "项目标题",needMerge = true) + private String title = ""; + + @Excel(name = "转项目时间",needMerge = true) + private String shiftProjectTime; + + @Excel(name = "项目方案",needMerge = true) + private String projectScheme = ""; + + @Excel(name = "内部备注",needMerge = true) + private String internalRemark = ""; + + @Excel(name = "滞留工作日",needMerge = true) + private String detentionDays = ""; + +// @ExcelCollection(name = "当前处理部门") +// private List departmentNameList; + +} diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java index 7e86778fd0..82a88d3a5b 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/ProjectService.java @@ -9,6 +9,8 @@ import com.epmet.dto.result.*; import com.epmet.entity.ProjectEntity; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -384,4 +386,13 @@ public interface ProjectService extends BaseService { */ PageData satisfactionEvaluationList(SatisfactionEvaluationListFormDTO formDTO); + /** + * Desc: 项目管理导出 + * @param response + * @param formDTO + * @author zxc + * @date 2022/5/24 15:22 + */ + void projectListExport(HttpServletResponse response,ProjectManageListFormDTO formDTO) throws IOException; + } \ No newline at end of file diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java index ab30428219..74ea937511 100644 --- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java +++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java @@ -17,6 +17,7 @@ package com.epmet.service.impl; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -48,6 +49,7 @@ import com.epmet.dto.*; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.entity.*; +import com.epmet.excel.ProjectListExportExcel; import com.epmet.feign.*; import com.epmet.redis.ProjectRedis; import com.epmet.resi.group.constant.TopicConstant; @@ -80,6 +82,8 @@ import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -3208,7 +3212,7 @@ public class ProjectServiceImpl extends BaseServiceImpl result = new PageData<>(new ArrayList<>(),NumConstant.ZERO); - PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize()).doSelectPageInfo(() -> baseDao.getProjectManageList(formDTO)); + PageInfo pageInfo = PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(),formDTO.getIsPage()).doSelectPageInfo(() -> baseDao.getProjectManageList(formDTO)); List projectManageList = pageInfo.getList(); if (CollectionUtils.isNotEmpty(projectManageList)){ // 获取滞留天数 @@ -3312,6 +3316,23 @@ public class ProjectServiceImpl extends BaseServiceImpl list = this.projectList(formDTO).getList(); + List projectListExportExcels = ConvertUtils.sourceToTarget(list, ProjectListExportExcel.class); + TemplateExportParams templatePath = new TemplateExportParams("excel/project_list_export.xlsx"); + Map map = new HashMap<>(); + map.put("maplist",projectListExportExcels); + ExcelPoiUtils.exportExcel(templatePath ,map,"项目管理导出表",response); + } + + /** * @Description 区间项目分类数量处理 * 查询的是时间段内的分类项目数,查询的时间 是传入一个日期,拼上时间,在进行比较大小 * @param categories diff --git a/epmet-module/gov-project/gov-project-server/src/main/resources/excel/project_list_export.xlsx b/epmet-module/gov-project/gov-project-server/src/main/resources/excel/project_list_export.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..28448471086e9b942f5846fbc1b2e967c6b3acf5 GIT binary patch literal 11369 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