From 4083cd64d9404f9b28b4f6d3ec9b4417ae445ef7 Mon Sep 17 00:00:00 2001
From: XLR_asd <xueyawei@seaskysh.com>
Date: Wed, 28 Jul 2021 17:34:11 +0800
Subject: [PATCH 1/4] =?UTF-8?q?fix=20=20=E9=A1=B9=E7=9B=AE=E7=94=B3?=
 =?UTF-8?q?=E6=8A=A5=E4=B9=A6=E5=AF=BC=E5=85=A5=E6=A8=A1=E7=89=88=E5=BB=BA?=
 =?UTF-8?q?=E7=AB=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../dto/projectplan/InfoImportCmd.java        | 55 ++++++-----------
 .../dto/projectplan/PlanSubjectImportCmd.java | 60 +++++++++++++++++++
 .../projectplan/ProjectTargetImportCmd.java   | 52 ++++++++++++++++
 .../projectplan/ProjectPlanSvrImpl.java       |  1 +
 .../projectplan/ProjectPlanQueryService.java  |  2 +-
 .../ProjectPlanQueryServiceImpl.java          | 17 +++++-
 6 files changed, 148 insertions(+), 39 deletions(-)
 create mode 100644 ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java
 create mode 100644 ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java

diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
index f1689f179..3da3bba10 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
@@ -23,24 +23,28 @@ import java.math.BigDecimal;
 @EqualsAndHashCode(callSuper = true)
 public class InfoImportCmd extends BaseDto {
 
+    @ApiModelProperty(value = "搴忓彿",example = "")
+    @ExcelProperty(value = "搴忓彿", index = 0)
+    private String index;
+
     @ApiModelProperty(value = "骞翠唤",example = "")
-    @ExcelProperty(value = "骞翠唤",index=0)
+    @ExcelProperty(value = "骞翠唤",index=1)
     private Integer year;
 
     @ApiModelProperty(value = "椤圭洰鍚嶇О",example = "")
-    @ExcelProperty(value = "椤圭洰鍚嶇О",index=1)
+    @ExcelProperty(value = "椤圭洰鍚嶇О",index=2)
     private String projectName;
 
     @ApiModelProperty(value = "閮ㄩ棬鍚嶇О",example = "")
-    @ExcelProperty(value = "閮ㄩ棬鍚嶇О",index=2)
+    @ExcelProperty(value = "閮ㄩ棬鍚嶇О",index=3)
     private String departmentName;
 
     @ApiModelProperty(value = "閮ㄩ棬缂栧彿",example = "")
-    @ExcelProperty(value = "閮ㄩ棬缂栧彿",index=3)
+    @ExcelProperty(value = "閮ㄩ棬缂栧彿",index=4)
     private String departmentCode;
 
     @ApiModelProperty(value = "璐熻矗浜� id",example = "")
-    @ExcelProperty(value = "璐熻矗浜� id",index=4)
+    //TODO  鏍规嵁 璐熻矗浜哄悕绉板拰缂栧彿 璧嬪€糹d
     private Long projectLeaderId;
 
     @ApiModelProperty(value = "璐熻矗浜� 鍚嶇О",example = "")
@@ -51,52 +55,31 @@ public class InfoImportCmd extends BaseDto {
     @ExcelProperty(value = "璐熻矗浜虹紪鍙�",index=6)
     private String projectLeaderCode;
 
-    @ApiModelProperty(value = "娴佺▼id",example = "")
-    @ExcelProperty(value = "娴佺▼id",index=7)
-    private Long flowId;
-
-    @ApiModelProperty(value = "娴佺▼绫诲瀷",example = "")
-    @ExcelProperty(value = "娴佺▼绫诲瀷",index=8)
-    private String flowType;
-
-    @ApiModelProperty(value = "鏍稿畾閲戦",example = "")
-    @ExcelProperty(value = "鏍稿畾閲戦",index=9)
-    private BigDecimal quotaMoney = new BigDecimal("0");
-
-    @ApiModelProperty(value = "瀹℃牳鐘舵€�",example = "")
-    @ExcelProperty(value = "瀹℃牳鐘舵€�",index=10)
-    private String state;
-
-    @NotEmpty(message = "鐢虫姤涔︾被鍨嬩笉鑳戒负绌�")
     @ApiModelProperty(value = "鐢虫姤涔︾被鍨�",example = "")
-    @ExcelProperty(value = "鐢虫姤涔︾被鍨� (XIANGMUKU,YISHANG,ERSHANG)",index=11)
+    //TODO  榛樿 XIANGMUKU
     private String planType;
 
-    @ApiModelProperty(value = "鍏宠仈鐨勯」鐩簱 id",example = "")
-    @ExcelProperty(value = "鍏宠仈鐨勯」鐩簱 id",index=12)
-    private Long projectLibraryId;
-
 //    summaryJson; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 //    summaryJson: "{\"basis\":\"5498\",\"terminfo\":\"456453\",\"plan\":\"4532453\",\"budget\":\"4534\"}"
     @ApiModelProperty(value = "椤圭洰鍐呭璇ユ暟鍙婂叿浣撳疄鏂藉唴瀹�",example = "")
-    @ExcelProperty(value = "椤圭洰鍐呭璇ユ暟鍙婂叿浣撳疄鏂藉唴瀹�",index=13)
+    @ExcelProperty(value = "椤圭洰鍐呭璇ユ暟鍙婂叿浣撳疄鏂藉唴瀹�",index=7)
     private String basis;
     @ApiModelProperty(value = "椤圭洰绔嬮」渚濇嵁(瑙勫垝璁″垝銆侀儴闂ㄨ亴璐c€佹斂绛栨硶瑙勭瓑)",example = "")
-    @ExcelProperty(value = "椤圭洰绔嬮」渚濇嵁(瑙勫垝璁″垝銆侀儴闂ㄨ亴璐c€佹斂绛栨硶瑙勭瓑)",index=14)
+    @ExcelProperty(value = "椤圭洰绔嬮」渚濇嵁(瑙勫垝璁″垝銆侀儴闂ㄨ亴璐c€佹斂绛栨硶瑙勭瓑)",index=8)
     private String terminfo;
     @ApiModelProperty(value = "椤圭洰绔嬮」鐨勫繀瑕佹€у拰鍙鎬�(椤圭洰鍩虹鏉′欢鍙婂墠鏈熷伐浣溿€佺鐞嗗埗搴︿笌淇濋殰鎺柦绛�)",example = "")
-    @ExcelProperty(value = "椤圭洰绔嬮」鐨勫繀瑕佹€у拰鍙鎬�(椤圭洰鍩虹鏉′欢鍙婂墠鏈熷伐浣溿€佺鐞嗗埗搴︿笌淇濋殰鎺柦绛�)",index=15)
+    @ExcelProperty(value = "椤圭洰绔嬮」鐨勫繀瑕佹€у拰鍙鎬�(椤圭洰鍩虹鏉′欢鍙婂墠鏈熷伐浣溿€佺鐞嗗埗搴︿笌淇濋殰鎺柦绛�)",index=9)
     private String plan;
     @ApiModelProperty(value = "椤圭洰鎵ц鍙婅祫閲戜娇鐢ㄨ鍒�",example = "")
-    @ExcelProperty(value = "椤圭洰鎵ц鍙婅祫閲戜娇鐢ㄨ鍒�(缁嗗寲鍒版湀浠�)",index=16)
+    @ExcelProperty(value = "椤圭洰鎵ц鍙婅祫閲戜娇鐢ㄨ鍒�(缁嗗寲鍒版湀浠�)",index=10)
     private String budget;
 
     @ApiModelProperty(value = "椤圭洰绫诲瀷",example = "")
-    @ExcelProperty(value = "椤圭洰绫诲瀷",index=17)
+    @ExcelProperty(value = "椤圭洰绫诲瀷",index=11)
     private String projectType;
 
     @ApiModelProperty(value = "椤圭洰绫诲瀷id",example = "")
-    @ExcelProperty(value = "椤圭洰绫诲瀷id",index=18)
+    //TODO  鏍规嵁椤圭洰绫诲瀷 鏌ュ嚭鍏秈d
     private Long projectTypeId;
 
     // + 缁╂晥淇℃伅
@@ -105,15 +88,15 @@ public class InfoImportCmd extends BaseDto {
 //    summaryJson: "{\"projectType\":2,\"yearGoal\":\"123456\",\"projectGoal\":\"12345\"}"
 
     @ApiModelProperty(value = "椤圭洰绫诲埆(缁忓父鎬ч」鐩�,涓€娆℃€ч」鐩�)",example = "")
-    @ExcelProperty(value = "椤圭洰绫诲埆(缁忓父鎬ч」鐩�,涓€娆℃€ч」鐩�)",index=19)
+    @ExcelProperty(value = "椤圭洰绫诲埆(缁忓父鎬ч」鐩�,涓€娆℃€ч」鐩�)",index=12)
     private String targetProjectType;
 
     @ApiModelProperty(value = "骞村害鐩爣",example = "")
-    @ExcelProperty(value = "骞村害鐩爣",index=20)
+    @ExcelProperty(value = "骞村害鐩爣",index=13)
     private String yearGoal;
 
     @ApiModelProperty(value = "椤圭洰鎬荤洰鏍�(璺ㄥ勾椤圭洰)",example = "")
-    @ExcelProperty(value = "椤圭洰鎬荤洰鏍�(璺ㄥ勾椤圭洰)",index=21)
+    @ExcelProperty(value = "椤圭洰鎬荤洰鏍�(璺ㄥ勾椤圭洰)",index=14)
     private String projectGoal;
 
 
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java
new file mode 100644
index 000000000..2c4ac24db
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java
@@ -0,0 +1,60 @@
+package com.seasky.projectplan.dto.projectplan;
+
+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;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 缁忔祹绉戠洰 瀵煎叆cmd
+ *
+ * @author XueYawei
+ * @date 2021/07/28
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class PlanSubjectImportCmd extends BaseDto {
+
+    @ApiModelProperty(value = "鐢虫姤涔﹀簭鍙�",example = "")
+    @ExcelProperty(value = "鐢虫姤涔﹀簭鍙�", index = 0)
+    private String index;
+
+    @ApiModelProperty(value = "鏄庣粏鍐呭",example = "")
+    @ExcelProperty(value = "鏄庣粏鍐呭", index = 1)
+    private String subjectContent;
+
+    @ApiModelProperty(value = "鏁伴噺",example = "")
+    @ExcelProperty(value = "鏁伴噺", index = 2)
+    private Integer number;
+
+    @ApiModelProperty(value = "鍗曚环",example = "")
+    @ExcelProperty(value = "鍗曚环", index = 3)
+    private BigDecimal price;
+
+    @ApiModelProperty(value = "閲戦",example = "")
+    @ExcelProperty(value = "閲戦", index =4)
+    private BigDecimal subtotal;
+
+//    @ApiModelProperty(value = "鍏朵粬鍐呭 json",example = "")
+//    private String otherJson;
+//    otherJson: "{\"fundDescribe\":\"鍙嶆槧鍗曚綅鍏敤鎴垮眿銆佸缓绛戠墿鍙婂叾闄勫睘璁惧鐨勭淮淇垂銆俓",\"orgPurchase\":\"1222\",\"moneyFrom\":\"13333\"}"
+
+    @ApiModelProperty(value = "鏀垮簻閲囪喘",example = "")
+    @ExcelProperty(value = "鏀垮簻閲囪喘", index = 5)
+    private String orgPurchase;
+
+    @ApiModelProperty(value = "璧勯噾鏉ユ簮",example = "")
+    @ExcelProperty(value = "璧勯噾鏉ユ簮", index = 6)
+    private String moneyFrom;
+
+
+}
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
new file mode 100644
index 000000000..98154c245
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
@@ -0,0 +1,52 @@
+package com.seasky.projectplan.dto.projectplan;
+
+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;
+
+/**
+ * 椤圭洰缁╂晥鎸囨爣 瀵煎叆cmd
+ *
+ * @author XueYawei
+ * @date 2021/07/28
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class ProjectTargetImportCmd extends BaseDto {
+
+    @ApiModelProperty(value = "鏍圭骇+鏈骇 id",example = "")
+    private String one;
+    @ApiModelProperty(value = "鏍圭骇 id",example = "")
+    private String oneValue;
+    @ApiModelProperty(value = "鏈骇 id",example = "")
+    private String towValue;
+
+
+    @ApiModelProperty(value = "鐢虫姤涔﹀簭鍙�",example = "")
+    @ExcelProperty(value = "鐢虫姤涔﹀簭鍙�", index = 0)
+    private String index;
+
+    @ApiModelProperty(value = "鏍圭骇 name",example = "")
+    @ExcelProperty(value = "涓€绾ф寚鏍囧悕绉�",index=1)
+    private String oneName;
+
+    @ApiModelProperty(value = "鏈骇 name",example = "")
+    @ExcelProperty(value = "浜岀骇鎸囨爣鍚嶇О",index=2)
+    private String two;
+
+    @ApiModelProperty(value = "涓夌骇鎸囨爣",example = "")
+    @ExcelProperty(value = "涓夌骇鎸囨爣",index=3)
+    private String three;
+
+    @ApiModelProperty(value = "骞村害鎸囨爣鍊�",example = "")
+    @ExcelProperty(value = "骞村害鎸囨爣鍊�",index=4)
+    private String yearTarget;
+
+
+}
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
index 7975f8a15..10df43da2 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
@@ -338,6 +338,7 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object importInfoPlan(HttpServletRequest request, HttpServletResponse response, MultipartFile file) {
+
 //        List<FundingImportCmd> list ;
 //        boolean flag = true;
 //        try {
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 e1347b28a..faef400a0 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
@@ -153,7 +153,7 @@ public interface ProjectPlanQueryService extends BaseService<ProjectPlanBookPo>
     void exportPersonProjectPlanByCurrentUserDept(HttpServletRequest request, HttpServletResponse response, ProjectPersonPlanQry projectPersonPlanQry);
 
     /**
-     * 涓嬪姞杞芥ā鏉�
+     * 椤圭洰鐢虫姤涔︽ā鏉夸笅杞�
      *
      * @param request  璇锋眰
      * @param response 鍝嶅簲
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 cbc2eab7b..74bf30924 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
@@ -2,6 +2,8 @@ package com.seasky.projectplan.infrastructure.reader.projectplan;
 
 import cn.hutool.core.util.ObjectUtil;
 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.extension.plugins.pagination.Page;
@@ -611,17 +613,28 @@ public class ProjectPlanQueryServiceImpl extends AbstractService<ProjectPlanBook
      */
     @Override
     public void downLoadInfoTemplate(HttpServletRequest request, HttpServletResponse response) {
-        List<InfoImportCmd> infoImportCmds = new ArrayList<>();
+
+        List<InfoImportCmd> infoImportCmdList = new ArrayList<>();
+        List<ProjectTargetImportCmd> projectTargetImportCmdList = new ArrayList<>();
+        List<PlanSubjectImportCmd> planSubjectImportCmdList = 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");
-            EasyExcel.write(response.getOutputStream(),InfoImportCmd.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("椤圭洰鐢虫姤涔�").doWrite(infoImportCmds);
+            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
+            WriteSheet writeSheet = EasyExcel.writerSheet(0,"椤圭洰鐢崇粡璐规姤涔�").head(InfoImportCmd.class).build();
+            excelWriter.write(infoImportCmdList,writeSheet);
+            writeSheet = EasyExcel.writerSheet(1,"缁╂晥鎸囨爣").head(ProjectTargetImportCmd.class).build();
+            excelWriter.write(projectTargetImportCmdList,writeSheet);
+            writeSheet = EasyExcel.writerSheet(2,"缁忔祹绉戠洰").head(PlanSubjectImportCmd.class).build();
+            excelWriter.write(planSubjectImportCmdList,writeSheet);
+            excelWriter.finish();
         }catch (IOException e){
             throw ExceptionUtil.getException(null,"椤圭洰鐢虫姤涔︽ā鏉夸笅杞藉け璐ワ紒");
         }
+
     }
 
     public Integer queryConfigYearByType(String type) {
-- 
GitLab


From 8f21d254240450ab72d37c27ed3096c6e05729a5 Mon Sep 17 00:00:00 2001
From: XLR_asd <xueyawei@seaskysh.com>
Date: Thu, 29 Jul 2021 12:00:47 +0800
Subject: [PATCH 2/4] =?UTF-8?q?fix=20=20=E5=AF=BC=E5=85=A5=E9=A1=B9?=
 =?UTF-8?q?=E7=9B=AE=E7=94=B3=E6=8A=A5=E4=B9=A6=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../dto/projectplan/InfoImportCmd.java        |  12 +-
 .../projectplan/ProjectTargetImportCmd.java   |  14 +-
 .../projectplan/ProjectPlanSvrImpl.java       | 120 ++++++++++++------
 3 files changed, 92 insertions(+), 54 deletions(-)

diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
index 3da3bba10..072f8386e 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
@@ -43,9 +43,9 @@ public class InfoImportCmd extends BaseDto {
     @ExcelProperty(value = "閮ㄩ棬缂栧彿",index=4)
     private String departmentCode;
 
-    @ApiModelProperty(value = "璐熻矗浜� id",example = "")
+//    @ApiModelProperty(value = "璐熻矗浜� id",example = "")
     //TODO  鏍规嵁 璐熻矗浜哄悕绉板拰缂栧彿 璧嬪€糹d
-    private Long projectLeaderId;
+//    private Long projectLeaderId;
 
     @ApiModelProperty(value = "璐熻矗浜� 鍚嶇О",example = "")
     @ExcelProperty(value = "璐熻矗浜� 鍚嶇О",index=5)
@@ -55,9 +55,9 @@ public class InfoImportCmd extends BaseDto {
     @ExcelProperty(value = "璐熻矗浜虹紪鍙�",index=6)
     private String projectLeaderCode;
 
-    @ApiModelProperty(value = "鐢虫姤涔︾被鍨�",example = "")
+//    @ApiModelProperty(value = "鐢虫姤涔︾被鍨�",example = "")
     //TODO  榛樿 XIANGMUKU
-    private String planType;
+//    private String planType;
 
 //    summaryJson; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 //    summaryJson: "{\"basis\":\"5498\",\"terminfo\":\"456453\",\"plan\":\"4532453\",\"budget\":\"4534\"}"
@@ -78,9 +78,9 @@ public class InfoImportCmd extends BaseDto {
     @ExcelProperty(value = "椤圭洰绫诲瀷",index=11)
     private String projectType;
 
-    @ApiModelProperty(value = "椤圭洰绫诲瀷id",example = "")
+//    @ApiModelProperty(value = "椤圭洰绫诲瀷id",example = "")
     //TODO  鏍规嵁椤圭洰绫诲瀷 鏌ュ嚭鍏秈d
-    private Long projectTypeId;
+//    private Long projectTypeId;
 
     // + 缁╂晥淇℃伅
 //    subOtherArrayJson: "[{\"oneValue\":\"1412943787541913601\",\"twoValue\":\"1412944927906062338\",
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
index 98154c245..46ec9d817 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
@@ -19,13 +19,13 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 @EqualsAndHashCode(callSuper = true)
 public class ProjectTargetImportCmd extends BaseDto {
-
-    @ApiModelProperty(value = "鏍圭骇+鏈骇 id",example = "")
-    private String one;
-    @ApiModelProperty(value = "鏍圭骇 id",example = "")
-    private String oneValue;
-    @ApiModelProperty(value = "鏈骇 id",example = "")
-    private String towValue;
+//
+//    @ApiModelProperty(value = "鏍圭骇+鏈骇 id",example = "")
+//    private String one;
+//    @ApiModelProperty(value = "鏍圭骇 id",example = "")
+//    private String oneValue;
+//    @ApiModelProperty(value = "鏈骇 id",example = "")
+//    private String towValue;
 
 
     @ApiModelProperty(value = "鐢虫姤涔﹀簭鍙�",example = "")
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
index 10df43da2..04436da2a 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
@@ -38,15 +38,14 @@ import com.seasky.projectplan.domain.aggregate.projectlibrary.ProjectLibraryAgg;
 import com.seasky.projectplan.domain.aggregate.projectpersonplan.ProjectPersonPlanAgg;
 import com.seasky.projectplan.domain.aggregate.projectpersonplan.ProjectPersonRepository;
 import com.seasky.projectplan.domain.aggregate.projectplanbase.ProjectPlanBaseAgg;
+import com.seasky.projectplan.domain.aggregate.projecttarget.ProjectTargetAgg;
+import com.seasky.projectplan.domain.aggregate.projecttarget.ProjectTargetRepository;
 import com.seasky.projectplan.domain.service.*;
 import com.seasky.projectplan.dto.FacultyStaff.FacultyStaffOut;
 import com.seasky.projectplan.dto.baseconfig.budgetswitch.BudgetSwitchOut;
 import com.seasky.projectplan.dto.baseconfig.budgetswitch.BudgetSwitchQry;
 import com.seasky.projectplan.dto.collegeclasses.CollegeClassesOut;
-import com.seasky.projectplan.dto.projectplan.ActionFlowCmd;
-import com.seasky.projectplan.dto.projectplan.PlanBookBasicInformationOut;
-import com.seasky.projectplan.dto.projectplan.PlanBookBasicInformationQry;
-import com.seasky.projectplan.dto.projectplan.ProjectPlanBookCmd;
+import com.seasky.projectplan.dto.projectplan.*;
 import com.seasky.projectplan.dto.schoolStudentInformation.SchoolStudentInformationOut;
 import com.seasky.projectplan.infrastructure.dataobject.po.*;
 import com.seasky.projectplan.infrastructure.db.mapper.table.*;
@@ -115,6 +114,9 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
     @Resource
     private BudgetInfoRepository budgetInfoRepository;
 
+    @Resource
+    private ProjectTargetRepository projectTargetRepository;
+
     @Resource
     BudgetSwitchMapper budgetSwitchMapper;
 
@@ -338,44 +340,80 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object importInfoPlan(HttpServletRequest request, HttpServletResponse response, MultipartFile file) {
+        List<InfoImportCmd> infoList = new ArrayList<>();
+        List<ProjectTargetImportCmd> targetList = new ArrayList<>();
+        List<PlanSubjectImportCmd> subjectList = new ArrayList<>();
+
+        try {
+            //椤圭洰鐢虫姤涔�
+            infoList = EasyExcelUtil.getList(InfoImportCmd.class, file.getInputStream(), 0);
+            //缁╂晥鎸囨爣
+            targetList = EasyExcelUtil.getList(ProjectTargetImportCmd.class, file.getInputStream(), 1);
+            //缁忔祹绉戠洰
+            subjectList = EasyExcelUtil.getList(PlanSubjectImportCmd.class, file.getInputStream(), 2);
+        } catch (IOException e) {
+            throw ExceptionUtil.getException(null, "椤圭洰鐢虫姤涔� 瀵煎叆澶辫触--鎻愬彇鏁版嵁閿欒");
+        }
+        //鎷艰椤圭洰鐢虫姤涔ist
+        List<ProjectPlanBookCmd> infoBookList = new ArrayList<>();
+        for (InfoImportCmd infoImportCmd : infoList) {
+            ProjectPlanBookCmd infoBookCmd = MapperUtils.INSTANCE.map(ProjectPlanBookCmd.class, infoImportCmd);
+            UserDTO userDTO = UserDTO.builder().build();
+            userDTO.setCode(infoImportCmd.getProjectLeaderCode());
+            userDTO.setName(infoImportCmd.getProjectLeaderName());
+            Result<UserDTO> userList = iUser.getUser(userDTO);
+            infoBookCmd.setProjectLeaderId(userList.getData().get(0).getId());
+            infoBookCmd.setPlanType(PlanTypeEnum.XIANGMUKU.name());
+            BudgetInfoAgg budgetInfoAgg = budgetInfoRepository.queryBudgetInfo(BudgetInfoAgg.builder().budgetName(infoImportCmd.getProjectType()).build());
+            infoBookCmd.setProjectTypeId(budgetInfoAgg.getId());
+            JSONObject summaryJson = new JSONObject();
+            summaryJson.put("basis",infoImportCmd.getBasis());
+            summaryJson.put("terminfo",infoImportCmd.getTerminfo());
+            summaryJson.put("plan",infoImportCmd.getPlan());
+            summaryJson.put("budget",infoImportCmd.getBudget());
+            infoBookCmd.setSummaryJson(summaryJson.toString());
+            //椤圭洰鐢虫姤涔� 缁╂晥鎸囨爣 targetList
+            ProjectTargetCmd projectTargetCmd = new ProjectTargetCmd();
+            JSONObject targetSummaryJson = new JSONObject();
+            targetSummaryJson.put("targetProjectType",infoImportCmd.getTargetProjectType());
+            targetSummaryJson.put("yearGoal",infoImportCmd.getYearGoal());
+            targetSummaryJson.put("projectGoal",infoImportCmd.getProjectGoal());
+            projectTargetCmd.setSummaryJson(targetSummaryJson.toString());
+            ProjectTargetImportCmd infoBookTarget = targetList.stream().filter(item ->item.getIndex().equals(infoImportCmd.getIndex())).findAny().orElse(null);
+            if (infoBookTarget != null) {
+                ProjectTargetAgg oneTarget = projectTargetRepository.queryProjectTarget(ProjectTargetAgg.builder().targetName(infoBookTarget.getOneName()).build());
+                ProjectTargetAgg towTarget = projectTargetRepository.queryProjectTarget(ProjectTargetAgg.builder().targetName(infoBookTarget.getTwo()).build());
+                String [] one = {oneTarget.getId().toString(),towTarget.getId().toString()};
+                JSONObject subOtherArrayJson = new JSONObject();
+                subOtherArrayJson.put("oneValue",oneTarget.getId().toString());
+                subOtherArrayJson.put("towValue",towTarget.getId().toString());
+                subOtherArrayJson.put("two",infoBookTarget.getTwo());
+                subOtherArrayJson.put("one",one);
+                subOtherArrayJson.put("three",infoBookTarget.getThree());
+                subOtherArrayJson.put("yearTarget",infoBookTarget.getYearTarget());
+                projectTargetCmd.setSubOtherArrayJson(subOtherArrayJson.toString());
+                infoBookCmd.setProjectTargetCmd(projectTargetCmd);
+            }
 
-//        List<FundingImportCmd> list ;
-//        boolean flag = true;
-//        try {
-//            list = EasyExcelUtil.getList(FundingImportCmd.class, file.getInputStream(), 0);
-//        } catch (IOException e) {
-//            throw ExceptionUtil.getException(null, "缁忚垂淇℃伅瀵煎叆澶辫触");
-//        }
-//        for (FundingImportCmd importCmd : list){
-//            try{
-//                fundingManageSvr.createFunding(FundingAssembler.buildListToFundingAgg(importCmd));
-//            }catch (DataAccessException e){
-//                importCmd.setRemark(e.getMessage());
-//                flag = false;
-//            }catch (MappingException e){
-//                importCmd.setRemark("棰勭畻骞村害瀛楁蹇呴』鏄暟瀛�");
-//                flag = false;
-//            }catch (NullPointerException e){
-//                importCmd.setRemark("闄ゅ娉ㄥ瓧娈靛閮戒笉鑳戒负绌�");
-//                flag = false;
-//            }catch (Exception e){
-//                importCmd.setRemark("瀵煎叆瀛楁鏍煎紡鏈夐敊璇�");
-//                flag = false;
-//            }
-//        }
-//        if (flag == false){
-//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//            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(),FundingImportCmd.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("缁忚垂淇℃伅绠$悊").doWrite(list);
-//            }catch (IOException ioe){
-//                throw ExceptionUtil.getException(null,"瀵煎嚭缁忚垂淇℃伅澶辫触锛�");
-//            }
-//        }
+            //椤圭洰鐢虫姤涔� 缁忔祹绉戠洰 subjectList
+            List<PlanSubjectImportCmd> infoBookSubjects = subjectList.stream().filter(i -> i.getIndex().equals(infoImportCmd.getIndex())).collect(Collectors.toList());
+            List<PlanSubjectCmd> planSubjectList = new ArrayList<>();
+            for (PlanSubjectImportCmd infoBookSubject : infoBookSubjects) {
+                PlanSubjectCmd subjectCmd = MapperUtils.INSTANCE.map(PlanSubjectCmd.class, infoBookSubject);
+                JSONObject otherJson = new JSONObject();
+                otherJson.put("fundDescribe","");
+                otherJson.put("orgPurchase",infoBookSubject.getOrgPurchase());
+                otherJson.put("moneyFrom",infoBookSubject.getMoneyFrom());
+                subjectCmd.setOtherJson(otherJson.toString());
+                planSubjectList.add(subjectCmd);
+            }
+            infoBookCmd.setPlanSubjectList(planSubjectList);
+            infoBookList.add(infoBookCmd);
+        }
+        for (ProjectPlanBookCmd planBookCmd : infoBookList) {
+            saveProjectInfoPlan(planBookCmd);
+        }
+        //缁勮 椤圭洰鐢虫姤涔︿繚瀛樺璞� 鎵ц淇濆瓨
         return 1;
     }
 
-- 
GitLab


From 191e4b94f17eee201bf6326020105d6db4e679dc Mon Sep 17 00:00:00 2001
From: XLR_asd <xueyawei@seaskysh.com>
Date: Thu, 29 Jul 2021 17:32:10 +0800
Subject: [PATCH 3/4] =?UTF-8?q?fix=20=20=E9=A1=B9=E7=9B=AE=E7=94=B3?=
 =?UTF-8?q?=E6=8A=A5=E4=B9=A6=E5=AF=BC=E5=85=A5=E6=8E=A5=E5=8F=A3=E4=BB=A3?=
 =?UTF-8?q?=E7=A0=81=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../dto/projectplan/InfoImportCmd.java        |  49 +++---
 .../dto/projectplan/PlanSubjectImportCmd.java |   4 +
 .../projectplan/ProjectTargetImportCmd.java   |   5 +
 .../projectplan/ProjectPlanSvrImpl.java       | 140 +++++++++++++-----
 .../budgetinfo/BudgetInfoRepository.java      |  12 ++
 .../db/mapper/table/BudgetInfoMapper.java     |   4 +
 .../budgetinfo/BudgetInfoRepositoryImpl.java  |  59 ++++++++
 7 files changed, 209 insertions(+), 64 deletions(-)

diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
index 072f8386e..7ba56bf58 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
@@ -27,78 +27,65 @@ public class InfoImportCmd extends BaseDto {
     @ExcelProperty(value = "搴忓彿", index = 0)
     private String index;
 
-    @ApiModelProperty(value = "骞翠唤",example = "")
-    @ExcelProperty(value = "骞翠唤",index=1)
-    private Integer year;
-
     @ApiModelProperty(value = "椤圭洰鍚嶇О",example = "")
-    @ExcelProperty(value = "椤圭洰鍚嶇О",index=2)
+    @ExcelProperty(value = "椤圭洰鍚嶇О",index=1)
     private String projectName;
 
     @ApiModelProperty(value = "閮ㄩ棬鍚嶇О",example = "")
-    @ExcelProperty(value = "閮ㄩ棬鍚嶇О",index=3)
+    @ExcelProperty(value = "閮ㄩ棬鍚嶇О",index=2)
     private String departmentName;
 
     @ApiModelProperty(value = "閮ㄩ棬缂栧彿",example = "")
-    @ExcelProperty(value = "閮ㄩ棬缂栧彿",index=4)
+    @ExcelProperty(value = "閮ㄩ棬缂栧彿",index=3)
     private String departmentCode;
 
-//    @ApiModelProperty(value = "璐熻矗浜� id",example = "")
-    //TODO  鏍规嵁 璐熻矗浜哄悕绉板拰缂栧彿 璧嬪€糹d
-//    private Long projectLeaderId;
-
     @ApiModelProperty(value = "璐熻矗浜� 鍚嶇О",example = "")
-    @ExcelProperty(value = "璐熻矗浜� 鍚嶇О",index=5)
+    @ExcelProperty(value = "璐熻矗浜� 鍚嶇О",index=4)
     private String projectLeaderName;
 
     @ApiModelProperty(value = "璐熻矗浜虹紪鍙�",example = "")
-    @ExcelProperty(value = "璐熻矗浜虹紪鍙�",index=6)
+    @ExcelProperty(value = "璐熻矗浜虹紪鍙�",index=5)
     private String projectLeaderCode;
 
-//    @ApiModelProperty(value = "鐢虫姤涔︾被鍨�",example = "")
-    //TODO  榛樿 XIANGMUKU
-//    private String planType;
-
 //    summaryJson; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 //    summaryJson: "{\"basis\":\"5498\",\"terminfo\":\"456453\",\"plan\":\"4532453\",\"budget\":\"4534\"}"
-    @ApiModelProperty(value = "椤圭洰鍐呭璇ユ暟鍙婂叿浣撳疄鏂藉唴瀹�",example = "")
-    @ExcelProperty(value = "椤圭洰鍐呭璇ユ暟鍙婂叿浣撳疄鏂藉唴瀹�",index=7)
+    @ApiModelProperty(value = "椤圭洰鍐呭姒傝堪鍙婂叿浣撳疄鏂藉唴瀹� ",example = "")
+    @ExcelProperty(value = "椤圭洰鍐呭姒傝堪鍙婂叿浣撳疄鏂藉唴瀹�",index=6)
     private String basis;
     @ApiModelProperty(value = "椤圭洰绔嬮」渚濇嵁(瑙勫垝璁″垝銆侀儴闂ㄨ亴璐c€佹斂绛栨硶瑙勭瓑)",example = "")
-    @ExcelProperty(value = "椤圭洰绔嬮」渚濇嵁(瑙勫垝璁″垝銆侀儴闂ㄨ亴璐c€佹斂绛栨硶瑙勭瓑)",index=8)
+    @ExcelProperty(value = "椤圭洰绔嬮」渚濇嵁(瑙勫垝璁″垝銆侀儴闂ㄨ亴璐c€佹斂绛栨硶瑙勭瓑)",index=7)
     private String terminfo;
     @ApiModelProperty(value = "椤圭洰绔嬮」鐨勫繀瑕佹€у拰鍙鎬�(椤圭洰鍩虹鏉′欢鍙婂墠鏈熷伐浣溿€佺鐞嗗埗搴︿笌淇濋殰鎺柦绛�)",example = "")
-    @ExcelProperty(value = "椤圭洰绔嬮」鐨勫繀瑕佹€у拰鍙鎬�(椤圭洰鍩虹鏉′欢鍙婂墠鏈熷伐浣溿€佺鐞嗗埗搴︿笌淇濋殰鎺柦绛�)",index=9)
+    @ExcelProperty(value = "椤圭洰绔嬮」鐨勫繀瑕佹€у拰鍙鎬�(椤圭洰鍩虹鏉′欢鍙婂墠鏈熷伐浣溿€佺鐞嗗埗搴︿笌淇濋殰鎺柦绛�)",index=8)
     private String plan;
     @ApiModelProperty(value = "椤圭洰鎵ц鍙婅祫閲戜娇鐢ㄨ鍒�",example = "")
-    @ExcelProperty(value = "椤圭洰鎵ц鍙婅祫閲戜娇鐢ㄨ鍒�(缁嗗寲鍒版湀浠�)",index=10)
+    @ExcelProperty(value = "椤圭洰鎵ц鍙婅祫閲戜娇鐢ㄨ鍒�(缁嗗寲鍒版湀浠�)",index=9)
     private String budget;
 
     @ApiModelProperty(value = "椤圭洰绫诲瀷",example = "")
-    @ExcelProperty(value = "椤圭洰绫诲瀷",index=11)
+    @ExcelProperty(value = "椤圭洰绫诲瀷",index=10)
     private String projectType;
 
-//    @ApiModelProperty(value = "椤圭洰绫诲瀷id",example = "")
-    //TODO  鏍规嵁椤圭洰绫诲瀷 鏌ュ嚭鍏秈d
-//    private Long projectTypeId;
-
     // + 缁╂晥淇℃伅
 //    subOtherArrayJson: "[{\"oneValue\":\"1412943787541913601\",\"twoValue\":\"1412944927906062338\",
 //                       \"two\":\"鏈嶅姟瀵硅薄婊℃剰搴︽寚鏍嘰",\"one\":[\"1412943787541913601\",\"1412944927906062338\"],\"three\":\"涓夌骇鎸囨爣\",\"yearTarget\":\"123\"}]"
 //    summaryJson: "{\"projectType\":2,\"yearGoal\":\"123456\",\"projectGoal\":\"12345\"}"
 
-    @ApiModelProperty(value = "椤圭洰绫诲埆(缁忓父鎬ч」鐩�,涓€娆℃€ч」鐩�)",example = "")
-    @ExcelProperty(value = "椤圭洰绫诲埆(缁忓父鎬ч」鐩�,涓€娆℃€ч」鐩�)",index=12)
+    @ApiModelProperty(value = "椤圭洰绫诲埆(缁忓父鎬ч」鐩�-2,涓€娆℃€ч」鐩�-3)",example = "")
+    @ExcelProperty(value = "椤圭洰绫诲埆(缁忓父鎬ч」鐩�,涓€娆℃€ч」鐩�)",index=11)
     private String targetProjectType;
 
     @ApiModelProperty(value = "骞村害鐩爣",example = "")
-    @ExcelProperty(value = "骞村害鐩爣",index=13)
+    @ExcelProperty(value = "骞村害鐩爣",index=12)
     private String yearGoal;
 
     @ApiModelProperty(value = "椤圭洰鎬荤洰鏍�(璺ㄥ勾椤圭洰)",example = "")
-    @ExcelProperty(value = "椤圭洰鎬荤洰鏍�(璺ㄥ勾椤圭洰)",index=14)
+    @ExcelProperty(value = "椤圭洰鎬荤洰鏍�(璺ㄥ勾椤圭洰)",index=13)
     private String projectGoal;
 
 
+    @ApiModelProperty(value = "瀵煎叆閿欒淇℃伅",example = "")
+    @ExcelProperty(value = "瀵煎叆閿欒淇℃伅",index=16)
+    private String errorMessage;
 
 }
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java
index 2c4ac24db..348ba20d5 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java
@@ -56,5 +56,9 @@ public class PlanSubjectImportCmd extends BaseDto {
     @ExcelProperty(value = "璧勯噾鏉ユ簮", index = 6)
     private String moneyFrom;
 
+    @ApiModelProperty(value = "瀵煎叆閿欒淇℃伅",example = "")
+    @ExcelProperty(value = "瀵煎叆閿欒淇℃伅",index=8)
+    private String errorMessage;
+
 
 }
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
index 46ec9d817..1d7904324 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
@@ -48,5 +48,10 @@ public class ProjectTargetImportCmd extends BaseDto {
     @ExcelProperty(value = "骞村害鎸囨爣鍊�",index=4)
     private String yearTarget;
 
+    @ApiModelProperty(value = "瀵煎叆閿欒淇℃伅",example = "")
+    @ExcelProperty(value = "瀵煎叆閿欒淇℃伅",index=6)
+    private String errorMessage;
+
+
 
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
index 04436da2a..745c8ecbc 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
@@ -2,6 +2,8 @@ package com.seasky.projectplan.application.command.projectplan;
 
 import cn.hutool.core.util.ObjectUtil;
 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.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -24,6 +26,7 @@ import com.seasky.projectplan.application.command.assembler.ProjectLibraryAssemb
 import com.seasky.projectplan.application.command.assembler.ProjectPlanAssembler;
 import com.seasky.projectplan.application.command.attachment.AttachmentSvr;
 import com.seasky.projectplan.application.command.projectlibrary.AProjectLibrarySvr;
+import com.seasky.projectplan.domain.aggregate.baseConfig.BaseConfigRepository;
 import com.seasky.projectplan.domain.aggregate.budgetinfo.BudgetInfoAgg;
 import com.seasky.projectplan.domain.aggregate.budgetinfo.BudgetInfoRepository;
 import com.seasky.projectplan.domain.aggregate.common.AuditEnum;
@@ -117,6 +120,9 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
     @Resource
     private ProjectTargetRepository projectTargetRepository;
 
+    @Resource
+    BaseConfigRepository baseConfigRepository;
+
     @Resource
     BudgetSwitchMapper budgetSwitchMapper;
 
@@ -150,6 +156,14 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
     @Transactional(rollbackFor = Exception.class)
     public Long saveProjectInfoPlan(ProjectPlanBookCmd projectPlanBookCmd) {
         ProjectInfoPlanAgg agg = ProjectPlanAssembler.cmdToInfoAgg(projectPlanBookCmd);
+
+        if (agg.getId() == null) {
+            //鏂板 璧嬪€肩郴缁熷勾浠�
+            if (agg.getYear() == null) {
+                BudgetSwitchOut out = baseConfigRepository.queryBudgetSwitchPageByType("涓€涓�");
+                agg.setYear(out.getYear());
+            }
+        }
         //鑻ヤ负鏂板鍒欏悓鏃跺惎鍔ㄦ祦绋�
         if (projectPlanBookCmd.getId() == null) {
             Long processCode = flowSvr.projectPlanStartFlow(flowTypeEnum.weichi.key());
@@ -161,7 +175,7 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
         }
         if ((ObjectUtil.isNull(projectPlanBookCmd.getId()) || ObjectUtil.isEmpty(projectPlanBookCmd.getId())) && projectPlanBookCmd.getPlanType().equals(PlanTypeEnum.XIANGMUKU.name())) {
             ProjectLibraryAgg projectLibraryAgg = new ProjectLibraryAgg();
-            projectLibraryAgg.setModfiy(projectPlanBookCmd.getYear()
+            projectLibraryAgg.setModfiy(agg.getYear()
                     , projectPlanBookCmd.getProjectName()
                     , new BigDecimal(0)
                     , projectPlanBookCmd.getDepartmentCode()
@@ -172,7 +186,7 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
             if(projectPlanBookCmd.getProjectLibraryId() != null){
                 ProjectLibraryAgg projectLibraryAgg = new ProjectLibraryAgg();
                 projectLibraryAgg.setId(projectPlanBookCmd.getProjectLibraryId());
-                projectLibraryAgg.setModfiy(projectPlanBookCmd.getYear(), projectPlanBookCmd.getProjectName(), new BigDecimal(0)
+                projectLibraryAgg.setModfiy(agg.getYear(), projectPlanBookCmd.getProjectName(), new BigDecimal(0)
                         , projectPlanBookCmd.getDepartmentCode(), projectPlanBookCmd.getProjectLeaderId());
                 projectLibrarySvr.saveProjectLibrary(projectLibraryAgg);
             }
@@ -340,6 +354,7 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object importInfoPlan(HttpServletRequest request, HttpServletResponse response, MultipartFile file) {
+        boolean flag = true;
         List<InfoImportCmd> infoList = new ArrayList<>();
         List<ProjectTargetImportCmd> targetList = new ArrayList<>();
         List<PlanSubjectImportCmd> subjectList = new ArrayList<>();
@@ -356,47 +371,85 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
         }
         //鎷艰椤圭洰鐢虫姤涔ist
         List<ProjectPlanBookCmd> infoBookList = new ArrayList<>();
-        for (InfoImportCmd infoImportCmd : infoList) {
-            ProjectPlanBookCmd infoBookCmd = MapperUtils.INSTANCE.map(ProjectPlanBookCmd.class, infoImportCmd);
+        for (int i = 0; i < infoList.size(); i++) {
+            ProjectPlanBookCmd infoBookCmd = MapperUtils.INSTANCE.map(ProjectPlanBookCmd.class, infoList.get(i));
             UserDTO userDTO = UserDTO.builder().build();
-            userDTO.setCode(infoImportCmd.getProjectLeaderCode());
-            userDTO.setName(infoImportCmd.getProjectLeaderName());
+            userDTO.setCode(infoList.get(i).getProjectLeaderCode());
             Result<UserDTO> userList = iUser.getUser(userDTO);
+            if (userList.getData().size() <= 0){
+                infoList.get(i).setErrorMessage("璐熻矗浜虹紪鍙� "+infoList.get(i).getProjectLeaderCode()+" 鏈壘鍒�");
+                flag = false;
+            }
             infoBookCmd.setProjectLeaderId(userList.getData().get(0).getId());
             infoBookCmd.setPlanType(PlanTypeEnum.XIANGMUKU.name());
-            BudgetInfoAgg budgetInfoAgg = budgetInfoRepository.queryBudgetInfo(BudgetInfoAgg.builder().budgetName(infoImportCmd.getProjectType()).build());
-            infoBookCmd.setProjectTypeId(budgetInfoAgg.getId());
+            List<BudgetInfoAgg> budgetInfoAggList =  budgetInfoRepository.queryBudgetInfoListByCurrentUserDept(BudgetInfoAgg.builder().budgetName(infoList.get(i).getProjectType()).build());
+            if (budgetInfoAggList.size() <=0){
+                infoList.get(i).setErrorMessage(infoList.get(i).getProjectType()+"  闈炲綋鍓嶇櫥褰曠敤鎴峰彲鐢ㄩ」鐩被鍨�,鎴栨煡璇笉鍒板搴旂殑椤圭洰绫诲瀷");
+                flag = false;
+            }
+            infoBookCmd.setProjectTypeId(budgetInfoAggList.get(0).getId());
             JSONObject summaryJson = new JSONObject();
-            summaryJson.put("basis",infoImportCmd.getBasis());
-            summaryJson.put("terminfo",infoImportCmd.getTerminfo());
-            summaryJson.put("plan",infoImportCmd.getPlan());
-            summaryJson.put("budget",infoImportCmd.getBudget());
+            summaryJson.put("basis",infoList.get(i).getBasis());
+            summaryJson.put("terminfo",infoList.get(i).getTerminfo());
+            summaryJson.put("plan",infoList.get(i).getPlan());
+            summaryJson.put("budget",infoList.get(i).getBudget());
             infoBookCmd.setSummaryJson(summaryJson.toString());
             //椤圭洰鐢虫姤涔� 缁╂晥鎸囨爣 targetList
             ProjectTargetCmd projectTargetCmd = new ProjectTargetCmd();
             JSONObject targetSummaryJson = new JSONObject();
-            targetSummaryJson.put("targetProjectType",infoImportCmd.getTargetProjectType());
-            targetSummaryJson.put("yearGoal",infoImportCmd.getYearGoal());
-            targetSummaryJson.put("projectGoal",infoImportCmd.getProjectGoal());
+            if (infoList.get(i).getTargetProjectType() != null) {
+                if("缁忓父鎬ч」鐩�".equals(infoList.get(i).getTargetProjectType())){
+                    targetSummaryJson.put("targetProjectType","2");
+                }else if("涓€娆℃€ч」鐩�".equals(infoList.get(i).getTargetProjectType())){
+                    targetSummaryJson.put("targetProjectType","3");
+                }else {
+                    infoList.get(i).setErrorMessage(infoList.get(i).getTargetProjectType()+"  椤圭洰绫诲埆鍙兘濉�: 缁忓父鎬ч」鐩� 鎴� 涓€娆℃€ч」鐩�");
+                    flag = false;
+                }
+            }
+            targetSummaryJson.put("targetProjectType",infoList.get(i).getTargetProjectType());
+            targetSummaryJson.put("yearGoal",infoList.get(i).getYearGoal());
+            targetSummaryJson.put("projectGoal",infoList.get(i).getProjectGoal());
             projectTargetCmd.setSummaryJson(targetSummaryJson.toString());
-            ProjectTargetImportCmd infoBookTarget = targetList.stream().filter(item ->item.getIndex().equals(infoImportCmd.getIndex())).findAny().orElse(null);
-            if (infoBookTarget != null) {
-                ProjectTargetAgg oneTarget = projectTargetRepository.queryProjectTarget(ProjectTargetAgg.builder().targetName(infoBookTarget.getOneName()).build());
-                ProjectTargetAgg towTarget = projectTargetRepository.queryProjectTarget(ProjectTargetAgg.builder().targetName(infoBookTarget.getTwo()).build());
-                String [] one = {oneTarget.getId().toString(),towTarget.getId().toString()};
-                JSONObject subOtherArrayJson = new JSONObject();
-                subOtherArrayJson.put("oneValue",oneTarget.getId().toString());
-                subOtherArrayJson.put("towValue",towTarget.getId().toString());
-                subOtherArrayJson.put("two",infoBookTarget.getTwo());
-                subOtherArrayJson.put("one",one);
-                subOtherArrayJson.put("three",infoBookTarget.getThree());
-                subOtherArrayJson.put("yearTarget",infoBookTarget.getYearTarget());
-                projectTargetCmd.setSubOtherArrayJson(subOtherArrayJson.toString());
-                infoBookCmd.setProjectTargetCmd(projectTargetCmd);
+            String index = infoList.get(i).getIndex();
+            List<ProjectTargetImportCmd> infoBookTargetList = targetList.stream().filter(a -> a.getIndex().equals(index)).collect(Collectors.toList());
+            List<String> subOtherArrayJsonList = new ArrayList<>();
+            for (ProjectTargetImportCmd targetImportCmd : infoBookTargetList) {
+                ProjectTargetAgg oneTarget = projectTargetRepository.queryProjectTarget(ProjectTargetAgg.builder().targetName(targetImportCmd.getOneName()).build());
+                if (oneTarget == null){
+                    for (ProjectTargetImportCmd projectTargetImportCmd : targetList) {
+                        if(projectTargetImportCmd.getOneName().equals(targetImportCmd.getOneName())){
+                            projectTargetImportCmd.setErrorMessage("鏌ヨ涓嶅埌 "+targetImportCmd.getOneName()+" 鐨勭哗鏁堟寚鏍囦俊鎭�");
+                        }
+                    }
+                    flag = false;
+                }
+                ProjectTargetAgg towTarget = projectTargetRepository.queryProjectTarget(ProjectTargetAgg.builder().targetName(targetImportCmd.getTwo()).build());
+                if (towTarget == null){
+                    for (ProjectTargetImportCmd projectTargetImportCmd : targetList) {
+                        if(projectTargetImportCmd.getTwo().equals(targetImportCmd.getTwo())){
+                            projectTargetImportCmd.setErrorMessage("鏌ヨ涓嶅埌 "+targetImportCmd.getTwo()+" 鐨勭哗鏁堟寚鏍囦俊鎭�");
+                        }
+                    }
+                    flag = false;
+                }
+                if (towTarget != null && oneTarget != null ) {
+                    String [] one = {oneTarget.getId().toString(),towTarget.getId().toString()};
+                    JSONObject subOtherArrayJson = new JSONObject();
+                    subOtherArrayJson.put("oneValue",oneTarget.getId().toString());
+                    subOtherArrayJson.put("towValue",towTarget.getId().toString());
+                    subOtherArrayJson.put("two",targetImportCmd.getTwo());
+                    subOtherArrayJson.put("one",one);
+                    subOtherArrayJson.put("three",targetImportCmd.getThree());
+                    subOtherArrayJson.put("yearTarget",targetImportCmd.getYearTarget());
+                    subOtherArrayJsonList.add(subOtherArrayJson.toString());
+                }
             }
-
+            String[] newArr = subOtherArrayJsonList.toArray(new String[subOtherArrayJsonList.size()]);
+            projectTargetCmd.setSubOtherArrayJson(Arrays.toString(newArr));
+            infoBookCmd.setProjectTargetCmd(projectTargetCmd);
             //椤圭洰鐢虫姤涔� 缁忔祹绉戠洰 subjectList
-            List<PlanSubjectImportCmd> infoBookSubjects = subjectList.stream().filter(i -> i.getIndex().equals(infoImportCmd.getIndex())).collect(Collectors.toList());
+            List<PlanSubjectImportCmd> infoBookSubjects = subjectList.stream().filter(c -> c.getIndex().equals(index)).collect(Collectors.toList());
             List<PlanSubjectCmd> planSubjectList = new ArrayList<>();
             for (PlanSubjectImportCmd infoBookSubject : infoBookSubjects) {
                 PlanSubjectCmd subjectCmd = MapperUtils.INSTANCE.map(PlanSubjectCmd.class, infoBookSubject);
@@ -410,8 +463,29 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
             infoBookCmd.setPlanSubjectList(planSubjectList);
             infoBookList.add(infoBookCmd);
         }
-        for (ProjectPlanBookCmd planBookCmd : infoBookList) {
-            saveProjectInfoPlan(planBookCmd);
+        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(infoList,writeSheet);
+                writeSheet = EasyExcel.writerSheet(1,"缁╂晥鎸囨爣").head(ProjectTargetImportCmd.class).build();
+                excelWriter.write(targetList,writeSheet);
+                writeSheet = EasyExcel.writerSheet(2,"缁忔祹绉戠洰").head(PlanSubjectImportCmd.class).build();
+                excelWriter.write(subjectList,writeSheet);
+                excelWriter.finish();
+            }catch (IOException e){
+                throw ExceptionUtil.getException(null,"椤圭洰鐢虫姤涔﹀鍏ラ敊璇師鍥� 涓嬭浇澶辫触锛�");
+            }
+        }else {
+            for (ProjectPlanBookCmd planBookCmd : infoBookList) {
+                saveProjectInfoPlan(planBookCmd);
+            }
         }
         //缁勮 椤圭洰鐢虫姤涔︿繚瀛樺璞� 鎵ц淇濆瓨
         return 1;
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/domain/aggregate/budgetinfo/BudgetInfoRepository.java b/ServiceSite/src/main/java/com/seasky/projectplan/domain/aggregate/budgetinfo/BudgetInfoRepository.java
index ee597cb81..eddc07852 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/domain/aggregate/budgetinfo/BudgetInfoRepository.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/domain/aggregate/budgetinfo/BudgetInfoRepository.java
@@ -1,7 +1,10 @@
 package com.seasky.projectplan.domain.aggregate.budgetinfo;
 
+import com.seasky.core.common.Result;
 import com.seasky.core.ddd.base.DddRepository;
 import com.seasky.projectplan.domain.aggregate.fund.FundAgg;
+import com.seasky.projectplan.dto.budgetinfo.BudgetInfoOut;
+import com.seasky.projectplan.dto.budgetinfo.BudgetInfoQry;
 
 import java.util.List;
 
@@ -52,4 +55,13 @@ public interface BudgetInfoRepository extends DddRepository<BudgetInfoAgg> {
      * @return {@link List< FundAgg >}
      */
     List<BudgetInfoAgg> queryBudgetInfoListByIds(List<Long> ids);
+
+    /**
+     * 鏌ヨ褰撳墠鐢ㄦ埛鎵€鍦ㄩ儴闂� 鍙敤椤圭洰绫诲瀷 鍒楄〃
+     *
+     * @param budgetInfoAgg 棰勭畻淇℃伅鑱氬悎鏍�
+     * @return {@link List<BudgetInfoOut>}
+     */
+    List<BudgetInfoAgg> queryBudgetInfoListByCurrentUserDept(BudgetInfoAgg budgetInfoAgg);
+
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/BudgetInfoMapper.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/BudgetInfoMapper.java
index 264d02af9..a9110e93e 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/BudgetInfoMapper.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/BudgetInfoMapper.java
@@ -2,6 +2,7 @@ package com.seasky.projectplan.infrastructure.db.mapper.table;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.seasky.core.base.BaseMapper;
+import com.seasky.projectplan.domain.aggregate.budgetinfo.BudgetInfoAgg;
 import com.seasky.projectplan.dto.budgetinfo.BudgetInfoOut;
 import com.seasky.projectplan.dto.budgetinfo.BudgetInfoQry;
 import com.seasky.projectplan.infrastructure.dataobject.po.BudgetInfoPo;
@@ -86,4 +87,7 @@ public interface BudgetInfoMapper extends BaseMapper<BudgetInfoPo> {
      * @return {@link Page<BudgetInfoPo>}
      */
     List<BudgetInfoPo> queryLeafNodeBudgetInfoPage(@Param("pm") BudgetInfoQry budgetInfoQry);
+    List<BudgetInfoPo> queryLeafNodeBudgetInfoPage(@Param("pm") BudgetInfoAgg budgetInfoAgg);
+
+
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/repository/budgetinfo/BudgetInfoRepositoryImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/repository/budgetinfo/BudgetInfoRepositoryImpl.java
index 780a356be..c00b9ffa4 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/repository/budgetinfo/BudgetInfoRepositoryImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/repository/budgetinfo/BudgetInfoRepositoryImpl.java
@@ -1,19 +1,32 @@
 package com.seasky.projectplan.infrastructure.repository.budgetinfo;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+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.base.DomainKeysMap;
 import com.seasky.core.enums.Available;
 import com.seasky.core.exception.DataAccessException;
+import com.seasky.micro.basedata.api.IUser;
+import com.seasky.micro.basedata.dto.OrganizationDTO;
 import com.seasky.projectplan.domain.aggregate.budgetinfo.BudgetInfoAgg;
 import com.seasky.projectplan.domain.aggregate.budgetinfo.BudgetInfoRepository;
+import com.seasky.projectplan.dto.budgetinfo.BudgetInfoOut;
+import com.seasky.projectplan.dto.budgetinfo.BudgetInfoQry;
 import com.seasky.projectplan.infrastructure.dataobject.po.BudgetInfoPo;
 import com.seasky.projectplan.infrastructure.dataobject.qo.BudgetInfoQo;
 import com.seasky.projectplan.infrastructure.db.mapper.table.BudgetInfoMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 椤圭洰绫诲瀷 浠撳偍灞俰mpl
@@ -27,6 +40,10 @@ public class BudgetInfoRepositoryImpl implements BudgetInfoRepository {
     @Autowired
     BudgetInfoMapper budgetInfoMapper;
 
+    @Resource
+    IUser iUser;
+
+
     @Override
     public Long saveBudgetInfo(BudgetInfoAgg budgetInfoAgg) {
         BudgetInfoPo budgetInfoPo = BudgetInfoConvert.aggToPo(budgetInfoAgg);
@@ -99,6 +116,48 @@ public class BudgetInfoRepositoryImpl implements BudgetInfoRepository {
         return BudgetInfoConvert.poListToAggList(budgetInfoPos);
     }
 
+    /**
+     * 鏌ヨ褰撳墠鐢ㄦ埛鎵€鍦ㄩ儴闂� 鍙敤椤圭洰绫诲瀷 鍒楄〃
+     *
+     * @param budgetInfoAgg 棰勭畻淇℃伅鑱氬悎鏍�
+     * @return {@link List<BudgetInfoOut>}
+     */
+    @Override
+    public List<BudgetInfoAgg> queryBudgetInfoListByCurrentUserDept(BudgetInfoAgg budgetInfoAgg) {
+        List<OrganizationDTO> organizationList = iUser.getCurrent("").getData().get(0).getOrganizationList();
+        List<String> departmentCodeList = new ArrayList<>();
+        //鑾峰彇褰撳墠鐧诲綍浜洪儴闂╟odeList
+        for (OrganizationDTO organizationDTO : organizationList) {
+            departmentCodeList.add(organizationDTO.getCode());
+        }
+        //鑾峰彇 椤圭洰绫诲瀷淇℃伅
+        List<BudgetInfoPo> budgetInfoPoList = budgetInfoMapper.queryLeafNodeBudgetInfoPage(BudgetInfoAgg.builder().year(budgetInfoAgg.getYear()).build());
+        ArrayList<BudgetInfoPo> canUseBudgetInfoPoList = new ArrayList<>();
+        //绛涢€� 褰撳墠鐧诲綍浜烘墍鍦ㄩ儴闂� 鍙敤椤圭洰绫诲瀷
+        for (String s : departmentCodeList) {
+            for (BudgetInfoPo budgetPo : budgetInfoPoList) {
+                if (!ObjectUtil.isNull(budgetPo.getCanUseDeptJson()) && !ObjectUtil.isEmpty(budgetPo.getCanUseDeptJson())) {
+                    if (JSONArray.isValidArray(budgetPo.getCanUseDeptJson())) {
+                        JSONArray jsonArray = JSON.parseArray(budgetPo.getCanUseDeptJson());
+                        if (!Objects.isNull(jsonArray)) {
+                            for (Object o : jsonArray) {
+                                JSONObject jsonObject = JSON.parseObject(o.toString());
+                                if (jsonObject.get("code").equals(s)) {
+                                    canUseBudgetInfoPoList.add(budgetPo);
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                } else {
+                    //褰撻」鐩被鍨嬬殑鍙娇鐢� 閮ㄩ棬闆嗗悎CanUseDeptJson 涓虹┖鏃� 榛樿鍙褰撳墠鐧诲綍浜轰娇鐢�
+                    canUseBudgetInfoPoList.add(budgetPo);
+                }
+            }
+        }
+        return BudgetInfoConvert.poListToAggList(canUseBudgetInfoPoList.stream().distinct().collect(Collectors.toList()));
+    }
+
 
     @Override
     public Long save(BudgetInfoAgg aggregate) {
-- 
GitLab


From 64016d280feca177e2040f190d4014da9d46bc19 Mon Sep 17 00:00:00 2001
From: XLR_asd <xueyawei@seaskysh.com>
Date: Fri, 30 Jul 2021 11:11:31 +0800
Subject: [PATCH 4/4] =?UTF-8?q?fix=20=20=E9=A1=B9=E7=9B=AE=E7=94=B3?=
 =?UTF-8?q?=E6=8A=A5=E4=B9=A6=E5=AF=BC=E5=85=A5=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../dto/projectplan/InfoImportCmd.java        |  2 +-
 .../dto/projectplan/PlanSubjectImportCmd.java | 12 +++------
 .../projectplan/ProjectTargetImportCmd.java   |  2 +-
 .../projectplan/ProjectPlanSvrImpl.java       | 25 ++++++++++++++-----
 4 files changed, 25 insertions(+), 16 deletions(-)

diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
index 7ba56bf58..e3576f841 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/InfoImportCmd.java
@@ -86,6 +86,6 @@ public class InfoImportCmd extends BaseDto {
 
     @ApiModelProperty(value = "瀵煎叆閿欒淇℃伅",example = "")
     @ExcelProperty(value = "瀵煎叆閿欒淇℃伅",index=16)
-    private String errorMessage;
+    private String errorMessage = "";
 
 }
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java
index 348ba20d5..252b97a76 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/PlanSubjectImportCmd.java
@@ -40,25 +40,21 @@ public class PlanSubjectImportCmd extends BaseDto {
     @ExcelProperty(value = "鍗曚环", index = 3)
     private BigDecimal price;
 
-    @ApiModelProperty(value = "閲戦",example = "")
-    @ExcelProperty(value = "閲戦", index =4)
-    private BigDecimal subtotal;
-
 //    @ApiModelProperty(value = "鍏朵粬鍐呭 json",example = "")
 //    private String otherJson;
 //    otherJson: "{\"fundDescribe\":\"鍙嶆槧鍗曚綅鍏敤鎴垮眿銆佸缓绛戠墿鍙婂叾闄勫睘璁惧鐨勭淮淇垂銆俓",\"orgPurchase\":\"1222\",\"moneyFrom\":\"13333\"}"
 
     @ApiModelProperty(value = "鏀垮簻閲囪喘",example = "")
-    @ExcelProperty(value = "鏀垮簻閲囪喘", index = 5)
+    @ExcelProperty(value = "鏀垮簻閲囪喘", index = 4)
     private String orgPurchase;
 
     @ApiModelProperty(value = "璧勯噾鏉ユ簮",example = "")
-    @ExcelProperty(value = "璧勯噾鏉ユ簮", index = 6)
+    @ExcelProperty(value = "璧勯噾鏉ユ簮", index = 5)
     private String moneyFrom;
 
     @ApiModelProperty(value = "瀵煎叆閿欒淇℃伅",example = "")
-    @ExcelProperty(value = "瀵煎叆閿欒淇℃伅",index=8)
-    private String errorMessage;
+    @ExcelProperty(value = "瀵煎叆閿欒淇℃伅",index=7)
+    private String errorMessage = "";
 
 
 }
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
index 1d7904324..4dd8fd388 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectplan/ProjectTargetImportCmd.java
@@ -50,7 +50,7 @@ public class ProjectTargetImportCmd extends BaseDto {
 
     @ApiModelProperty(value = "瀵煎叆閿欒淇℃伅",example = "")
     @ExcelProperty(value = "瀵煎叆閿欒淇℃伅",index=6)
-    private String errorMessage;
+    private String errorMessage = "";
 
 
 
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
index 745c8ecbc..7f147028b 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectplan/ProjectPlanSvrImpl.java
@@ -14,6 +14,7 @@ import com.seasky.core.common.ResponseCode;
 import com.seasky.core.common.Result;
 import com.seasky.core.ddd.utils.MapperUtils;
 import com.seasky.core.exception.DataAccessException;
+import com.seasky.core.exception.DataBusinessException;
 import com.seasky.core.util.EasyExcelUtil;
 import com.seasky.core.util.ExceptionUtil;
 import com.seasky.micro.basedata.api.IOrganization;
@@ -373,18 +374,30 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
         List<ProjectPlanBookCmd> infoBookList = new ArrayList<>();
         for (int i = 0; i < infoList.size(); i++) {
             ProjectPlanBookCmd infoBookCmd = MapperUtils.INSTANCE.map(ProjectPlanBookCmd.class, infoList.get(i));
+            //褰撳墠鐧诲綍浜� 鏄惁鍦ㄦ墍濉儴闂�
+            List<UserDTO> currentUser = iUser.getCurrent("").getData();
+            if (currentUser.size() > 0) {
+                String departmentName = infoList.get(i).getDepartmentName();
+                List<OrganizationDTO> collect = currentUser.get(0).getOrganizationList().stream().filter(a -> a.getName().equals(departmentName)).collect(Collectors.toList());
+                if (collect.size() <= 0){
+                    infoList.get(i).setErrorMessage(infoList.get(i).getErrorMessage()+" | "+"褰撳墠鐧诲綍浜轰笉鍦ㄦ墍濉儴闂ㄥ唴,涓嶈兘鏂板璇ラ儴闂ㄧ殑椤圭洰鐢虫姤涔�");
+                    flag = false;
+                }
+            } else {
+                throw new DataBusinessException(new Error(ResponseCode.LOGIN_NOT_ONLINE, null, "鏈櫥褰�", ""));
+            }
             UserDTO userDTO = UserDTO.builder().build();
             userDTO.setCode(infoList.get(i).getProjectLeaderCode());
             Result<UserDTO> userList = iUser.getUser(userDTO);
             if (userList.getData().size() <= 0){
-                infoList.get(i).setErrorMessage("璐熻矗浜虹紪鍙� "+infoList.get(i).getProjectLeaderCode()+" 鏈壘鍒�");
+                infoList.get(i).setErrorMessage(infoList.get(i).getErrorMessage()+" | "+"璐熻矗浜轰俊鎭湭鎵惧埌");
                 flag = false;
             }
             infoBookCmd.setProjectLeaderId(userList.getData().get(0).getId());
             infoBookCmd.setPlanType(PlanTypeEnum.XIANGMUKU.name());
             List<BudgetInfoAgg> budgetInfoAggList =  budgetInfoRepository.queryBudgetInfoListByCurrentUserDept(BudgetInfoAgg.builder().budgetName(infoList.get(i).getProjectType()).build());
             if (budgetInfoAggList.size() <=0){
-                infoList.get(i).setErrorMessage(infoList.get(i).getProjectType()+"  闈炲綋鍓嶇櫥褰曠敤鎴峰彲鐢ㄩ」鐩被鍨�,鎴栨煡璇笉鍒板搴旂殑椤圭洰绫诲瀷");
+                infoList.get(i).setErrorMessage(infoList.get(i).getErrorMessage()+" | "+infoList.get(i).getProjectType()+"  闈炲綋鍓嶇櫥褰曠敤鎴峰彲鐢ㄩ」鐩被鍨�,鎴栨煡璇笉鍒板搴旂殑椤圭洰绫诲瀷");
                 flag = false;
             }
             infoBookCmd.setProjectTypeId(budgetInfoAggList.get(0).getId());
@@ -403,7 +416,7 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
                 }else if("涓€娆℃€ч」鐩�".equals(infoList.get(i).getTargetProjectType())){
                     targetSummaryJson.put("targetProjectType","3");
                 }else {
-                    infoList.get(i).setErrorMessage(infoList.get(i).getTargetProjectType()+"  椤圭洰绫诲埆鍙兘濉�: 缁忓父鎬ч」鐩� 鎴� 涓€娆℃€ч」鐩�");
+                    infoList.get(i).setErrorMessage(infoList.get(i).getErrorMessage()+" | "+infoList.get(i).getTargetProjectType()+"  椤圭洰绫诲埆鍙兘濉�: 缁忓父鎬ч」鐩� 鎴� 涓€娆℃€ч」鐩�");
                     flag = false;
                 }
             }
@@ -419,7 +432,7 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
                 if (oneTarget == null){
                     for (ProjectTargetImportCmd projectTargetImportCmd : targetList) {
                         if(projectTargetImportCmd.getOneName().equals(targetImportCmd.getOneName())){
-                            projectTargetImportCmd.setErrorMessage("鏌ヨ涓嶅埌 "+targetImportCmd.getOneName()+" 鐨勭哗鏁堟寚鏍囦俊鎭�");
+                            projectTargetImportCmd.setErrorMessage(projectTargetImportCmd.getErrorMessage()+" | "+"鏌ヨ涓嶅埌 "+targetImportCmd.getOneName()+" 鐨勭哗鏁堟寚鏍囦俊鎭�");
                         }
                     }
                     flag = false;
@@ -428,7 +441,7 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
                 if (towTarget == null){
                     for (ProjectTargetImportCmd projectTargetImportCmd : targetList) {
                         if(projectTargetImportCmd.getTwo().equals(targetImportCmd.getTwo())){
-                            projectTargetImportCmd.setErrorMessage("鏌ヨ涓嶅埌 "+targetImportCmd.getTwo()+" 鐨勭哗鏁堟寚鏍囦俊鎭�");
+                            projectTargetImportCmd.setErrorMessage(projectTargetImportCmd.getErrorMessage()+" | "+"鏌ヨ涓嶅埌 "+targetImportCmd.getTwo()+" 鐨勭哗鏁堟寚鏍囦俊鎭�");
                         }
                     }
                     flag = false;
@@ -453,6 +466,7 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
             List<PlanSubjectCmd> planSubjectList = new ArrayList<>();
             for (PlanSubjectImportCmd infoBookSubject : infoBookSubjects) {
                 PlanSubjectCmd subjectCmd = MapperUtils.INSTANCE.map(PlanSubjectCmd.class, infoBookSubject);
+                subjectCmd.setSubtotal(infoBookSubject.getPrice().multiply(new BigDecimal(infoBookSubject.getNumber())));
                 JSONObject otherJson = new JSONObject();
                 otherJson.put("fundDescribe","");
                 otherJson.put("orgPurchase",infoBookSubject.getOrgPurchase());
@@ -487,7 +501,6 @@ public class ProjectPlanSvrImpl implements ProjectPlanSvr {
                 saveProjectInfoPlan(planBookCmd);
             }
         }
-        //缁勮 椤圭洰鐢虫姤涔︿繚瀛樺璞� 鎵ц淇濆瓨
         return 1;
     }
 
-- 
GitLab