From 932a37eb4a078083bb393d293ae03c304ea23dbf Mon Sep 17 00:00:00 2001
From: XLR_asd <xueyawei@seaskysh.com>
Date: Thu, 20 May 2021 09:22:24 +0800
Subject: [PATCH] =?UTF-8?q?feat=20=E9=A1=B9=E7=9B=AE=E7=B1=BB=E5=9E=8B=20C?=
 =?UTF-8?q?=E7=BA=BFdomain=E5=B1=82=E3=80=81=E4=BB=93=E5=82=A8=E5=B1=82=20?=
 =?UTF-8?q?=20=E4=BF=9D=E5=AD=98=E6=8E=A5=E5=8F=A3=E4=BB=A3=E7=A0=81?=
 =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=9B=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?=
 =?UTF-8?q?=E6=B7=BB=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../budgetinfo/BudgetInfoRepository.java      | 10 ++++
 .../service/BudgetInfoDomainSvrImpl.java      | 35 +++++++++-----
 .../db/mapper/table/BudgetInfoMapper.java     | 13 ++++--
 .../db/mapper/xml/BudgetInfoMapper.xml        | 46 ++++++++++++++++++-
 .../budgetinfo/BudgetInfoConvert.java         | 12 +++++
 .../budgetinfo/BudgetInfoRepositoryImpl.java  | 19 +++++++-
 6 files changed, 116 insertions(+), 19 deletions(-)

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 acbdc2701..3b441743f 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
@@ -2,6 +2,8 @@ package com.seasky.projectplan.domain.aggregate.budgetinfo;
 
 import com.seasky.core.ddd.base.DddRepository;
 
+import java.util.List;
+
 /**
  * 椤圭洰绫诲瀷浠撳偍灞�
  *
@@ -33,4 +35,12 @@ public interface BudgetInfoRepository extends DddRepository<BudgetInfoAgg> {
      * @return {@link BudgetInfoAgg}
      */
     BudgetInfoAgg queryBudgetInfo(BudgetInfoAgg budgetInfoAgg);
+
+    /**
+     * 鏌ヨ椤圭洰绫诲瀷C绾�
+     *
+     * @param budgetInfoAgg 缁忚垂鎬�
+     * @return {@link BudgetInfoAgg}
+     */
+    List<BudgetInfoAgg> queryBudgetInfoList(BudgetInfoAgg budgetInfoAgg);
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/BudgetInfoDomainSvrImpl.java b/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/BudgetInfoDomainSvrImpl.java
index 1f57cb28d..a9c9042f6 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/BudgetInfoDomainSvrImpl.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/domain/service/BudgetInfoDomainSvrImpl.java
@@ -9,6 +9,8 @@ import com.seasky.projectplan.domain.aggregate.budgetinfo.BudgetInfoRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * 椤圭洰绫诲瀷DomainSvrimpl
  *
