From 4898451e9d5b127ed9cd27fad2848fc732c5f38a Mon Sep 17 00:00:00 2001
From: XLR_asd <xueyawei@seaskysh.com>
Date: Fri, 13 Aug 2021 15:47:02 +0800
Subject: [PATCH] =?UTF-8?q?feat=20=20=E7=A7=91=E7=9B=AE=E6=89=A9=E5=B1=95?=
 =?UTF-8?q?=E8=A1=A8=E7=AE=A1=E7=90=86=E5=8A=A0=E5=85=A5=20=E5=AF=BC?=
 =?UTF-8?q?=E5=85=A5=E5=AF=BC=E5=87=BA=E4=B8=8B=E8=BD=BD=E6=A8=A1=E7=89=88?=
 =?UTF-8?q?=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../api/IBaseConfigController.java            | 29 ++++++++
 .../ExportExtendFormManageOut.java            | 67 +++++++++++++++++
 .../ImportExtendFormManageCmd.java            | 63 ++++++++++++++++
 .../baseconfig/ExtendFromManageSvr.java       | 14 ++++
 .../baseconfig/ExtendFromManageSvrImpl.java   | 71 +++++++++++++++++++
 .../command/quotamanage/QuotaManageSvr.java   |  2 +-
 .../query/baseconfig/BaseConfigQuerySvr.java  | 18 +++++
 .../mapper/table/ExtendFromManageMapper.java  |  1 +
 .../baseconfig/BaseConfigQuerySvrImpl.java    | 65 +++++++++++++++++
 .../controller/BaseConfigController.java      | 44 ++++++++++++
 10 files changed, 373 insertions(+), 1 deletion(-)
 create mode 100644 ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/baseconfig/extendfrommanage/ExportExtendFormManageOut.java
 create mode 100644 ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/baseconfig/extendfrommanage/ImportExtendFormManageCmd.java

diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IBaseConfigController.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IBaseConfigController.java
index 0afb4ffa..7ed713cb 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IBaseConfigController.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IBaseConfigController.java
@@ -15,11 +15,13 @@ import com.seasky.projectplan.dto.baseconfig.informationtype.InformationTypeTree
 import com.seasky.projectplan.dto.baseconfig.personfund.PersonFundCmd;
 import com.seasky.projectplan.dto.baseconfig.personfund.PersonFundOut;
 import com.seasky.projectplan.dto.baseconfig.personfund.PersonFundQry;
