From 611ba611ecf2c42826caab587631cca2cc0f5818 Mon Sep 17 00:00:00 2001
From: 19512259349 <cq.qi@qq.com>
Date: Wed, 2 Jun 2021 16:13:31 +0800
Subject: [PATCH] =?UTF-8?q?fix:q=E7=BA=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../projectplan/api/IProjectLibrary.java      | 32 +++++++-
 .../projectlibrary/ProjectLibraryDeptQry.java | 10 +++
 .../dto/projectlibrary/ProjectLibraryOut.java | 46 +++++++++++
 .../dto/projectlibrary/ProjectLibraryQry.java | 16 +++-
 .../projectlibrary/AProjectLibrarySvr.java    | 28 +++++++
 .../AProjectLibrarySvrImpl.java               | 72 +++++++++++++++---
 .../ProjectLibraryQuerySvr.java               | 36 +++++++++
 .../aggregate/common/PlanStateEnum.java       | 11 +++
 .../domain/service/ProjectLibrarySvr.java     | 15 ++++
 .../domain/service/ProjectLibrarySvrImpl.java | 28 ++++++-
 .../db/mapper/table/ProjectLibraryMapper.java |  6 ++
 .../db/mapper/xml/ProjectLibraryMapper.xml    |  6 ++
 .../ProjectLibraryQuerySvrImpl.java           | 76 +++++++++++++++++++
 .../ProjectLibraryReaderConvert.java          | 20 +++++
 .../controller/ProjectLibraryController.java  | 65 +++++++++++++++-
 15 files changed, 453 insertions(+), 14 deletions(-)
 create mode 100644 ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryOut.java
 create mode 100644 ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectlibrary/ProjectLibraryQuerySvr.java
 create mode 100644 ServiceSite/src/main/java/com/seasky/projectplan/domain/aggregate/common/PlanStateEnum.java
 create mode 100644 ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectlibrary/ProjectLibraryQuerySvrImpl.java
 create mode 100644 ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectlibrary/ProjectLibraryReaderConvert.java

diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectLibrary.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectLibrary.java
index 4490b2b2a..472d67669 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectLibrary.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/api/IProjectLibrary.java
@@ -2,7 +2,8 @@ package com.seasky.projectplan.api;
 
 import com.seasky.core.common.Result;
 import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryCmd;
