From a245e2d3ae4c4ab4f44308f9cb076f34ca8ee2b4 Mon Sep 17 00:00:00 2001
From: XLR_asd <xueyawei@seaskysh.com>
Date: Fri, 16 Jul 2021 14:07:24 +0800
Subject: [PATCH] =?UTF-8?q?feat=20=20=E5=AF=BC=E5=87=BA=E9=A1=B9=E7=9B=AE?=
 =?UTF-8?q?=E7=94=B3=E6=8A=A5=E4=B9=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../seasky/projectplan/api/IProjectPlan.java  | 17 +++++-
 .../dto/projectplan/InfoPlanExportOut.java    | 61 +++++++++++++++++++
 .../projectplan/ProjectPlanQueryService.java  | 17 +++++-
 .../mapper/table/ProjectPlanBookMapper.java   |  1 +
 .../ProjectPlanQueryServiceImpl.java          | 30 ++++++++-
 .../controller/ProjectPlanController.java     | 15 ++++-
 6 files changed, 133 insertions(+), 8 deletions(-)
 create mode 100644 ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoPlanExportOut.java

diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectPlan.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectPlan.java
index 4eb945239..8472e26d3 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectPlan.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectPlan.java
@@ -231,12 +231,23 @@ public interface IProjectPlan {
     Result<PlanBookBasicInformationOut> queryBasicInformation(PlanBookBasicInformationQry planBookBasicInformationQry);
 
     /**
-     * 瀵煎嚭椤圭洰璁″垝
+     * 瀵煎嚭鏃ュ父鐢虫姤涔�
      *
-     * @param request  璇锋眰
-     * @param response 鍝嶅簲
+     * @param request             璇锋眰
+     * @param response            鍝嶅簲
+     * @param projectDailyPlanQry 椤圭洰鏃ュ父璁″垝qry
      */
     @PostMapping(path = "/exportProjectPlan")
     void exportProjectPlan(HttpServletRequest request, HttpServletResponse response,ProjectDailyPlanQry projectDailyPlanQry);
 
+    /**
+     * 瀵煎嚭椤圭洰鐢虫姤涔�
+     *
+     * @param request             璇锋眰
+     * @param response            鍝嶅簲
+     * @param projectInfoPlanQry 椤圭洰鏃ュ父璁″垝qry
+     */
+    @PostMapping(path = "/exportInfoProjectPlan")
+    void exportInfoProjectPlan(HttpServletRequest request, HttpServletResponse response,ProjectInfoPlanQry projectInfoPlanQry);
+
 }
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoPlanExportOut.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoPlanExportOut.java
new file mode 100644
index 000000000..68a00c441
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoPlanExportOut.java
@@ -0,0 +1,61 @@
+package com.seasky.projectplan.dto.projectplan;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.seasky.core.ddd.base.BaseDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.ALWAYS)
+public class InfoPlanExportOut extends BaseDto implements Serializable {
+
+    @ApiModelProperty(value = "骞翠唤",example = "")
+    @ExcelProperty(value = "骞翠唤",index = 0)
+    private Integer year;
+
+    @ApiModelProperty(value = "椤圭洰绫诲瀷",example = "")
+    @ExcelProperty(value = "椤圭洰绫诲瀷",index = 1)
+    private String projectType;
+
+    @ApiModelProperty(value = "椤圭洰鍚嶇О",example = "")
+    @ExcelProperty(value = "椤圭洰鍚嶇О",index = 2)
+    private String projectName;
+
+    @ApiModelProperty(value = "閮ㄩ棬鍚嶇О",example = "")
+    @ExcelProperty(value = "閮ㄩ棬鍚嶇О",index = 3)
+    private String departmentName;
+
+    @ApiModelProperty(value = "閮ㄩ棬缂栧彿",example = "")
+    @ExcelProperty(value = "閮ㄩ棬缂栧彿",index = 4)
+    private String departmentCode;
+
+    @ApiModelProperty(value = "璐熻矗浜� 鍚嶇О",example = "")
+    @ExcelProperty(value = "璐熻矗浜哄悕绉�",index = 5)
+    private String projectLeaderName;
+
+    @ApiModelProperty(value = "璐熻矗浜虹紪鍙�",example = "")
+    @ExcelProperty(value = "璐熻矗浜虹紪鍙�",index = 6)
+    private String projectLeaderCode;
+
+    @ApiModelProperty(value = "鐢虫姤閲戦",example = "")
+    @ExcelProperty(value = "鐢虫姤閲戦",index = 7)
+    private BigDecimal totalMoney;
+
+    @ApiModelProperty(value = "鏍稿畾閲戦",example = "")
+    @ExcelProperty(value = "鏍稿畾閲戦",index = 8)
+    private BigDecimal quotaMoney;
+
+    @ApiModelProperty(value = "瀹℃牳鐘舵€�",example = "")
+    @ExcelProperty(value = "瀹℃牳鐘舵€�",index = 9)
+    private String state;
+}
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectplan/ProjectPlanQueryService.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectplan/ProjectPlanQueryService.java
index 236b7e6a2..3a2916357 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectplan/ProjectPlanQueryService.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectplan/ProjectPlanQueryService.java
@@ -117,10 +117,21 @@ public interface ProjectPlanQueryService extends BaseService<ProjectPlanBookPo>
     PlanBookBasicInformationOut queryBasicInformation( PlanBookBasicInformationQry planBookBasicInformationQry);
 
     /**
-     * 涓嬪姞杞芥ā鏉�
+     * 瀵煎嚭
      *
-     * @param request  璇锋眰
-     * @param response 鍝嶅簲
+     * @param request             璇锋眰
+     * @param response            鍝嶅簲
+     * @param projectDailyPlanQry 椤圭洰鏃ュ父璁″垝qry
      */
     void exportProjectPlan(HttpServletRequest request, HttpServletResponse response,ProjectDailyPlanQry projectDailyPlanQry);