@@ -30,23 +32,21 @@ public class BudgetInfoDomainSvrImpl implements BudgetInfoDomainSvr{
      */
     @Override
     public Integer saveBudgetInfo(BudgetInfoAgg budgetInfoAgg) {
-        if(budgetInfoAgg.getParentBudgetId() != null){
-            if (repository.queryBudgetInfo(BudgetInfoAgg.builder().id(budgetInfoAgg.getParentBudgetId()).build()) == null){
-                throw new DataVerifyException(new Error(ResponseCode.DATA_VERIFY_EXCEPTION, null, "鎵€閫夐」鐩被鍨嬬埗绾т笉瀛樺湪", ""));
-            }
+        if (budgetInfoAgg.getBudgetName() == null || budgetInfoAgg.getBudgetCode() == null || budgetInfoAgg.getParentBudgetId() == null){
+            throw new DataVerifyException(new Error(ResponseCode.DATA_VERIFY_EXCEPTION, null, "椤圭洰绫诲瀷鍚嶇О銆佺紪鍙蜂笉鑳戒负绌�,蹇呴』鎸囧畾鍏剁埗绾�", ""));
+        }
+        if (repository.queryBudgetInfo(BudgetInfoAgg.builder().id(budgetInfoAgg.getParentBudgetId()).build()) == null){
+            throw new DataVerifyException(new Error(ResponseCode.DATA_VERIFY_EXCEPTION, null, "鎵€閫夐」鐩被鍨嬬埗绾т笉瀛樺湪", ""));
         }
+        verifyBudgetInfo(budgetInfoAgg);
 
-        //TODO year濡傛灉涓虹┖ 榛樿鑾峰彇baseconfig涓殑 BudgetSwitchEntity鐨剏ear灞炴€�
+        //TODO year濡傛灉涓虹┖ 榛樿鑾峰彇base config涓殑 BudgetSwitchEntity鐨剏ear灞炴€�
 
-        verifyBudgetInfo(budgetInfoAgg);
         if (budgetInfoAgg.getId() == null){
             //鏂板
-            if (budgetInfoAgg.getBudgetName() == null || budgetInfoAgg.getBudgetCode() == null || budgetInfoAgg.getParentBudgetId() == null){
-                throw new DataVerifyException(new Error(ResponseCode.DATA_VERIFY_EXCEPTION, null, "椤圭洰绫诲瀷鍚嶇О銆佺紪鍙蜂笉鑳戒负绌�,蹇呴』鎸囧畾鍏剁埗绾�", ""));
-            }
         }else {
             //淇敼
-            BudgetInfoAgg modifyAgg = repository.queryBudgetInfo(budgetInfoAgg);
+            BudgetInfoAgg modifyAgg = repository.queryBudgetInfo(BudgetInfoAgg.builder().id(budgetInfoAgg.getId()).build());
             if (modifyAgg == null){
                 throw new DataVerifyException(new Error(ResponseCode.DATA_VERIFY_EXCEPTION, null, "鎵句笉鍒拌淇敼鐨勯」鐩被鍨嬪璞�", ""));
             }
@@ -66,9 +66,20 @@ public class BudgetInfoDomainSvrImpl implements BudgetInfoDomainSvr{
      */
     @Override
     public Integer removeBudgetInfo(BudgetInfoAgg budgetInfoAgg) {
-        return null;
+        BudgetInfoAgg modifyAgg = repository.queryBudgetInfo(BudgetInfoAgg.builder().id(budgetInfoAgg.getId()).build());
+        if (modifyAgg == null){
+            throw new DataVerifyException(new Error(ResponseCode.DATA_VERIFY_EXCEPTION, null, "鎵句笉鍒拌鍒犻櫎鐨勯」鐩被鍨嬪璞�", ""));
+        }
+        List<BudgetInfoAgg> modifyAggList = repository.queryBudgetInfoList(BudgetInfoAgg.builder().parentBudgetId(budgetInfoAgg.getId()).build());
+        if (modifyAggList.size() > 0){
+            throw new DataVerifyException(new Error(ResponseCode.DATA_VERIFY_EXCEPTION, null, "璇ラ」鐩被鍨嬪璞″瓨鍦ㄥ瓙绾�,涓嶈兘鍒犻櫎", ""));
+        }
+        return repository.removeBudgetInfo(budgetInfoAgg);
     }
 
+
+
+
     /**
      * 鏂板/淇敼 椤圭洰绫诲瀷 楠岃瘉鏄惁閲嶅
      *
@@ -83,7 +94,7 @@ public class BudgetInfoDomainSvrImpl implements BudgetInfoDomainSvr{
         if (verifyName != null){
             verify = false;
             if (budgetInfoAgg.getId() != null){
-                //id涓嶄负绌�(鍗充慨鏀归」鐩被鍨�) 鏃� 鏍¢獙閲嶅闇€鎺掗櫎鑷韩
+                //id涓嶄负绌�(鍗虫墽琛屼慨鏀归」鐩被鍨嬩笟鍔�) 鏃� 鏍¢獙閲嶅鎬ч渶鎺掗櫎鑷韩
                 if (budgetInfoAgg.getId().equals(verifyName.getId())){
                     verify = true;
                 }
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 8c3de2e53..883ac71da 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
@@ -29,11 +29,18 @@ public interface BudgetInfoMapper extends BaseMapper<BudgetInfoPo> {
 
 
     /**
-     * 鏌ヨ璧勯噾
-     * 鏌ヨ缁忚垂淇℃伅C绾�
+     * 鏌ヨ璧勯噾C绾�
      *
      * @param budgetInfoQo 棰勭畻淇℃伅Qo
      * @return {@link BudgetInfoPo}
      */
-    BudgetInfoPo queryFunding(@Param("pm") BudgetInfoQo budgetInfoQo);
+    BudgetInfoPo queryBudgetInfo(@Param("pm") BudgetInfoQo budgetInfoQo);
+
+    /**
+     * 鏌ヨ璧勯噾闆嗗悎C绾�
+     *
+     * @param budgetInfoQo 棰勭畻淇℃伅Qo
+     * @return {@link BudgetInfoPo}
+     */
+    List<BudgetInfoPo> queryBudgetInfoList(@Param("pm") BudgetInfoQo budgetInfoQo);
 }
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/xml/BudgetInfoMapper.xml b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/xml/BudgetInfoMapper.xml
index 7fe89aa27..195a7fb81 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/xml/BudgetInfoMapper.xml
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/db/mapper/xml/BudgetInfoMapper.xml
@@ -13,7 +13,50 @@
     </update>
 
 
-    <select id="queryFunding" resultType="com.seasky.projectplan.infrastructure.dataobject.po.BudgetInfoPo">
+    <select id="queryBudgetInfo" resultType="com.seasky.projectplan.infrastructure.dataobject.po.BudgetInfoPo">
+        select * from budget_info
+        <where>
+            available = 'YES'
+            <if test="pm.id != null">
+                and id = #{pm.id}
+            </if>
+            <if test="pm.year != null">
+                and year = #{pm.year}
+            </if>
+            <if test="pm.budgetName != null and pm.budgetName != ''">
+                and budget_name = #{pm.budgetName}
+            </if>
+            <if test="pm.budgetCode != null and pm.budgetCode != ''">
+                and budget_code = #{pm.budgetCode}
+            </if>
+            <if test="pm.parentBudgetId != null">
+                and funding_name = #{pm.parentBudgetId}
+            </if>
+            <if test="pm.canUseDeptJson != null and pm.canUseDeptJson != ''">
+                and can_use_dept_json = #{pm.canUseDeptJson}
+            </if>
+            <if test="pm.functionDeptJson != null and pm.functionDeptJson != ''">
+                and function_dept_json = #{pm.functionDeptJson}
+            </if>
+            <if test="pm.canUseFundJson != null and pm.canUseFundJson != ''">
+                and can_use_fund_json = #{pm.canUseFundJson}
+            </if>
+            <if test="pm.beginDate != null ">
+                and begin_date = #{pm.beginDate}
+            </if>
+            <if test="pm.endDate != null ">
+                and end_date = #{pm.endDate}
+            </if>
+            <if test="pm.chargerJson != null and pm.chargerJson != ''">
+                and charger_json = #{pm.chargerJson}
+            </if>
+            <if test="pm.haveTarget != null">
+                and have_target = #{pm.haveTarget}
+            </if>
+        </where>
+    </select>
+    <select id="queryBudgetInfoList"
+            resultType="com.seasky.projectplan.infrastructure.dataobject.po.BudgetInfoPo">
         select * from budget_info
         <where>
             available = 'YES'
@@ -55,7 +98,6 @@
             </if>
         </where>
     </select>
-
 
 
 </mapper>
\ No newline at end of file
diff --git a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/repository/budgetinfo/BudgetInfoConvert.java b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/repository/budgetinfo/BudgetInfoConvert.java
index 3138c6cbc..eb63aeb82 100644
--- a/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/repository/budgetinfo/BudgetInfoConvert.java
+++ b/ServiceSite/src/main/java/com/seasky/projectplan/infrastructure/repository/budgetinfo/BudgetInfoConvert.java
@@ -5,6 +5,8 @@ import com.seasky.projectplan.domain.aggregate.budgetinfo.BudgetInfoAgg;
 import com.seasky.projectplan.infrastructure.dataobject.po.BudgetInfoPo;
 import com.seasky.projectplan.infrastructure.dataobject.qo.BudgetInfoQo;
 
+import java.util.List;
+
 /**
  * 椤圭洰绫诲瀷宸ュ巶绫�
  *
@@ -43,4 +45,14 @@ public class BudgetInfoConvert {
         return MapperUtils.INSTANCE.map(BudgetInfoAgg.class,budgetInfoPo);
     }
 
+    /**
+     * po绫诲垪琛� 杞� 鑱氬悎鏍瑰垪琛�
+     *
+     * @param budgetInfoPos 棰勭畻淇℃伅pos
+     * @return {@link List<BudgetInfoAgg>}
+     */
+    public static List<BudgetInfoAgg> poListToAggList(List<BudgetInfoPo> budgetInfoPos){
+        return MapperUtils.INSTANCE.mapAsList(BudgetInfoAgg.class,budgetInfoPos);
+    }
+
 }
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 55c68a267..b3d841afb 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
@@ -13,6 +13,8 @@ import com.seasky.projectplan.infrastructure.db.mapper.table.BudgetInfoMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * 椤圭洰绫诲瀷 浠撳偍灞俰mpl
  *
@@ -68,8 +70,21 @@ public class BudgetInfoRepositoryImpl implements BudgetInfoRepository {
     @Override
     public BudgetInfoAgg queryBudgetInfo(BudgetInfoAgg budgetInfoAgg) {
         BudgetInfoQo fundingQo = BudgetInfoConvert.aggToQo(budgetInfoAgg);
-        BudgetInfoPo fundingParam = budgetInfoMapper.queryFunding(fundingQo);
-        return BudgetInfoConvert.poToAgg(fundingParam);
+        BudgetInfoPo budgetInfoPo = budgetInfoMapper.queryBudgetInfo(fundingQo);
+        return BudgetInfoConvert.poToAgg(budgetInfoPo);
+    }
+
+    /**
+     * 鏌ヨ椤圭洰绫诲瀷淇℃伅鍒楄〃
+     *
+     * @param budgetInfoAgg 棰勭畻淇℃伅鑱氬悎鏍�
+     * @return {@link List<BudgetInfoAgg>}
+     */
+    @Override
+    public List<BudgetInfoAgg> queryBudgetInfoList(BudgetInfoAgg budgetInfoAgg) {
+        BudgetInfoQo fundingQo = BudgetInfoConvert.aggToQo(budgetInfoAgg);
+        List<BudgetInfoPo> budgetInfoPos = budgetInfoMapper.queryBudgetInfoList(fundingQo);
+        return BudgetInfoConvert.poListToAggList(budgetInfoPos);
     }
 
 
-- 
GitLab