-import com.seasky.projectplan.dto.projectplan.ProjectPlanBookCmd;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryOut;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryQry;
 import io.swagger.annotations.Api;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -17,4 +18,33 @@ public interface IProjectLibrary {
 
     @PostMapping("/saveProjectLibrary")
     Result<Object> saveProjectLibrary(@RequestBody ProjectLibraryCmd cmd);
+
+
+    @PostMapping("/copyHistoryProjectLibrary")
+    Result<Object> copyHistoryProjectLibrary(@RequestBody ProjectLibraryCmd cmd);
+
+    @PostMapping("/enterProjectPlanType1")
+    Result<Object> enterProjectPlanType1(@RequestBody ProjectLibraryCmd cmd);
+
+    @PostMapping("/enterProjectPlanType2")
+    Result<Object> enterProjectPlanType2(@RequestBody ProjectLibraryCmd cmd);
+
+    @PostMapping("/cancelEnterProjectPlanType1")
+    Result<Object> cancelEnterProjectPlanType1(@RequestBody ProjectLibraryCmd cmd);
+
+    @PostMapping("/cancelEnterProjectPlanType2")
+    Result<Object> cancelEnterProjectPlanType2(@RequestBody ProjectLibraryCmd cmd);
+
+    @PostMapping("/removeProjectLibrary")
+    Result<Object> removeProjectLibrary(@RequestBody ProjectLibraryCmd cmd);
+
+    @PostMapping("/queryProjectLibraryPage")
+    Result<ProjectLibraryOut> queryProjectLibraryPage(@RequestBody ProjectLibraryQry qry);
+
+    @PostMapping("/queryProjectLibraryPageByCurrentUserDept")
+    Result<ProjectLibraryOut> queryProjectLibraryPageByCurrentUserDept(@RequestBody ProjectLibraryQry qry);
+
+    @PostMapping("/queryHistoryProjectLibraryPageByCurrentUserDept")
+    Result<ProjectLibraryOut> queryHistoryProjectLibraryPageByCurrentUserDept(@RequestBody ProjectLibraryQry qry);
+
 }
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryDeptQry.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryDeptQry.java
index 2db6e3c83..2f344e6af 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryDeptQry.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryDeptQry.java
@@ -3,6 +3,8 @@ package com.seasky.projectplan.dto.projectlibrary;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.DecimalMin;
+
 /**
  * 椤圭洰搴撻儴闂� qry
  *
@@ -17,4 +19,12 @@ public class ProjectLibraryDeptQry {
     @ApiModelProperty("椤圭洰鍚嶇О")
     private String projectName;
 
+    @ApiModelProperty("鍒嗛〉鐮�")
+    @DecimalMin("0")
+    private Integer pageNumber;
+
+    @ApiModelProperty("鍒嗛〉澶у皬")
+    @DecimalMin("0")
+    private Integer pageSize;
+
 }
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryOut.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryOut.java
new file mode 100644
index 000000000..0dfaa967b
--- /dev/null
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryOut.java
@@ -0,0 +1,46 @@
+package com.seasky.projectplan.dto.projectlibrary;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 椤圭洰搴� cmd
+ *
+ * @author chenqi
+ * @date 2021/05/31
+ */
+@Data
+public class ProjectLibraryOut {
+    @ApiModelProperty("id")
+    private Long id;
+
+    @ApiModelProperty("骞翠唤")
+    private Integer year;
+
+    @ApiModelProperty("棰勭畻閲戦")
+    private BigDecimal planMoney;
+
+    @ApiModelProperty("椤圭洰鍚嶇О")
+    private String projectName;
+
+    @ApiModelProperty("閮ㄩ棬缂栧彿")
+    private String departmentCode;
+
+    @ApiModelProperty("璐熻矗浜篿d")
+    private Long projectLeaderId;
+
+    @ApiModelProperty("椤圭洰搴�")
+    private Long planType1Id;
+
+    @ApiModelProperty("涓€涓�")
+    private Long planType2Id;
+
+    @ApiModelProperty("浜屼笂")
+    private Long planType3Id;
+
+    @ApiModelProperty("瀹℃壒")
+    private Long planType4Id;
+
+}
diff --git a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryQry.java b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryQry.java
index 76809a725..1ec403802 100644
--- a/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryQry.java
+++ b/ServiceSite/facade/src/main/java/com/seasky/projectplan/dto/projectlibrary/ProjectLibraryQry.java
@@ -1,8 +1,11 @@
 package com.seasky.projectplan.dto.projectlibrary;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
 import lombok.Data;
 
+import javax.validation.constraints.DecimalMin;
+
 /**
  * 椤圭洰搴� qry
  *
@@ -10,7 +13,10 @@ import lombok.Data;
  * @date 2021/05/31
  */
 @Data