+
+    /**
+     * 瀵煎嚭
+     *
+     * @param request             璇锋眰
+     * @param response            鍝嶅簲
+     * @param projectInfoPlanQry 椤圭洰鏃ュ父璁″垝qry
+     */
+    void exportInfoProjectPlan(HttpServletRequest request, HttpServletResponse response,ProjectInfoPlanQry projectInfoPlanQry);
+
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ProjectPlanBookMapper.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ProjectPlanBookMapper.java
index 955d0640e..b8a16d569 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ProjectPlanBookMapper.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ProjectPlanBookMapper.java
@@ -143,6 +143,7 @@ public interface ProjectPlanBookMapper extends BaseMapper<ProjectPlanBookPo> {
      * @return {@link Page<ProjectInfoPlanDo>}
      */
     Page<ProjectInfoPlanDo> queryProjectInfoPlanPageByCurrentUserDept(Page<ProjectPlanBookOut> page, @Param("pm") ProjectInfoPlanQry projectInfoPlanQry);
+    List<ProjectInfoPlanDo> queryProjectInfoPlanPageByCurrentUserDept(@Param("pm") ProjectInfoPlanQry projectInfoPlanQry);
 
     /**
      * 鏍规嵁褰撳墠鐧诲綍浜烘墍鍦ㄩ儴闂ㄩ泦鍚堣幏鍙栨棩甯哥粡璐归泦鍚堬紙鍒嗛〉锛�
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectplan/ProjectPlanQueryServiceImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectplan/ProjectPlanQueryServiceImpl.java
index 3d003809b..2ec6cefca 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectplan/ProjectPlanQueryServiceImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectplan/ProjectPlanQueryServiceImpl.java
@@ -494,7 +494,7 @@ public class ProjectPlanQueryServiceImpl extends AbstractService<ProjectPlanBook
     }
 
     /**
-     * 瀵煎嚭椤圭洰璁″垝
+     * 瀵煎嚭鏃ュ父鐢虫姤涔�
      *
      * @param request  璇锋眰
      * @param response 鍝嶅簲
@@ -519,6 +519,34 @@ public class ProjectPlanQueryServiceImpl extends AbstractService<ProjectPlanBook
         }
     }
 
+    /**
+     * 瀵煎嚭椤圭洰鐢虫姤涔�
+     *
+     * @param request            璇锋眰
+     * @param response           鍝嶅簲
+     * @param projectInfoPlanQry 椤圭洰淇℃伅璁″垝qry
+     */
+    @Override
+    public void exportInfoProjectPlan(HttpServletRequest request, HttpServletResponse response, ProjectInfoPlanQry projectInfoPlanQry) {
+        List<ProjectInfoPlanDo> doList = mapper.queryProjectInfoPlanPageByCurrentUserDept(projectInfoPlanQry);
+        if (doList == null ){
+            throw new DataAccessException(new Error(ResponseCode.DATA_ACCESS_NOT_FOUND, null, "鏃犲彲瀵煎嚭椤圭洰缁忚垂鐢虫姤涔�", ""));
+        }
+        List<ProjectPlanBookOut> outList = ProjectPlanQueryConvert.infoDoToOutList(doList);
+        List<InfoPlanExportOut> fundingExportOutList = MapperUtils.INSTANCE.mapAsList(InfoPlanExportOut.class,outList);
+        response.reset();
+        response.setCharacterEncoding("UTF-8");
+        response.setContentType("application/x-download");
+        try{
+            String fileName = URLEncoder.encode("椤圭洰缁忚垂鐢虫姤涔﹀鍑�","UTF-8");
+            response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
+            EasyExcel.write(response.getOutputStream(),InfoPlanExportOut.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("椤圭洰缁忚垂鐢虫姤涔�").doWrite(fundingExportOutList);
+        }catch (IOException e){
+            throw ExceptionUtil.getException(null,"瀵煎嚭椤圭洰缁忚垂鐢虫姤涔﹀け璐ワ紒");
+        }
+
+    }
+
     public Integer queryConfigYearByType(String type) {
         if (StringUtils.isEmpty(type)) {
             type = PlanTypeEnum.YISHANG.key();
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectPlanController.java b/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectPlanController.java
index 114e30069..12872eff5 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectPlanController.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectPlanController.java
@@ -179,7 +179,7 @@ public class ProjectPlanController extends BaseController implements IProjectPla
     }
 
     /**
-     * 瀵煎嚭椤圭洰璁″垝
+     * 瀵煎嚭鏃ュ父鐢虫姤涔�
      *
      * @param request  璇锋眰
      * @param response 鍝嶅簲
@@ -189,4 +189,17 @@ public class ProjectPlanController extends BaseController implements IProjectPla
     public void exportProjectPlan(HttpServletRequest request, HttpServletResponse response,ProjectDailyPlanQry projectDailyPlanQry) {
         queryService.exportProjectPlan(request,response,projectDailyPlanQry);
     }
+
+    /**
+     * 瀵煎嚭椤圭洰鐢虫姤涔�
+     *
+     * @param request             璇锋眰
+     * @param response            鍝嶅簲
+     * @param projectInfoPlanQry 椤圭洰鏃ュ父璁″垝qry
+     */
+    @ApiOperation("Q12.鎵归噺瀵煎嚭椤圭洰缁忚垂鐢虫姤涔�")
+    @Override
+    public void exportInfoProjectPlan(HttpServletRequest request, HttpServletResponse response, ProjectInfoPlanQry projectInfoPlanQry) {
+        queryService.exportInfoProjectPlan(request,response,projectInfoPlanQry);
+    }
 }
-- 
GitLab