+import com.seasky.projectplan.dto.projectplan.ProjectInfoPlanQry;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -76,6 +78,33 @@ public interface IBaseConfigController {
     Result<ExtendFormManageOut> queryExtendFormById(@RequestParam("id") Long id);
     @PostMapping("/queryExtendFormPage")
     Result<ExtendFormManageOut> queryExtendFormPage(@RequestBody ExtendFormManageQry qry);
+    /**
+     * 涓嬭浇 绉戠洰鎵╁睍琛ㄨ缃� 瀵煎叆妯℃澘
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     */
+    @PostMapping(path = "/downLoadExtendFormTemplate")
+    void downLoadExtendFormTemplate(HttpServletRequest request, HttpServletResponse response);
+    /**
+     * 瀵煎叆 绉戠洰鎵╁睍琛ㄨ缃�
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     * @param file     鏂囦欢
+     * @return {@link Result<Object>}
+     */
+    @PostMapping(path = "/importExtendForm")
+    Result<Object> importExtendForm(HttpServletRequest request, HttpServletResponse response, MultipartFile file);
+    /**
+     * 瀵煎嚭 绉戠洰鎵╁睍琛ㄨ缃�
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     * @param qry      椤圭洰鏃ュ父璁″垝qry
+     */
+    @PostMapping(path = "/exportExtendForm")
+    void exportExtendForm(HttpServletRequest request, HttpServletResponse response, ExtendFormManageQry qry);
 
     @PostMapping("/exportExtendFormPage")
     void exportExtendFormPage(HttpServletRequest request, HttpServletResponse response, @RequestBody ExtendFormManageQry qry);
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/baseconfig/extendfrommanage/ExportExtendFormManageOut.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/baseconfig/extendfrommanage/ExportExtendFormManageOut.java
new file mode 100644
index 00000000..09a16a7c
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/baseconfig/extendfrommanage/ExportExtendFormManageOut.java
@@ -0,0 +1,67 @@
+package com.seasky.projectplan.dto.baseconfig.extendfrommanage;
+
+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 javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 瀵煎嚭 绉戠洰鎵╁睍琛ㄧ鐞唎ut绫�
+ *
+ * @author XueYawei
+ * @date 2021/08/13
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@JsonInclude(JsonInclude.Include.ALWAYS)
+public class ExportExtendFormManageOut extends BaseDto implements Serializable {
+
+    @ApiModelProperty(value = "骞翠唤",example = "")
+    @ExcelProperty(value = "骞翠唤",index = 0)
+    private Integer year;
+
+    @ApiModelProperty("鎺掑簭缂栧彿")
+    @ExcelProperty(value = "鎺掑簭缂栧彿",index = 1)
+    private String rowNo;
+
+    @ApiModelProperty("灞炴€у悕绉�")
+    @ExcelProperty(value = "灞炴€у悕绉�",index = 2)
+    private String fileName;
+
+    @ApiModelProperty("鎵╁睍瀛楁缂栧彿")
+    @ExcelProperty(value = "鎵╁睍瀛楁缂栧彿",index = 3)
+    private String extendCode;
+
+    @ApiModelProperty("鎵╁睍瀛楁鍚嶇О")
+    @ExcelProperty(value = "鎵╁睍瀛楁鍚嶇О",index = 4)
+    private String extendName;
+
+    @ApiModelProperty("鎵╁睍绫诲瀷")
+    @ExcelProperty(value = "鎵╁睍绫诲瀷",index = 5)
+    private String extendType;
+
+    @ApiModelProperty("鏉ユ簮")
+    @ExcelProperty(value = "鏉ユ簮",index = 6)
+    private String source;
+
+    @ApiModelProperty("鏄惁鍚堣")
+    @ExcelProperty(value = "鏄惁鍚堣",index = 7)
+    private String isSum;
+
+    @ApiModelProperty("鏄惁寮€鍚�")
+    @ExcelProperty(value = "鏄惁寮€鍚�",index = 8)
+    private String isOpen;
+
+    @ApiModelProperty("鎵╁睍琛ㄥ悕绉�")
+    @ExcelProperty(value = "鎵╁睍琛ㄥ悕绉�",index = 9)
+    private String extendTableName;
+}
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/baseconfig/extendfrommanage/ImportExtendFormManageCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/baseconfig/extendfrommanage/ImportExtendFormManageCmd.java
new file mode 100644
index 00000000..4ce55650
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/baseconfig/extendfrommanage/ImportExtendFormManageCmd.java
@@ -0,0 +1,63 @@
+package com.seasky.projectplan.dto.baseconfig.extendfrommanage;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.seasky.core.ddd.base.BaseDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * 瀵煎叆 绉戠洰鎵╁睍琛ㄧ鐞哻md
+ *
+ * @author XueYawei
+ * @date 2021/08/13
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class ImportExtendFormManageCmd extends BaseDto {
+
+    @ApiModelProperty(value = "骞翠唤",example = "")
+    @ExcelProperty(value = "骞翠唤",index = 0)
+    private Integer year;
+
+    @ApiModelProperty("鎺掑簭缂栧彿")
+    @ExcelProperty(value = "鎺掑簭缂栧彿",index = 1)
+    private String rowNo;
+
+    @ApiModelProperty("灞炴€у悕绉�")
+    @ExcelProperty(value = "灞炴€у悕绉�",index = 2)
+    private String fileName;
+
+    @ApiModelProperty("鎵╁睍瀛楁缂栧彿")
+    @ExcelProperty(value = "鎵╁睍瀛楁缂栧彿",index = 3)
+    private String extendCode;
+
+    @ApiModelProperty("鎵╁睍瀛楁鍚嶇О")
+    @ExcelProperty(value = "鎵╁睍瀛楁鍚嶇О",index = 4)
+    private String extendName;
+
+    @ApiModelProperty("鎵╁睍绫诲瀷")
+    @ExcelProperty(value = "鎵╁睍绫诲瀷",index = 5)
+    private String extendType;
+
+    @ApiModelProperty("鏉ユ簮")
+    @ExcelProperty(value = "鏉ユ簮",index = 6)
+    private String source;
+
+    @ApiModelProperty("鏄惁姹囨€�")
+    @ExcelProperty(value = "鏄惁姹囨€�(0:涓嶆眹鎬�;1:姹囨€�)",index = 7)
+    private String isSum;
+
+    @ApiModelProperty("鏄惁寮€鍚�")
+    @ExcelProperty(value = "鏄惁寮€鍚�(濉� YES 鎴� NO)",index = 8)
+    private String isOpen;
+
+    @ApiModelProperty("鎵╁睍琛ㄥ悕绉�")
+    @ExcelProperty(value = "鎵╁睍琛ㄥ悕绉�",index = 9)
+    private String extendTableName;
+
+}
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/baseconfig/ExtendFromManageSvr.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/baseconfig/ExtendFromManageSvr.java
index affe3b66..4a4f825d 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/baseconfig/ExtendFromManageSvr.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/baseconfig/ExtendFromManageSvr.java
@@ -2,7 +2,10 @@ package com.seasky.projectplan.application.command.baseconfig;
 
 
 import com.seasky.projectplan.dto.baseconfig.extendfrommanage.ExtendFormManageCmd;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -21,4 +24,15 @@ public interface ExtendFromManageSvr {
     void openExtendFormManage(List<Long> ids);
 
     void closeExtendFormManage(List<Long> ids);
+
+    /**
+     * 瀵煎叆椤圭洰鐢虫姤涔�
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     * @param file     鏂囦欢
+     * @return {@link Object}
+     */
+    Object importExtendForm(HttpServletRequest request, HttpServletResponse response, MultipartFile file);
+
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/baseconfig/ExtendFromManageSvrImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/baseconfig/ExtendFromManageSvrImpl.java
index 1e8548f1..a8abe0fe 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/baseconfig/ExtendFromManageSvrImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/baseconfig/ExtendFromManageSvrImpl.java
@@ -1,15 +1,43 @@
 package com.seasky.projectplan.application.command.baseconfig;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.fastjson.JSONObject;
+import com.seasky.core.common.Error;
+import com.seasky.core.common.ResponseCode;
+import com.seasky.core.common.Result;
+import com.seasky.core.ddd.utils.MapperUtils;
+import com.seasky.core.exception.DataBusinessException;
+import com.seasky.core.util.EasyExcelUtil;
+import com.seasky.core.util.ExceptionUtil;
+import com.seasky.micro.basedata.dto.OrganizationDTO;
+import com.seasky.micro.basedata.dto.UserDTO;
 import com.seasky.projectplan.application.command.assembler.BaseConfigAssembler;
 import com.seasky.projectplan.domain.aggregate.baseConfig.BaseConfigAgg;
 import com.seasky.projectplan.domain.aggregate.baseConfig.BaseConfigRepository;
+import com.seasky.projectplan.domain.aggregate.budgetinfo.BudgetInfoAgg;
+import com.seasky.projectplan.domain.aggregate.common.PlanTypeEnum;
+import com.seasky.projectplan.domain.aggregate.projecttarget.ProjectTargetAgg;
 import com.seasky.projectplan.domain.service.DBaseConfigSvr;
 import com.seasky.projectplan.dto.baseconfig.extendfrommanage.ExtendFormManageCmd;
+import com.seasky.projectplan.dto.baseconfig.extendfrommanage.ImportExtendFormManageCmd;
+import com.seasky.projectplan.dto.projectplan.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 浠庣鐞唖vr impl
@@ -52,4 +80,47 @@ public class ExtendFromManageSvrImpl implements ExtendFromManageSvr {
         service.isOpenExtendFormManage(agg);
     }
 
+    /**
+     * 瀵煎叆 绉戠洰鎵╁睍琛ㄧ鐞�
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     * @param file     鏂囦欢
+     * @return {@link Object}
+     */
+    @Override
+    public Object importExtendForm(HttpServletRequest request, HttpServletResponse response, MultipartFile file) {
+        boolean flag = true;
+        List<ImportExtendFormManageCmd> importList = new ArrayList<>();
+
+        try {
+            //绉戠洰鎵╁睍琛ㄧ鐞�
+            importList = EasyExcelUtil.getList(ImportExtendFormManageCmd.class, file.getInputStream(), 0);
+        } catch (IOException e) {
+            throw ExceptionUtil.getException(null, "绉戠洰鎵╁睍琛ㄨ缃� 瀵煎叆澶辫触--鎻愬彇鏁版嵁閿欒");
+        }
+        //鎷艰淇濆瓨绉戠洰鎵╁睍琛ㄧ鐞嗕俊鎭叆鍙侺ist
+
+        List<ExtendFormManageCmd> saveCmdList = MapperUtils.INSTANCE.mapAsList(ExtendFormManageCmd.class, importList);
+        if (flag == false) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            response.reset();
+            response.setCharacterEncoding("UTF-8");
+            response.setContentType("application/x-download");
+            try{
+                String fileName = URLEncoder.encode("绉戠洰鎵╁睍琛ㄨ缃鍏ラ敊璇枃妗d笅杞�","UTF-8");
+                response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
+                ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
+                WriteSheet writeSheet = EasyExcel.writerSheet(0,"绉戠洰鎵╁睍琛ㄨ缃�").head(InfoImportCmd.class).build();
+                excelWriter.write(saveCmdList,writeSheet);
+                excelWriter.finish();
+            }catch (IOException e){
+                throw ExceptionUtil.getException(null,"绉戠洰鎵╁睍琛ㄨ缃鍏ラ敊璇師鍥� 涓嬭浇澶辫触锛�");
+            }
+        }else {
+            saveExtendFormManage(saveCmdList);
+        }
+        return 1;
+    }
+
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/quotamanage/QuotaManageSvr.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/quotamanage/QuotaManageSvr.java
index 67db4d2f..8be2fe9b 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/quotamanage/QuotaManageSvr.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/quotamanage/QuotaManageSvr.java
@@ -30,7 +30,7 @@ public interface QuotaManageSvr {
     Integer initProjectDeptDaily(QuotaManageCmd cmd);
 
     /**
-     * 鍒濆鍖栭儴闂� 椤圭洰缁忚垂瀹氶 
+     * 鍒濆鍖栭儴闂� 椤圭洰缁忚垂瀹氶
      *
      * @param cmd cmd
      * @return {@link Result<Integer>}
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/query/baseconfig/BaseConfigQuerySvr.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/query/baseconfig/BaseConfigQuerySvr.java
index 0197c599..a06ade29 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/query/baseconfig/BaseConfigQuerySvr.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/query/baseconfig/BaseConfigQuerySvr.java
@@ -13,6 +13,7 @@ import com.seasky.projectplan.dto.baseconfig.informationtype.InformationTypeQry;
 import com.seasky.projectplan.dto.baseconfig.informationtype.InformationTypeTree1;
 import com.seasky.projectplan.dto.baseconfig.personfund.PersonFundOut;
 import com.seasky.projectplan.dto.baseconfig.personfund.PersonFundQry;
+import com.seasky.projectplan.dto.projectplan.ProjectInfoPlanQry;
 import org.springframework.validation.annotation.Validated;
 
 import javax.servlet.http.HttpServletRequest;
@@ -66,6 +67,23 @@ public interface BaseConfigQuerySvr {
     Integer queryConfigYearByType(String type);
 
 
+    /**
+     * 瀵煎嚭
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     * @param qry      qry
+     */
+    void exportExtendForm(HttpServletRequest request, HttpServletResponse response, ExtendFormManageQry qry);
+
+    /**
+     * 椤圭洰鐢虫姤涔︽ā鏉夸笅杞�
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     */
+    void downLoadExtendFormTemplate(HttpServletRequest request, HttpServletResponse response);
+
 
 
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ExtendFromManageMapper.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ExtendFromManageMapper.java
index 693296cb..916fa055 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ExtendFromManageMapper.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ExtendFromManageMapper.java
@@ -26,6 +26,7 @@ public interface ExtendFromManageMapper extends BaseMapper<ExtendFormManagePo> {
     List<ExtendFormManagePo> selectByIds(@Param("pm") List<Long> ids);
 
     Page<ExtendFormManagePo> queryExtendFormPage(Page<ExtendFormManageOut> page,@Param("pm") ExtendFormManageQry qry);
+    List<ExtendFormManagePo> queryExtendFormPage(@Param("pm") ExtendFormManageQry qry);
 
     List<ExtendFormManagePo> queryExtendFormByTable(@Param("extendName")String extendName);
 
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/baseconfig/BaseConfigQuerySvrImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/baseconfig/BaseConfigQuerySvrImpl.java
index a3e8afc3..7e6f113a 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/baseconfig/BaseConfigQuerySvrImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/baseconfig/BaseConfigQuerySvrImpl.java
@@ -1,13 +1,19 @@
 package com.seasky.projectplan.infrastructure.reader.baseconfig;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.seasky.core.common.Error;
 import com.seasky.core.common.Pagination;
 import com.seasky.core.common.ResponseCode;
+import com.seasky.core.ddd.utils.MapperUtils;
 import com.seasky.core.exception.DataAccessException;
 import com.seasky.core.exception.DataVerifyException;
+import com.seasky.core.util.ExceptionUtil;
 import com.seasky.micro.basedata.api.IUser;
 import com.seasky.micro.basedata.dto.OrganizationDTO;
 import com.seasky.projectplan.application.query.baseconfig.BaseConfigQuerySvr;
@@ -18,15 +24,20 @@ import com.seasky.projectplan.dto.baseconfig.budgetswitch.BudgetSwitchQry;
 import com.seasky.projectplan.dto.baseconfig.budgetswitch.DeptSwitchOut;
 import com.seasky.projectplan.dto.baseconfig.devicetype.DeviceTypeOut;
 import com.seasky.projectplan.dto.baseconfig.devicetype.DeviceTypeQry;
+import com.seasky.projectplan.dto.baseconfig.extendfrommanage.ExportExtendFormManageOut;
 import com.seasky.projectplan.dto.baseconfig.extendfrommanage.ExtendFormManageOut;
 import com.seasky.projectplan.dto.baseconfig.extendfrommanage.ExtendFormManageQry;
+import com.seasky.projectplan.dto.baseconfig.extendfrommanage.ImportExtendFormManageCmd;
 import com.seasky.projectplan.dto.baseconfig.informationtype.InformationTypeOut;
 import com.seasky.projectplan.dto.baseconfig.informationtype.InformationTypeQry;
 import com.seasky.projectplan.dto.baseconfig.informationtype.InformationTypeTree1;
 import com.seasky.projectplan.dto.baseconfig.personfund.PersonFundOut;
 import com.seasky.projectplan.dto.baseconfig.personfund.PersonFundQry;
+import com.seasky.projectplan.dto.projectplan.*;
+import com.seasky.projectplan.infrastructure.dataobject.co.ProjectInfoPlanDo;
 import com.seasky.projectplan.infrastructure.dataobject.po.*;
 import com.seasky.projectplan.infrastructure.db.mapper.table.*;
+import com.seasky.projectplan.infrastructure.reader.projectplan.ProjectPlanQueryConvert;
 import org.springframework.stereotype.Repository;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
@@ -35,6 +46,8 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.io.IOException;
+import java.net.URLEncoder;
 import java.util.*;
 
 /**
@@ -253,5 +266,57 @@ public class BaseConfigQuerySvrImpl implements BaseConfigQuerySvr {
         }
     }
 
+    /**
+     * 瀵煎嚭绉戠洰鎵╁睍琛ㄨ缃�
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     * @param qry      qry
+     */
+    @Override
+    public void exportExtendForm(HttpServletRequest request, HttpServletResponse response, ExtendFormManageQry qry) {
+        List<ExtendFormManagePo> poList = extendFromManageMapper.queryExtendFormPage(qry);
+        if (poList == null ){
+            throw new DataAccessException(new Error(ResponseCode.DATA_ACCESS_NOT_FOUND, null, "鏃犲彲瀵煎嚭绉戠洰鎵╁睍琛ㄨ缃�", ""));
+        }
+        List<ExtendFormManageOut> outList = BaseConfigReaderConvert.toExtendFromManageOutList(poList);
+        List<ExportExtendFormManageOut> exportExtendFormManageOutList = MapperUtils.INSTANCE.mapAsList(ExportExtendFormManageOut.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(),ExportExtendFormManageOut.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("绉戠洰鎵╁睍琛ㄨ缃�").doWrite(exportExtendFormManageOutList);
+        }catch (IOException e){
+            throw ExceptionUtil.getException(null,"瀵煎嚭绉戠洰鎵╁睍琛ㄨ缃け璐ワ紒");
+        }
+    }
+
+    /**
+     * 涓嬭浇绉戠洰鎵╁睍琛ㄨ缃ā鏉�
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     */
+    @Override
+    public void downLoadExtendFormTemplate(HttpServletRequest request, HttpServletResponse response) {
+
+        List<ImportExtendFormManageCmd> importExtendFormManageCmds = new ArrayList<>();
+        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");
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
+            WriteSheet writeSheet = EasyExcel.writerSheet(0,"绉戠洰鎵╁睍琛ㄨ缃�").head(ImportExtendFormManageCmd.class).build();
+            excelWriter.write(importExtendFormManageCmds,writeSheet);
+            excelWriter.finish();
+        }catch (IOException e){
+            throw ExceptionUtil.getException(null,"绉戠洰鎵╁睍琛ㄨ缃ā鏉夸笅杞藉け璐ワ紒");
+        }
+    }
+
 
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/BaseConfigController.java b/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/BaseConfigController.java
index 7a556468..1a23a6c8 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/BaseConfigController.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/BaseConfigController.java
@@ -23,11 +23,14 @@ import com.seasky.projectplan.dto.baseconfig.informationtype.InformationTypeTree
 import com.seasky.projectplan.dto.baseconfig.personfund.PersonFundCmd;
 import com.seasky.projectplan.dto.baseconfig.personfund.PersonFundOut;
 import com.seasky.projectplan.dto.baseconfig.personfund.PersonFundQry;
+import com.seasky.projectplan.dto.projectplan.ProjectInfoPlanQry;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -181,6 +184,47 @@ public class BaseConfigController implements IBaseConfigController {
         return ok(ResponseCode.SUCCESS, baseConfigQuerySvr.queryExtendFormPage(qry));
     }
 
+    /**
+     * 涓嬭浇绉戠洰鎵╁睍琛ㄨ缃ā鏉�
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     */
+    @Override
+    @ApiOperation("2.涓嬭浇绉戠洰鎵╁睍琛ㄨ缃ā鏉�")
+    public void downLoadExtendFormTemplate(HttpServletRequest request, HttpServletResponse response) {
+        baseConfigQuerySvr.downLoadExtendFormTemplate(request,response);
+    }
+
+    /**
+     * 瀵煎叆绉戠洰鎵╁睍琛ㄨ缃�
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     * @param file     鏂囦欢
+     * @return {@link Result<Object>}
+     */
+    @Override
+    @ApiOperation("2.瀵煎叆绉戠洰鎵╁睍琛ㄨ缃�")
+    public Result<Object> importExtendForm(HttpServletRequest request, HttpServletResponse response, MultipartFile file) {
+        extendFromManageSvr.importExtendForm(request,response,file);
+        return ok(ResponseCode.SUCCESS);
+    }
+
+    /**
+     * 瀵煎嚭绉戠洰鎵╁睍琛ㄨ缃�
+     *
+     * @param request  璇锋眰
+     * @param response 鍝嶅簲
+     * @param qry      qry
+     */
+    @Override
+    @ApiOperation("2.瀵煎嚭绉戠洰鎵╁睍琛ㄨ缃�")
+    public void exportExtendForm(HttpServletRequest request, HttpServletResponse response, ExtendFormManageQry qry) {
+        baseConfigQuerySvr.exportExtendForm(request,response,qry);
+    }
+
+
     @ApiOperation("2.鏍规嵁鎵╁睍琛ㄨ幏鍙栨墍鏈夌浉鍏崇殑淇℃伅")
     @Override
     public Result<ExtendFormManageOut> queryExtendFormByTable(@RequestParam("extendName") String extendName) {
-- 
GitLab