+@Builder
 public class ProjectLibraryQry {
+
+
     @ApiModelProperty("骞翠唤")
     private Integer year;
 
@@ -18,9 +24,17 @@ public class ProjectLibraryQry {
     private String projectName;
 
     @ApiModelProperty("閮ㄩ棬缂栧彿")
-    private String deptCode;
+    private String departmentCode;
 
     @ApiModelProperty("绫诲瀷鍒楄〃")
     private String typeList;
 
+    @ApiModelProperty("鍒嗛〉鐮�")
+    @DecimalMin("0")
+    private Integer pageNumber;
+
+    @ApiModelProperty("鍒嗛〉澶у皬")
+    @DecimalMin("0")
+    private Integer pageSize;
+
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectlibrary/AProjectLibrarySvr.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectlibrary/AProjectLibrarySvr.java
index aa7720c31..f3239ce48 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectlibrary/AProjectLibrarySvr.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectlibrary/AProjectLibrarySvr.java
@@ -29,4 +29,32 @@ public interface AProjectLibrarySvr {
      * @param cmd cmd
      */
     void enterProjectPlanType1(ProjectLibraryCmd cmd);
+
+    /**
+     * 椤圭洰缁忚垂杩涘叆浜屼笂
+     *
+     * @param cmd cmd
+     */
+    void enterProjectPlanType2(ProjectLibraryCmd cmd);
+
+    /**
+     * 鍙栨秷杩涘叆涓€涓�
+     *
+     * @param cmd cmd
+     */
+    void cancelEnterProjectPlanType1(ProjectLibraryCmd cmd);
+
+    /**
+     * 鍙栨秷杩涘叆浜屼笂
+     *
+     * @param cmd cmd
+     */
+    void cancelEnterProjectPlanType2(ProjectLibraryCmd cmd);
+
+    /**
+     * 鍒犻櫎椤圭洰搴撲俊鎭�
+     *
+     * @param cmd cmd
+     */
+    void removeProjectLibrary(ProjectLibraryCmd cmd);
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectlibrary/AProjectLibrarySvrImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectlibrary/AProjectLibrarySvrImpl.java
index 2cb3bc296..1d1efeba0 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectlibrary/AProjectLibrarySvrImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/command/projectlibrary/AProjectLibrarySvrImpl.java
@@ -2,9 +2,12 @@ package com.seasky.projectplan.application.command.projectlibrary;
 
 import com.seasky.projectplan.application.command.assembler.ProjectLibraryAssembler;
 import com.seasky.projectplan.application.query.baseconfig.BaseConfigQuerySvr;
-import com.seasky.projectplan.application.query.projectplan.ProjectPlanQueryService;
+import com.seasky.projectplan.domain.aggregate.common.PlanTypeEnum;
+import com.seasky.projectplan.domain.aggregate.projectInfoplan.ProjectInfoPlanAgg;
+import com.seasky.projectplan.domain.aggregate.projectInfoplan.ProjectInfoRepository;
 import com.seasky.projectplan.domain.aggregate.projectlibrary.ProjectLibraryAgg;
 import com.seasky.projectplan.domain.aggregate.projectlibrary.ProjectLibraryRepository;
+import com.seasky.projectplan.domain.service.ProjectInfoPlanDomainSvr;
 import com.seasky.projectplan.domain.service.ProjectLibrarySvr;
 import com.seasky.projectplan.dto.baseconfig.budgetswitch.BudgetSwitchOut;
 import com.seasky.projectplan.dto.baseconfig.budgetswitch.BudgetSwitchQry;
@@ -29,35 +32,84 @@ public class AProjectLibrarySvrImpl implements AProjectLibrarySvr {
     BaseConfigQuerySvr baseConfigQuerySvr;
 
     @Resource
-    ProjectPlanQueryService projectPlanQueryService;
+    ProjectLibraryRepository projectLibraryRepository;
 
     @Resource
-    ProjectLibraryRepository projectLibraryRepository;
+    ProjectInfoRepository projectInfoRepository;
+
+    @Resource
+    ProjectInfoPlanDomainSvr projectInfoPlanDomainSvr;
 
     @Override
     public void saveProjectLibrary(ProjectLibraryCmd cmd) {
-
         BudgetSwitchOut out = baseConfigQuerySvr.queryBudgetSwitchPageByType(BudgetSwitchQry.builder().type("涓€涓�").build());
         cmd.setYear(out.getYear());
         ProjectLibraryAgg agg = ProjectLibraryAssembler.cmdToAgg(cmd);
         Long aLong = projectLibrarySvr.saveProjectLibrary(agg);
-
-        //todo:鎶奿d 璧嬪€煎埌椤圭洰搴撶敵鎶ヤ功閲岋紝淇濆瓨
-
     }
 
     @Override
     public void copyHistoryProjectLibrary(ProjectLibraryCmd cmd) {
+        //鐢熸垚 "鏂伴」鐩簱id"
         ProjectLibraryAgg agg = projectLibraryRepository.buildAggById(cmd.getId());
         agg.setId(null);
-        Long aLong = projectLibrarySvr.saveProjectLibrary(agg);
-//        ProjectPlanBookOut projectPlanBookOut = projectPlanQueryService.queryProjectInfoPlanById(cmd.getProjectPlanBookCmd().getId());
-//        todo:搴旇杩斿洖鑱氬悎鏍癸紝鍒犻櫎id锛岀粦瀹氶」鐩簱 id,淇濆瓨
+        Long newId = projectLibrarySvr.saveProjectLibrary(agg);
+
+        //鏍规嵁 "鏃ч」鐩簱id" 鍜� "椤圭洰搴撶被鍨�" 鑾峰彇璁″垝涔﹁仛鍚堟牴,璧嬪€� "鏂伴」鐩簱id"
+        ProjectInfoPlanAgg agg2 = new ProjectInfoPlanAgg();
+        agg2.setPlanType(PlanTypeEnum.XIANGMUKU);
+        agg2.setProjectLibraryId(cmd.getId());
+        agg2 = projectInfoRepository.queryProjectInfoPlan(agg2);
+        agg2.setId(null);
+        agg2.setProjectLibraryId(newId);
+        projectInfoPlanDomainSvr.saveProjectInfoPlan(agg2);
     }
 
     @Override
     public void enterProjectPlanType1(ProjectLibraryCmd cmd) {
 
+        ProjectInfoPlanAgg agg = new ProjectInfoPlanAgg();
+        agg.setPlanType(PlanTypeEnum.XIANGMUKU);
+        agg.setProjectLibraryId(cmd.getId());
+        agg = projectInfoRepository.queryProjectInfoPlan(agg);
+
+        agg.setPlanType(PlanTypeEnum.YISHANG);
+        projectLibrarySvr.intoNextPlan(agg);
+    }
+
+    @Override
+    public void enterProjectPlanType2(ProjectLibraryCmd cmd) {
+
+        ProjectInfoPlanAgg agg = new ProjectInfoPlanAgg();
+        agg.setPlanType(PlanTypeEnum.YISHANG);
+        agg.setProjectLibraryId(cmd.getId());
+        agg = projectInfoRepository.queryProjectInfoPlan(agg);
+
+        agg.setPlanType(PlanTypeEnum.ERSHANG);
+        projectLibrarySvr.intoNextPlan(agg);
+    }
+
+    @Override
+    public void cancelEnterProjectPlanType1(ProjectLibraryCmd cmd) {
+        ProjectInfoPlanAgg agg = new ProjectInfoPlanAgg();
+        agg.setPlanType(PlanTypeEnum.XIANGMUKU);
+        agg.setProjectLibraryId(cmd.getId());
+        agg = projectInfoRepository.queryProjectInfoPlan(agg);
+
+        projectLibrarySvr.cancelIntoNextPlan(agg);
+    }
+    @Override
+    public void cancelEnterProjectPlanType2(ProjectLibraryCmd cmd) {
+        ProjectInfoPlanAgg agg = new ProjectInfoPlanAgg();
+        agg.setPlanType(PlanTypeEnum.ERSHANG);
+        agg.setProjectLibraryId(cmd.getId());
+        agg = projectInfoRepository.queryProjectInfoPlan(agg);
+
+        projectLibrarySvr.cancelIntoNextPlan(agg);
+    }
+
+    @Override
+    public void removeProjectLibrary(ProjectLibraryCmd cmd) {
 
     }
 
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectlibrary/ProjectLibraryQuerySvr.java b/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectlibrary/ProjectLibraryQuerySvr.java
new file mode 100644
index 000000000..9f03eee89
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/application/query/projectlibrary/ProjectLibraryQuerySvr.java
@@ -0,0 +1,36 @@
+package com.seasky.projectplan.application.query.projectlibrary;
+
+import com.seasky.core.common.Pagination;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryOut;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryQry;
+
+/**
+ * 椤圭洰搴撴煡璇� svr
+ *
+ * @author chenqi
+ * @date 2021/06/02
+ */
+public interface ProjectLibraryQuerySvr {
+    /**
+     * 鍒嗛〉鏄剧ず椤圭洰搴撲俊鎭�
+     *
+     * @param qry qry
+     */
+    Pagination<ProjectLibraryOut> queryProjectLibraryPage(ProjectLibraryQry qry);
+
+    /**
+     * 鏍规嵁鐧诲綍浜烘墍鍦ㄧ殑閮ㄩ棬闆嗗悎鑾峰彇鍏舵墍鏈夌殑椤圭洰搴撲俊鎭�(鍒嗛〉鏄剧ず)
+     *
+     * @param qry qry
+     * @return {@link Pagination<ProjectLibraryOut>}
+     */
+    Pagination<ProjectLibraryOut> queryProjectLibraryPageByCurrentUserDept(ProjectLibraryQry qry);
+
+    /**
+     * 鑾峰彇鐧诲綍浜烘墍鍦ㄩ儴闂ㄧ殑鍘嗗彶骞村害鐨勯」鐩簱淇℃伅(鍒嗛〉鏄剧ず)
+     *
+     * @param qry qry
+     * @return {@link Pagination<ProjectLibraryOut>}
+     */
+    Pagination<ProjectLibraryOut> queryHistoryProjectLibraryPageByCurrentUserDept(ProjectLibraryQry qry);
+}
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/domain/aggregate/common/PlanStateEnum.java b/ServiceSite/src/main/java/com/seasky/projectplan/domain/aggregate/common/PlanStateEnum.java
new file mode 100644
index 000000000..9bb03b168
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/domain/aggregate/common/PlanStateEnum.java
@@ -0,0 +1,11 @@
+package com.seasky.projectplan.domain.aggregate.common;
+
+/**
+ * 璁″垝涔︾姸鎬佹灇涓�
+ *
+ * @author chenqi
+ * @date 2021/06/02
+ */
+public enum PlanStateEnum {
+  UNCOMMITTED,APPROVED,NEWLYBUILD
+}
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/ProjectLibrarySvr.java b/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/ProjectLibrarySvr.java
index 45e0f589e..79f02adb6 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/ProjectLibrarySvr.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/ProjectLibrarySvr.java
@@ -1,5 +1,6 @@
 package com.seasky.projectplan.domain.service;
 
+import com.seasky.projectplan.domain.aggregate.projectInfoplan.ProjectInfoPlanAgg;
 import com.seasky.projectplan.domain.aggregate.projectlibrary.ProjectLibraryAgg;
 
 /**
@@ -30,4 +31,18 @@ public interface ProjectLibrarySvr {
      * @param projectLibraryAgg 椤圭洰鍥句功棣唃g
      */
     void intoQuota(ProjectLibraryAgg projectLibraryAgg);
+
+    /**
+     * 杩涘叆涓嬩竴闃舵璁″垝涔︾敵鎶�
+     *
+     * @param agg gg
+     */
+    void intoNextPlan(ProjectInfoPlanAgg agg);
+
+    /**
+     * 鍙栨秷杩涘叆涓嬩竴闃舵璁″垝涔︾敵鎶�
+     *
+     * @param agg gg
+     */
+    void cancelIntoNextPlan(ProjectInfoPlanAgg agg);
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/ProjectLibrarySvrImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/ProjectLibrarySvrImpl.java
index 63a2bd559..581732342 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/ProjectLibrarySvrImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/ProjectLibrarySvrImpl.java
@@ -1,6 +1,9 @@
 package com.seasky.projectplan.domain.service;
 
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.seasky.core.util.ExceptionUtil;
+import com.seasky.projectplan.domain.aggregate.common.PlanStateEnum;
+import com.seasky.projectplan.domain.aggregate.projectInfoplan.ProjectInfoPlanAgg;
 import com.seasky.projectplan.domain.aggregate.projectlibrary.ProjectLibraryAgg;
 import com.seasky.projectplan.domain.aggregate.projectlibrary.ProjectLibraryRepository;
 import org.springframework.stereotype.Service;
@@ -19,6 +22,9 @@ public class ProjectLibrarySvrImpl implements ProjectLibrarySvr{
     @Resource
     ProjectLibraryRepository repository;
 
+    @Resource
+    ProjectInfoPlanDomainSvr projectInfoPlanDomainSvr;
+
     @Override
     public Long saveProjectLibrary(ProjectLibraryAgg agg) {
         if(ObjectUtils.isEmpty(agg.getId())){
@@ -27,7 +33,6 @@ public class ProjectLibrarySvrImpl implements ProjectLibrarySvr{
             repository.modifyProjectLibrary(agg);
             return agg.getId();
         }
-
     }
 
     @Override
@@ -39,4 +44,25 @@ public class ProjectLibrarySvrImpl implements ProjectLibrarySvr{
     public void intoQuota(ProjectLibraryAgg agg) {
 
     }
+
+    @Override
+    public void intoNextPlan(ProjectInfoPlanAgg agg) {
+        if(PlanStateEnum.APPROVED.toString().equals(agg.getState())){
+            throw ExceptionUtil.getException(null,"娌℃湁瀹℃壒閫氳繃鐨勬暟鎹笉鑳借繘鍏ヤ竴涓�");
+        }
+        agg.setState(PlanStateEnum.UNCOMMITTED.toString());
+        agg.setId(null);
+
+        projectInfoPlanDomainSvr.saveProjectInfoPlan(agg);
+
+    }
+
+    @Override
+    public void cancelIntoNextPlan(ProjectInfoPlanAgg agg) {
+        if(PlanStateEnum.UNCOMMITTED.toString().equals(agg.getState())){
+            throw ExceptionUtil.getException(null,"闈烇紙寰呮彁浜わ級鐘舵€佷笉鑳藉彇娑堣繘鍏ヤ笅涓€鐢虫姤涔�");
+        }
+        agg.setState(PlanStateEnum.NEWLYBUILD.toString());
+        projectInfoPlanDomainSvr.saveProjectInfoPlan(agg);
+    }
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ProjectLibraryMapper.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ProjectLibraryMapper.java
index 03e6d98bd..e7e00428c 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ProjectLibraryMapper.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/table/ProjectLibraryMapper.java
@@ -1,8 +1,13 @@
 package com.seasky.projectplan.infrastructure.db.mapper.table;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.seasky.core.base.BaseMapper;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryOut;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryQry;
 import com.seasky.projectplan.infrastructure.dataobject.po.ProjectLibraryPo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -18,4 +23,5 @@ public interface ProjectLibraryMapper extends BaseMapper<ProjectLibraryPo> {
     List<ProjectLibraryPo> selectAll();
 
 
+    Page<ProjectLibraryPo> queryList(IPage<ProjectLibraryOut> page, @Param("pm") ProjectLibraryQry qry);
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/xml/ProjectLibraryMapper.xml b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/xml/ProjectLibraryMapper.xml
index c9e2c70cc..5cf71b6cb 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/xml/ProjectLibraryMapper.xml
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/xml/ProjectLibraryMapper.xml
@@ -4,4 +4,10 @@
 
 
     <select id="selectAll" resultType="com.seasky.projectplan.infrastructure.dataobject.po.ProjectLibraryPo"></select>
+    <select id="queryList" resultType="com.seasky.projectplan.infrastructure.dataobject.po.ProjectLibraryPo">
+        select * from project_library where available = 'YES'
+        <if test="pm.departmentCode != null and pm.departmentCode != ''">
+        and department_code = #{pm.departmentCode}
+        </if>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectlibrary/ProjectLibraryQuerySvrImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectlibrary/ProjectLibraryQuerySvrImpl.java
new file mode 100644
index 000000000..1d4569c40
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectlibrary/ProjectLibraryQuerySvrImpl.java
@@ -0,0 +1,76 @@
+package com.seasky.projectplan.infrastructure.reader.projectlibrary;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.seasky.core.common.Pagination;
+import com.seasky.projectplan.application.query.projectlibrary.ProjectLibraryQuerySvr;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryOut;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryQry;
+import com.seasky.projectplan.infrastructure.db.mapper.table.ProjectLibraryMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 椤圭洰搴撴煡璇vr impl
+ *
+ * @author chenqi
+ * @date 2021/06/02
+ */
+@Service
+public class ProjectLibraryQuerySvrImpl implements ProjectLibraryQuerySvr {
+    @Resource
+    ProjectLibraryMapper projectLibraryMapper;
+
+
+    @Override
+    public Pagination queryProjectLibraryPage(ProjectLibraryQry qry) {
+        Page<ProjectLibraryOut> page;
+        if(ObjectUtils.isEmpty(qry.getPageNumber())||ObjectUtils.isEmpty(qry.getPageSize())){
+            page = new Page<>(1,10);
+        }else {
+            page = new Page<>(qry.getPageNumber(), qry.getPageSize());
+        }
+        List<ProjectLibraryOut> outList = ProjectLibraryReaderConvert.posToOutList(projectLibraryMapper.queryList(page, ProjectLibraryQry.builder().build()).getRecords());
+
+        //todo:鏍规嵁 pos 鐨� ids 鍘绘煡璇� ProjectPlanBookMapper ,鑾峰彇姣忎竴涓猧d涓嬬殑涓€缁� po鏁版嵁
+
+        page.setRecords(outList);
+        return Pagination.fromPage(page);
+
+    }
+
+    @Override
+    public Pagination<ProjectLibraryOut> queryProjectLibraryPageByCurrentUserDept(ProjectLibraryQry qry) {
+        Page<ProjectLibraryOut> page;
+        if(ObjectUtils.isEmpty(qry.getPageNumber())||ObjectUtils.isEmpty(qry.getPageSize())){
+            page = new Page<>(1,10);
+        }else {
+            page = new Page<>(qry.getPageNumber(), qry.getPageSize());
+        }
+        List<ProjectLibraryOut> outList = ProjectLibraryReaderConvert.posToOutList(projectLibraryMapper.queryList(page, ProjectLibraryQry.builder().departmentCode(qry.getDepartmentCode()).build()).getRecords());
+
+        //todo:鏍规嵁 pos 鐨� ids 鍘绘煡璇� ProjectPlanBookMapper ,鑾峰彇姣忎竴涓猧d涓嬬殑涓€缁� po鏁版嵁
+
+        page.setRecords(outList);
+        return Pagination.fromPage(page);
+    }
+
+    @Override
+    public Pagination<ProjectLibraryOut> queryHistoryProjectLibraryPageByCurrentUserDept(ProjectLibraryQry qry) {
+        Page<ProjectLibraryOut> page;
+        if(ObjectUtils.isEmpty(qry.getPageNumber())||ObjectUtils.isEmpty(qry.getPageSize())){
+            page = new Page<>(1,10);
+        }else {
+            page = new Page<>(qry.getPageNumber(), qry.getPageSize());
+        }
+        List<ProjectLibraryOut> outList = ProjectLibraryReaderConvert.posToOutList(projectLibraryMapper.queryList(page, ProjectLibraryQry.builder().departmentCode(qry.getDepartmentCode()).build()).getRecords());
+
+        //todo:鏍规嵁 pos 鐨� ids 鍘绘煡璇� ProjectPlanBookMapper ,鑾峰彇姣忎竴涓猧d涓嬬殑涓€缁� po鏁版嵁
+
+        page.setRecords(outList);
+        return Pagination.fromPage(page);
+    }
+
+}
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectlibrary/ProjectLibraryReaderConvert.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectlibrary/ProjectLibraryReaderConvert.java
new file mode 100644
index 000000000..744c7bb7a
--- /dev/null
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/reader/projectlibrary/ProjectLibraryReaderConvert.java
@@ -0,0 +1,20 @@
+package com.seasky.projectplan.infrastructure.reader.projectlibrary;
+
+import com.seasky.core.ddd.utils.MapperUtils;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryOut;
+import com.seasky.projectplan.infrastructure.dataobject.po.ProjectLibraryPo;
+
+import java.util.List;
+
+/**
+ * 椤圭洰搴撹浆鎹㈢被
+ *
+ * @author chenqi
+ * @date 2021/06/02
+ */
+public class ProjectLibraryReaderConvert {
+
+    public static List<ProjectLibraryOut> posToOutList(List<ProjectLibraryPo> pos) {
+        return MapperUtils.INSTANCE.mapAsList(ProjectLibraryOut.class,pos);
+    }
+}
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectLibraryController.java b/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectLibraryController.java
index bfae3df87..3fccb3f5e 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectLibraryController.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/interfaces/controller/ProjectLibraryController.java
@@ -1,15 +1,21 @@
 package com.seasky.projectplan.interfaces.controller;
 
+import com.seasky.core.common.ResponseCode;
 import com.seasky.core.common.Result;
 import com.seasky.projectplan.api.IProjectLibrary;
 import com.seasky.projectplan.application.command.projectlibrary.AProjectLibrarySvr;
+import com.seasky.projectplan.application.query.projectlibrary.ProjectLibraryQuerySvr;
 import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryCmd;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryOut;
+import com.seasky.projectplan.dto.projectlibrary.ProjectLibraryQry;
 import io.swagger.annotations.Api;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 
+import static com.seasky.core.common.Response.ok;
+
 /**
  * 椤圭洰搴揂PI
  *
@@ -23,9 +29,66 @@ public class ProjectLibraryController implements IProjectLibrary {
     @Resource
     AProjectLibrarySvr service;
 
+    @Resource
+    ProjectLibraryQuerySvr querySvr;
+
     @Override
     public Result<Object> saveProjectLibrary(@RequestBody ProjectLibraryCmd cmd) {
         service.saveProjectLibrary(cmd);
-        return null;
+        return ok(ResponseCode.SUCCESS);
     }
+
+
+    @Override
+    public Result<Object> copyHistoryProjectLibrary(@RequestBody ProjectLibraryCmd cmd) {
+        service.copyHistoryProjectLibrary(cmd);
+        return ok(ResponseCode.SUCCESS);
+    }
+
+    @Override
+    public Result<Object> enterProjectPlanType1(@RequestBody ProjectLibraryCmd cmd) {
+        service.enterProjectPlanType1(cmd);
+        return ok(ResponseCode.SUCCESS);
+    }
+
+    @Override
+    public Result<Object> enterProjectPlanType2(@RequestBody ProjectLibraryCmd cmd) {
+        service.enterProjectPlanType2(cmd);
+        return ok(ResponseCode.SUCCESS);
+    }
+
+    @Override
+    public Result<Object> cancelEnterProjectPlanType1(@RequestBody ProjectLibraryCmd cmd) {
+        service.cancelEnterProjectPlanType1(cmd);
+        return ok(ResponseCode.SUCCESS);
+    }
+
+    @Override
+    public Result<Object> cancelEnterProjectPlanType2(@RequestBody ProjectLibraryCmd cmd) {
+        service.cancelEnterProjectPlanType2(cmd);
+        return ok(ResponseCode.SUCCESS);
+    }
+
+    @Override
+    public Result<Object> removeProjectLibrary(@RequestBody ProjectLibraryCmd cmd) {
+        service.removeProjectLibrary(cmd);
+        return ok(ResponseCode.SUCCESS);
+    }
+
+    @Override
+    public Result<ProjectLibraryOut> queryProjectLibraryPage(@RequestBody ProjectLibraryQry qry) {
+        return ok(ResponseCode.SUCCESS,querySvr.queryProjectLibraryPage(qry));
+    }
+
+    @Override
+    public Result<ProjectLibraryOut> queryProjectLibraryPageByCurrentUserDept(@RequestBody ProjectLibraryQry qry) {
+        return ok(ResponseCode.SUCCESS,querySvr.queryProjectLibraryPageByCurrentUserDept(qry));
+    }
+
+    @Override
+    public Result<ProjectLibraryOut> queryHistoryProjectLibraryPageByCurrentUserDept(@RequestBody ProjectLibraryQry qry) {
+        return ok(ResponseCode.SUCCESS,querySvr.queryHistoryProjectLibraryPageByCurrentUserDept(qry));
+    }
+
+
 }
-- 
GitLab