From ee251f51a02e198b8edc1d0972fea207051c5314 Mon Sep 17 00:00:00 2001
From: zhouquanseaskyshcom <zhouquan@seaskysh.com>
Date: Thu, 24 Nov 2022 17:24:28 +0800
Subject: [PATCH] xinzegn

---
 .../projectplan/api/IProjectLibrary.java      |  2 +-
 .../projectlibrary/AProjectLibrarySvr.java    |  2 +-
 .../AProjectLibrarySvrImpl.java               | 54 ++++++++++++++++++-
 .../controller/ProjectLibraryController.java  |  4 +-
 4 files changed, 57 insertions(+), 5 deletions(-)

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 d651714c..da76f3ae 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
@@ -106,7 +106,7 @@ public interface IProjectLibrary {
 
     @ApiOperation("14.浜哄憳缁忚垂杩涘叆浜屼笂")
     @PostMapping("/enterPersonProjectPlan")
-    Result<Object> enterPersonProjectPlan();
+    Result<Object> enterPersonProjectPlan(Integer year);
 
     /**
      * 鏃ュ父鍏敤缁忚垂杩涘叆浜屼笂
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 756b5425..09f67e14 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
@@ -97,7 +97,7 @@ public interface AProjectLibrarySvr {
      * 浜哄憳缁忚垂杩涘叆浜屼笂
      *
      */
-    void enterPersonProjectPlanType2();
+    void enterPersonProjectPlanType2(Integer year);
 
     /**
      * 杩涘叆瀹岀粨搴�
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 59cb0651..64708f5b 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
@@ -1,5 +1,6 @@
 package com.seasky.projectplan.application.command.projectlibrary;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.seasky.core.common.Error;
 import com.seasky.core.common.ResponseCode;
@@ -17,10 +18,12 @@ import com.seasky.projectplan.domain.aggregate.projectdailyplan.ProjectDailyPlan
 import com.seasky.projectplan.domain.aggregate.projectdailyplan.ProjectDailyRepository;
 import com.seasky.projectplan.domain.aggregate.projectlibrary.ProjectLibraryAgg;
 import com.seasky.projectplan.domain.aggregate.projectlibrary.ProjectLibraryRepository;
+import com.seasky.projectplan.domain.aggregate.projectpersonplan.ProjectPersonPlanAgg;
 import com.seasky.projectplan.domain.aggregate.quotamanage.QuotaManageRepository;
 import com.seasky.projectplan.domain.aggregate.quotaproject.QuotaProjectAgg;
 import com.seasky.projectplan.domain.service.FlowSvr;
 import com.seasky.projectplan.domain.service.ProjectLibrarySvr;
+import com.seasky.projectplan.domain.service.ProjectPersonPlanDomainSvr;
 import com.seasky.projectplan.dto.attachment.AttachmentInfoOut;
 import com.seasky.projectplan.dto.baseconfig.budgetswitch.BudgetSwitchOut;
 import com.seasky.projectplan.dto.baseconfig.budgetswitch.BudgetSwitchQry;
@@ -39,6 +42,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 椤圭洰搴搒vr impl
@@ -69,6 +73,8 @@ public class AProjectLibrarySvrImpl implements AProjectLibrarySvr {
     ProjectPlanBookMapper projectPlanBookMapper;
     @Resource
     private AttachmentSvr attachmentSvr;
+    @Resource
+    private ProjectPersonPlanDomainSvr personPlanDomainSvr;
 
     /**
      * 鏂板淇敼椤圭洰
@@ -313,7 +319,53 @@ public class AProjectLibrarySvrImpl implements AProjectLibrarySvr {
      * 浜哄憳缁忚垂杩涘叆浜屼笂
      */
     @Override
-    public void enterPersonProjectPlanType2() {
+    public void enterPersonProjectPlanType2(Integer year) {
+        //鑾峰彇褰撳墠鐧诲綍浜洪儴闂ㄧ紪鍙烽泦鍚�
+        List<String> departmentCodeList = BaseDataUtil.makeCurrentUserDeptCodeList();
+        //鏍¢獙褰撳墠鏄惁鏈夌敵鎶ヤ功
+        QueryWrapper<ProjectPlanBookPo> projectPlanBookPoQueryWrapper = new QueryWrapper<>();
+        projectPlanBookPoQueryWrapper.in("department_code", departmentCodeList)
+                .eq("plan_book_type", 3)
+                .eq("year", year)
+                .eq("available", "YES")
+                .eq("plan_type", PlanTypeEnum.ERSHANG);
+        List<ProjectPlanBookPo> projectPlanBookPoList = projectPlanBookMapper.selectList(projectPlanBookPoQueryWrapper);
+        List<Long> idList = StreamUtils.convertList(projectPlanBookPoList, ProjectPlanBookPo::getProjectLibraryId);
+        QueryWrapper<ProjectPlanBookPo> bookPoQueryWrapper = new QueryWrapper<>();
+        bookPoQueryWrapper.in("department_code", departmentCodeList)
+                .eq("year", year)
+                .eq("plan_book_type", 3)
+                .eq("available", "YES")
+                .eq("plan_type", PlanTypeEnum.YISHANG);
+        List<ProjectPlanBookPo> projectPlanBookPos = projectPlanBookMapper.selectList(bookPoQueryWrapper);
+        if (ObjectUtils.isEmpty(projectPlanBookPos)) {
+            throw ExceptionUtil.getException(null, "涓婂勾娌℃湁鍙互鍚屾鐨勭敵鎶ヤ功");
+        }
+        List<ProjectPlanBookPo> collect = projectPlanBookPos.stream().filter(item -> !idList.contains(item.getProjectLibraryId())).collect(Collectors.toList());
+        for (ProjectPlanBookPo projectPlanBookPo : collect) {
+            syncOntToTwo(projectPlanBookPo.getId(), PlanTypeEnum.ERSHANG, flowTypeEnum.renyuan.key());
+        }
+    }
+    /**
+     * 鍚屾鏈勾涓€涓婁汉鍛樼敵鎶ヤ功鍒颁簩涓�
+     *
+     * @param id id
+     */
+    public void syncOntToTwo(Long id, PlanTypeEnum planTypeEnum, String flowType) {
+        ProjectPersonPlanAgg agg = new ProjectPersonPlanAgg();
+        agg.setId(id);
+        agg = personPlanDomainSvr.queryProjectPersonPlan(agg);
+        agg.setPlanType(planTypeEnum);
+        //鍚姩鏂扮殑娴佺▼
+        Long processCode = flowSvr.projectPlanStartFlow(flowTypeEnum.renyuan.key());
+        if (processCode == null) {
+            throw new DataAccessException(new Error(ResponseCode.DATA_VERIFY_EXCEPTION, null, "鍚姩娴佺▼澶辫触", ""));
+        }
+        ExceptionUtil.isNull(processCode, "鍚姩娴佺▼澶辫触");
+        agg.setYear(agg.getYear());
+        //娴佺▼id瀛樺叆鑱氬悎
+        agg.setProcessId(processCode);
+        personPlanDomainSvr.syncThisYearFundBook(agg);
     }
 
     /**
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 0ff8766d..14854bc4 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
@@ -159,8 +159,8 @@ public class ProjectLibraryController implements IProjectLibrary {
 
     @ApiOperation("14.浜哄憳缁忚垂杩涘叆浜屼笂")
     @Override
-    public Result<Object> enterPersonProjectPlan() {
-        service.enterPersonProjectPlanType2();
+    public Result<Object> enterPersonProjectPlan(@RequestParam Integer year) {
+        service.enterPersonProjectPlanType2(year);
         return ok(ResponseCode.SUCCESS);
     }
 
-- 
GitLab