Browse Source

修复了一些BUG

liuyc 2 years ago
parent
commit
62b07b5c77
20 changed files with 387 additions and 163 deletions
  1. 30 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreePrivateDTO3.java
  2. 2 2
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTree.java
  3. 4 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractVO2.java
  4. 7 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java
  5. 44 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java
  6. 19 5
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java
  7. 11 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java
  8. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java
  9. 2 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml
  10. 5 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  11. 12 7
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  12. 5 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java
  13. 12 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  14. 1 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java
  15. 1 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java
  16. 4 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java
  17. 19 20
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  18. 111 43
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  19. 12 11
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  20. 85 53
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

+ 30 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreePrivateDTO3.java

@@ -0,0 +1,30 @@
+package org.springblade.manager.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WbsTreePrivateDTO3 implements Serializable {
+
+
+    /**
+     * p_key_id 主键id
+     */
+    private Long pKeyId;
+
+    /**
+     * 节点名称
+     */
+    private String deptName;
+
+    /**
+     * 表单类型
+     */
+    private Integer tableType;
+
+    /**
+     * 表单所属方
+     */
+    private String tableOwner;
+}

+ 2 - 2
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ArchiveTree.java

@@ -54,8 +54,8 @@ public class ArchiveTree extends BaseEntity {
     /**
      * 角色类型
      */
-    @ApiModelProperty(value = "角色类型")
-    private Integer roleType;
+    @ApiModelProperty(value = "岗位类型")
+    private Integer postType;
 
     /**
      * 节点类型

+ 4 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractVO2.java

@@ -48,6 +48,10 @@ public class WbsTreeContractVO2 implements Serializable {
      * 合同类型
      */
     private Integer contractType;
+    /**
+     * 合同类型
+     */
+    private String contractName;
     /**
      * 节点名
      */

+ 7 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java

@@ -214,15 +214,15 @@ public class ContractInfoController extends BladeController {
 
 
     /**
-     * 根据姓名查询用户
+     * 根据用户列表
      */
-    @GetMapping("/findUserByName")
+    @GetMapping("/findUserList")
     @ApiOperationSupport(order = 11)
-    @ApiOperation(value = "根据姓名模糊查询用户", notes = "传入用户姓名")
-    public R<List<User>> findUserByName(@RequestParam("name") String name) {
-        List<User> userByName = contractInfoService.findUserByName(name);
-        if (userByName.size() > 0) {
-            return R.data(userByName);
+    @ApiOperation(value = "", notes = "")
+    public R<List<User>> findUserList(){
+        List<User> user = contractInfoService.findUserList();
+        if (user.size() > 0) {
+            return R.data(user);
         }
         return R.success("未查询到信息");
     }

+ 44 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java

@@ -0,0 +1,44 @@
+package org.springblade.manager.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tool.api.R;
+import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.service.IWbsTreeContractService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+/**
+ * 控制器
+ *
+ * @author liuyc
+ * @since 2022-06-28
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/wbsTreeContract")
+@Api(value = "合同段wbs树", tags = "合同段wbs树接口")
+public class WbsTreeContractController extends BladeController {
+
+    private final IWbsTreeContractService iWbsTreeContractService;
+
+    @GetMapping("/searchNodeAllTable")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "查询当前节点下所有元素表信息", notes = "传入节点primaryKeyId")
+    public R searchNodeAllTable(String primaryKeyId) {
+        List<WbsTreeContract> list = iWbsTreeContractService.searchNodeAllTable(primaryKeyId);
+        if (list.size() > 0) {
+            return R.data(list);
+        }
+        return R.fail(200, "未查询到信息");
+    }
+
+
+}

+ 19 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeController.java

@@ -32,10 +32,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.manager.dto.FormElementDTO;
-import org.springblade.manager.dto.WbsFormElementDTO;
-import org.springblade.manager.dto.WbsTreeDTO;
-import org.springblade.manager.dto.WbsTreeDTO2;
+import org.springblade.manager.dto.*;
 import org.springblade.manager.entity.WbsFormElement;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreePrivate;
@@ -370,9 +367,26 @@ public class WbsTreeController extends BladeController {
         wbsTree.setAncestors(ancestors);
         wbsTree.setTenantId(tenantId);
         boolean b = wbsTreeService.importWbsTreeTableAndForm(excelFile, wbsTree);
-        return R.status(b);
+        if (b) {
+            return R.success("导入成功");
+        }
+        return R.fail(200, "导入失败");
+    }
+
+    /**
+     * 批量修改节点下元素表基本信息
+     */
+    @ApiOperationSupport(order = 18)
+    @ApiOperation(value = "批量修改节点下元素表基本信息", notes = "传入List<WbsTree>")
+    @RequestMapping(value = "/updateBatchNodeTableInfo", method = RequestMethod.POST)
+    public R updateBatchNodeTableInfo(@RequestBody List<WbsTree> WbsTrees) {
+        WbsTrees.stream().forEach(wbsTree -> {
+            wbsTree.setFullName(wbsTree.getDeptName());
+        });
+        return R.status(wbsTreeService.updateBatchById(WbsTrees));
     }
 
+
 }
 
 

+ 11 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreePrivateController.java

@@ -13,6 +13,7 @@ import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.dto.WbsTreeDTO2;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
+import org.springblade.manager.dto.WbsTreePrivateDTO3;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.entity.WbsTreePrivate;
@@ -209,5 +210,15 @@ public class WbsTreePrivateController extends BladeController {
         return R.status(b);
     }
 
+    /**
+     * 批量修改wbs私有树节点下元素表基本信息
+     */
+    @ApiOperationSupport(order = 10)
+    @ApiOperation(value = "批量修改wbs私有树节点下元素表基本信息", notes = "传入List<WbsTreePrivate>")
+    @RequestMapping(value = "/updateBatchNodeTableInfo", method = RequestMethod.POST)
+    public R updateBatchNodeTableInfo(@RequestBody List<WbsTreePrivateDTO3> wbsTreePrivates) {
+        return R.status(wbsTreePrivateService.updateBatchByPid(wbsTreePrivates));
+    }
+
 
 }

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java

@@ -57,7 +57,7 @@ public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
                                        @Param("pId") String pId,
                                        @Param("userName") String userName);
 
-    List<User> findUserByName(@Param("name") String name);
+    List<User> findUserList();
 
     Integer updatePasswordByUserId(@Param("userId") String userId,
                                    @Param("password") String password);

+ 2 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml

@@ -157,9 +157,8 @@
         </if>
     </select>
 
-    <select id="findUserByName" resultType="org.springblade.system.user.entity.User">
-        select `id`,`name`,account,`password` from blade_user WHERE `name` like concat('%',#{name},'%')
-        and is_deleted = 0 and `status`	= 1 order by create_time
+    <select id="findUserList" resultType="org.springblade.system.user.entity.User">
+        select `id`,`name`,account,`password` from blade_user WHERE is_deleted = 0 and `status` = 1 order by create_time
     </select>
 
     <select id="tree" resultMap="treeNodeResultMap">

+ 5 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -10,6 +10,7 @@ import org.springblade.manager.vo.WbsTreeContractTreeVO2;
 import org.springblade.manager.vo.WbsTreeContractVO;
 import org.springblade.manager.vo.WbsTreeContractVO2;
 
+import java.util.ArrayList;
 import java.util.List;
 
 
@@ -25,10 +26,10 @@ public interface WbsTreeContractMapper extends BaseMapper<WbsTreeContract> {
                                    @Param("wbsTree") WbsTreePrivate wbsTree);
 
 
-    void deleteByCondition(@Param("id") String id,
-                           @Param("wbsId") String wbsId,
-                           @Param("projectId") String projectId,
-                           @Param("contractId") String contractId);
+    void deleteBatch(@Param("ids") ArrayList<Long> ids,
+                     @Param("wbsId") String wbsId,
+                     @Param("projectId") String projectId,
+                     @Param("contractId") String contractId);
 
     WbsTreeContract selectByCondition(@Param("id") String id,
                                       @Param("projectId") String projectId,

+ 12 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml

@@ -91,10 +91,13 @@
         #{wbsTree.tableOwner},#{wbsTree.majorDataType},#{wbsTree.initTableName},#{wbsTree.isLinkTable})
     </insert>
 
-    <update id="deleteByCondition">
+    <update id="deleteBatch">
         UPDATE m_wbs_tree_contract
         SET is_deleted = 1
-        WHERE  id = #{id}
+        WHERE id IN
+        <foreach item="ids" collection="ids" open="(" close=")" separator=",">
+            #{ids}
+        </foreach>
         AND wbs_id = #{wbsId}
         AND project_id = #{projectId}
         AND contract_id = #{contractId}
@@ -186,8 +189,9 @@
         AND STATUS = 1
         AND is_deleted = 0
     </select>
+
     <select id="selectParent" resultType="org.springblade.manager.entity.WbsTreePrivate">
-        SELECT dept_name FROM m_wbs_tree_private
+        SELECT p_key_id,dept_name,full_name FROM m_wbs_tree_private
         WHERE
             project_id = #{projectId}
         AND wbs_id = #{wbsId}
@@ -212,17 +216,18 @@
     <select id="selectListByCondition" resultType="org.springblade.manager.vo.WbsTreeContractVO2">
         SELECT
             p_key_id AS "pKeyId",
-            id,
+            id AS "id",
             dept_name AS "deptName",
             full_name AS "fullName",
+            wbs_type AS "wbsType",
+            wbs_id AS "wbsId",
             project_id AS "projectId",
             (select project_name from m_project_info where id =#{projectId}) AS "projectName",
             contract_id AS "contractId",
             contract_type AS "contractType",
-            wbs_type AS "wbsType",
-            wbs_id AS "wbsId"
+            (select contract_name from m_contract_info ci where ci.id = t.contract_id) AS "contractName"
         FROM
-            m_wbs_tree_contract
+            m_wbs_tree_contract t
         WHERE project_id = #{projectId}
         AND contract_type = 1
         AND parent_id = 0

+ 5 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.java

@@ -3,6 +3,7 @@ package org.springblade.manager.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
+import org.springblade.manager.dto.WbsTreePrivateDTO3;
 import org.springblade.manager.entity.WbsTree;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.vo.WbsNodeTableVO;
@@ -28,9 +29,9 @@ public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
                                 @Param("projectId") String projectId);
 
 
-    WbsTreePrivate selectByCondition(@Param("id") String id,
-                                     @Param("wbsId") String wbsId,
-                                     @Param("projectId") String projectId);
+    List<WbsTreePrivate> selectByCondition(@Param("id") String id,
+                                           @Param("wbsId") String wbsId,
+                                           @Param("projectId") String projectId);
 
     void deleteByCondition(String id, String wbsId, String projectId);
 
@@ -81,4 +82,5 @@ public interface WbsTreePrivateMapper extends BaseMapper<WbsTreePrivate> {
 
     List<WbsTreePrivate> selectNodeAndTable(String id, String wbsId, String referencePrivateWbsProjectId);
 
+    boolean updateBatchByPid(@Param("wbsTreePrivates") WbsTreePrivateDTO3 wbsTreePrivates);
 }

+ 12 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -168,6 +168,16 @@
         AND is_deleted = 0
     </update>
 
+    <update id="updateBatchByPid">
+        UPDATE m_wbs_tree_private
+        SET dept_name = #{wbsTreePrivates.deptName},
+        full_name =#{wbsTreePrivates.deptName},
+        table_type = #{wbsTreePrivates.tableType},
+        table_owner = #{wbsTreePrivates.tableOwner}
+        WHERE
+        p_key_id = #{wbsTreePrivates.pKeyId}
+    </update>
+
 
     <select id="lazyTree" resultMap="treeNodeResultMap">
         SELECT
@@ -281,12 +291,11 @@
         FROM
             m_wbs_tree_private
         WHERE
-            id = #{id}
-            AND project_id = #{projectId}
+             project_id = #{projectId}
             AND wbs_id = #{wbsId}
             AND STATUS = 1
             AND is_deleted = 0
-            AND type = 1
+            AND id = #{id} OR (parent_id = #{id} and type = 2)
     </select>
 
     <select id="selectByCondition2" resultType="org.springblade.manager.entity.WbsTreePrivate">

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java

@@ -50,7 +50,7 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
     List<User> findUserInfoByCondition(String rId, String pId, String userName);
 
-    List<User> findUserByName(String name);
+    List<User> findUserList();
 
     Boolean updatePasswordByUserId(String userId, String password);
 

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreeContractService.java

@@ -22,4 +22,5 @@ public interface IWbsTreeContractService extends BaseService<WbsTreeContract> {
 
     List<WbsTreeContractTreeVO> lazyTreeTwo(String contractIdRelation, Long parentId, Integer contractType, String contractId);
 
+    List<WbsTreeContract> searchNodeAllTable(String primaryKeyId);
 }

+ 4 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsTreePrivateService.java

@@ -2,6 +2,7 @@ package org.springblade.manager.service;
 
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
+import org.springblade.manager.dto.WbsTreePrivateDTO3;
 import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.vo.WbsNodeTableVO;
 import org.springblade.manager.vo.WbsTreePrivateVO;
@@ -35,4 +36,7 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
     int deleteLogicBypKeyId(String pKeyId);
 
     List<WbsTreePrivate> findWbsTreePrivate(String ids);
+
+    boolean updateBatchByPid(List<WbsTreePrivateDTO3> wbsTreePrivates);
+
 }

+ 19 - 20
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -112,9 +112,8 @@ public class ContractInfoServiceImpl
 
 
     @Override
-    public List<User> findUserByName(String name) {
-        List<User> userByName = contractInfoMapper.findUserByName(name);
-        return userByName;
+    public List<User> findUserList() {
+        return contractInfoMapper.findUserList();
     }
 
     @Override
@@ -177,7 +176,7 @@ public class ContractInfoServiceImpl
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean saveAndUpdateContract(ContractInfoVO contractInfo) {
-        //新增
+        //新增操作
         if (contractInfo.getId() == null) {
             List<ContractInfo> contractInfos = baseMapper.selectList(Wrappers.<ContractInfo>query().lambda()
                     .eq(ContractInfo::getContractName, contractInfo.getContractName())
@@ -189,30 +188,31 @@ public class ContractInfoServiceImpl
             if (StringUtils.isEmpty(String.valueOf(contractInfo.getContractType()))) {
                 throw new ServiceException("合同类型不能为空");
             }
-            //新增
+            //新增合同段
             boolean row = saveOrUpdate(contractInfo);
             //新增contract_type=2监理或=3指挥部(业主)类型Wbs树
             if (contractInfo.getContractType().equals(2) || contractInfo.getContractType().equals(3)) {
                 List<WbsTreeContractVO3> infos = contractInfo.getIdList();
-                infos.forEach(info -> {
+                infos.stream().forEach(info -> {
                     List<WbsTreeContract> wbsTreeContracts = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
                             .eq(WbsTreeContract::getContractId, info.getContractId())
                     );
                     //初始化
-                    wbsTreeContracts.forEach(i -> {
+                    wbsTreeContracts.stream().forEach(i -> {
                         Long id = SnowFlakeUtil.getId();
                         i.setPKeyId(id);
                         i.setContractIdRelation(i.getContractId());
                         i.setContractId(String.valueOf(contractInfo.getId()));
                         i.setContractType(contractInfo.getContractType());
                     });
-                    //新增
+                    //新增合同段wbs树
                     wbsTreeContractService.saveBatch(wbsTreeContracts);
                 });
             }
             return submitContractRelevantInfo(row, contractInfo);
 
-        } else {  //编辑修改
+        } else {
+            //编辑修改操作
             List<ContractInfo> contractInfos = baseMapper.selectList(Wrappers.<ContractInfo>query().lambda()
                     .eq(ContractInfo::getContractName, contractInfo.getContractName())
                     .eq(ContractInfo::getPId, contractInfo.getPId())
@@ -230,7 +230,7 @@ public class ContractInfoServiceImpl
                 List<String> idList2 = new ArrayList<>();  //当前所有已引用监理或业主根节点合同引用id
                 List<WbsTreeContractVO3> list = contractInfo.getIdList();
                 if (list.size() > 0) {
-                    list.forEach(cId -> {
+                    list.stream().forEach(cId -> {
                         //获取入参根节点id
                         String contractId = cId.getContractId();
                         idList1.add(contractId);
@@ -243,14 +243,14 @@ public class ContractInfoServiceImpl
                         .eq(WbsTreeContract::getStatus, 1)
                         .eq(WbsTreeContract::getParentId, 0)
                 );
-                wbsTreeContracts.forEach(id -> {
+                wbsTreeContracts.stream().forEach(id -> {
                     String contractIdRelation = id.getContractIdRelation();
                     idList2.add(String.valueOf(contractIdRelation));
                 });
                 List<String> result = getDiffrent(idList1, idList2);
                 if (idList1.size() > idList2.size()) {
                     //新增
-                    result.forEach(id -> {
+                    result.stream().forEach(id -> {
                         //查询当前需要引用的施工合同wbs树根节点信息
                         WbsTreeContract wbsTreeContract = wbsTreeContractMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
                                 .eq(WbsTreeContract::getContractId, id)
@@ -259,16 +259,16 @@ public class ContractInfoServiceImpl
                         );
                         WbsTreeContract wbsTreeContractsIsDeleted = wbsTreeContractMapper.selectCondition(contractInfo.getId(), wbsTreeContract.getId(), id, contractInfo.getContractType());
                         if (wbsTreeContractsIsDeleted != null) {
-                            //修改 通过当前合同id = contractInfo.getId()监理或业主关联的合同段id = contractIdRelation
+                            //修改 通过当前合同id = contractInfo.getId() , 监理或业主关联的合同段id = contractIdRelation
                             wbsTreeContractMapper.updateByCondition2(contractInfo.getId(), wbsTreeContractsIsDeleted.getContractIdRelation());
                         } else {
-                            //新增 根据施工合同根节点查询当前根节点下的施工合同wbs树
+                            //新增 根据施工合同根节点查询当前根节点下的施工合同wbs树+表
                             List<WbsTreeContract> wbsTreeContractsList = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
                                     .eq(WbsTreeContract::getContractId, id)
                                     .eq(WbsTreeContract::getContractType, 1)
                             );
                             //初始化
-                            wbsTreeContractsList.forEach(i -> {
+                            wbsTreeContractsList.stream().forEach(i -> {
                                 Long id1 = SnowFlakeUtil.getId();
                                 i.setPKeyId(id1);
                                 i.setContractIdRelation(i.getContractId());
@@ -279,9 +279,8 @@ public class ContractInfoServiceImpl
                         }
                     });
                 } else {
-                    //删除wbs树
-                    result.forEach(id -> {
-                        //根据关联项目id = getContractIdRelation , 删除监理或业主合同的wbs树
+                    result.stream().forEach(id -> {
+                        //根据关联项目id = getContractIdRelation 删除树
                         wbsTreeContractMapper.delete(Wrappers.<WbsTreeContract>update().lambda()
                                 .set(WbsTreeContract::getIsDeleted, 1)
                                 .eq(WbsTreeContract::getContractIdRelation, id)
@@ -304,7 +303,7 @@ public class ContractInfoServiceImpl
             );
             if (list.size() > 0) {
                 Long contractId = contractInfo.getId();
-                list.forEach(i -> {
+                list.stream().forEach(i -> {
                     i.setContractId(String.valueOf(contractId));
                     saveUserInfoByProjectMapper.updateById(i);
                 });
@@ -388,7 +387,7 @@ public class ContractInfoServiceImpl
         ContractInfoVO2 contractInfoVO2 = new ContractInfoVO2();
         contractInfoVO2.setContractInfo(contractInfo1);
         Integer contractType = contractInfo1.getContractType();
-        List<WbsTreeContractVO3> list = baseMapper.selectLists(contractInfo,contractType);
+        List<WbsTreeContractVO3> list = baseMapper.selectLists(contractInfo, contractType);
         contractInfoVO2.setWbsTreeContractList(list);
         return contractInfoVO2;
     }

+ 111 - 43
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 服务实现类
@@ -49,68 +50,101 @@ public class WbsTreeContractServiceImpl
 
     /**
      * 合同段wbs树保存
-     *
-     * @param pawDTO
-     * @return
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean submitWbsTreeInContract(WbsTreeContractDTO pawDTO) {
         String wbsTreeIds = pawDTO.getWbsTreeIds();
-        /*if (StringUtils.isEmpty(wbsTreeIds)) {
-            throw new ServiceException("请选择需要关联的节点");
-        }*/
         String[] ids = wbsTreeIds.split(",");
-        List<String> idList1 = Arrays.asList(ids);
+        List<String> idList = Arrays.asList(ids);
+        List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
         List<String> idList2 = new ArrayList<>();
         List<WbsTreeContract> list = baseMapper.findAllNodeList2(pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
         if (list.size() > 0) {
-            for (WbsTreeContract wbsTreeContract : list) {
+            list.stream().forEach(wbsTreeContract -> {
                 idList2.add(String.valueOf(wbsTreeContract.getId()));
-            }
+            });
         }
-        List<String> diffrent = getDiffrent(idList1, idList2);
-        if (diffrent.size() == 0) {//相同
+        List<String> diffRent = getDiffrent(idList1, idList2);
+        if (diffRent.size() == 0) {
             throw new ServiceException("未进行任何操作");
         } else {
             if (idList1.size() > idList2.size()) {
                 WbsInfo wbsInfo = wbsInfoMapper.selectById(pawDTO.getWbsId());
-                for (String id : diffrent) {
-                    //是否存在,否则新增
-                    WbsTreeContract wbsTreeContract = baseMapper.selectByCondition2(id, pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
-                    if (wbsTreeContract != null) {
-                        baseMapper.updateByCondition(id, pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
-                    } else {
-                        WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId());
-                        Integer wbsType = wbsInfo.getWbsType();
-                        Long snowId = SnowFlakeUtil.getId();
-                        if (wbsTreePrivate != null) {
-                            wbsTreePrivate.setFullName(wbsTreePrivate.getDeptName());
-                            //新增
-                            baseMapper.insertWbsTreeContract1(snowId, wbsType, pawDTO.getContractId(), wbsTreePrivate);
-                            WbsTreePrivate wbsTreePrivateParent = baseMapper.selectParent(wbsTreePrivate.getProjectId(), wbsTreePrivate.getWbsId(), wbsTreePrivate.getParentId());
-                            //初始化施工台账
-                            if (wbsTreePrivate.getDeptCategory() == 6) {
-                                ConstructionLedger constructionLedger = new ConstructionLedger();
-                                constructionLedger.setIsBeton(0);
-                                constructionLedger.setWbsId(snowId);
-                                constructionLedger.setSite(wbsTreePrivate.getDeptName());
-                                constructionLedger.setStation(wbsTreePrivateParent.getDeptName());
-                                constructionLedger.setContractId(Long.parseLong(pawDTO.getContractId()));
-                                constructionLedgerFeign.initConstructionLedger(constructionLedger);
-                            }
-                        }
+                Integer wbsType = wbsInfo.getWbsType();
+                List<List<WbsTreePrivate>> listWbsTreePrivate = new ArrayList<>();
+                List<WbsTreeContract> listWbsTreeContract = new ArrayList<>();
+                diffRent.stream().forEach(id -> {
+                    //获取wbs私有树下节点+表
+                    List<WbsTreePrivate> wbsTreePrivate = wbsTreePrivateMapper.selectByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId());
+                    listWbsTreePrivate.add(wbsTreePrivate);
+                });
+                listWbsTreePrivate.stream().forEach(wbsTreePrivates -> {
+                    wbsTreePrivates.stream().forEach(wbsTreePrivate -> {
+                        WbsTreeContract wbsTreeContract = getWbsTreePrivate(wbsTreePrivate, pawDTO, wbsType);
+                        listWbsTreeContract.add(wbsTreeContract);
+                    });
+                });
+                this.saveBatch(listWbsTreeContract, 10000);
+                //初始化施工台账
+                listWbsTreeContract.stream().forEach(wbsTreeContract -> {
+                    if (wbsTreeContract.getDeptCategory() == 6) {
+                        ConstructionLedger constructionLedger = new ConstructionLedger();
+                        constructionLedger.setIsBeton(0);
+                        constructionLedger.setWbsId(wbsTreeContract.getPKeyId());
+                        constructionLedger.setSite(wbsTreeContract.getDeptName());
+                        constructionLedger.setStation(wbsTreeContract.getDeptName());
+                        constructionLedger.setContractId(Long.parseLong(pawDTO.getContractId()));
+                        constructionLedgerFeign.initConstructionLedger(constructionLedger);
                     }
-                }
-            } else { //删除当前多余的合同段节点
-                for (String id : diffrent) {
-                    baseMapper.deleteByCondition(id, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
-                }
+                });
+            } else {
+                //删除
+                ArrayList<Long> ids1 = new ArrayList<>();
+                diffRent.stream().forEach(id -> {
+                    ids1.add(Long.valueOf(id));
+                });
+                baseMapper.deleteBatch(ids1, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
             }
             return true;
         }
     }
 
+    private WbsTreeContract getWbsTreePrivate(WbsTreePrivate wbsTree, WbsTreeContractDTO pawDTO, Integer wbsType) {
+        WbsTreeContract wbsTreeContract = new WbsTreeContract();
+        //数据初始化-施工合同
+        Long snowId = SnowFlakeUtil.getId();
+        wbsTreeContract.setPKeyId(snowId);
+        wbsTreeContract.setId(wbsTree.getId());
+        wbsTreeContract.setWbsId(pawDTO.getWbsId());
+        wbsTreeContract.setWbsType(wbsType);
+        wbsTreeContract.setProjectId(pawDTO.getProjectId());
+        wbsTreeContract.setContractId(pawDTO.getContractId());
+        wbsTreeContract.setContractType(pawDTO.getContractType());
+        wbsTreeContract.setTenantId(wbsTree.getTenantId());
+        wbsTreeContract.setParentId(wbsTree.getParentId());
+        wbsTreeContract.setAncestors(wbsTree.getAncestors());
+        //setDeptCategory = 1 施工合同
+        wbsTreeContract.setDeptCategory(1);
+        wbsTreeContract.setDeptName(wbsTree.getDeptName());
+        wbsTreeContract.setFullName(wbsTree.getDeptName());
+        wbsTreeContract.setSort(wbsTree.getSort());
+        wbsTreeContract.setRemark(wbsTree.getRemark());
+        wbsTreeContract.setType(wbsTree.getType());
+        wbsTreeContract.setTableType(wbsTree.getTableType());
+        wbsTreeContract.setStatus(wbsTree.getStatus());
+        wbsTreeContract.setIsDeleted(wbsTree.getIsDeleted());
+        wbsTreeContract.setUniqueCode(wbsTree.getUniqueCode());
+        wbsTreeContract.setPartitionCode(wbsTree.getPartitionCode());
+        wbsTreeContract.setIsConcrete(wbsTree.getIsConcrete());
+        wbsTreeContract.setIsExpernode(wbsTree.getIsExpernode());
+        wbsTreeContract.setTableOwner(wbsTree.getTableOwner());
+        wbsTreeContract.setMajorDataType(wbsTree.getMajorDataType());
+        wbsTreeContract.setInitTableName(wbsTree.getInitTableName());
+        wbsTreeContract.setIsLinkTable(wbsTree.getIsLinkTable());
+        return wbsTreeContract;
+    }
+
     @Override
     public List<WbsTreeContract> findWbsTreeContract(String ids) {
         return baseMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getContractId, ids));
@@ -143,7 +177,8 @@ public class WbsTreeContractServiceImpl
         return diff;
     }
 
-    private List<WbsTreeContract> findAllNodeList(String wbsTreeIds, String projectId, String contractId, String wbsId) {
+    private List<WbsTreeContract> findAllNodeList(String wbsTreeIds, String projectId, String contractId, String
+            wbsId) {
         String[] ids = wbsTreeIds.split(",");
         List<Long> idList = new ArrayList<>();
         List<WbsTreeContract> list = new ArrayList<>();
@@ -161,7 +196,40 @@ public class WbsTreeContractServiceImpl
     }
 
     @Override
-    public List<WbsTreeContractTreeVO> lazyTreeTwo(String contractIdRelation, Long parentId, Integer contractType, String contractId) {
+    public List<WbsTreeContractTreeVO> lazyTreeTwo(String contractIdRelation, Long parentId, Integer
+            contractType, String contractId) {
         return ForestNodeMerger.merge(baseMapper.lazyTreeTwo(contractIdRelation, parentId, contractType, contractId));
     }
+
+    @Override
+    public List<WbsTreeContract> searchNodeAllTable(String primaryKeyId) {
+        WbsTreeContract wbsTreeContract = baseMapper.selectOne(Wrappers.<WbsTreeContract>query().lambda()
+                .eq(WbsTreeContract::getPKeyId, primaryKeyId));
+        //获取当前节点下表单
+        if (wbsTreeContract == null) {
+            throw new ServiceException("未查询到数据");
+        }
+        if (StringUtils.isNotEmpty(wbsTreeContract.getContractIdRelation())) {
+            //监理 业主
+            List<WbsTreeContract> wbsTreeContracts = baseMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
+                    .eq(WbsTreeContract::getProjectId, wbsTreeContract.getProjectId())
+                    .eq(WbsTreeContract::getWbsId, wbsTreeContract.getWbsId())
+                    .eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId())
+                    .eq(WbsTreeContract::getType, 2)
+                    .eq(WbsTreeContract::getParentId, wbsTreeContract.getId())
+                    .eq(WbsTreeContract::getContractIdRelation, wbsTreeContract.getContractIdRelation())
+            );
+            return wbsTreeContracts;
+        } else {
+            //施工
+            List<WbsTreeContract> wbsTreeContracts = baseMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
+                    .eq(WbsTreeContract::getProjectId, wbsTreeContract.getProjectId())
+                    .eq(WbsTreeContract::getWbsId, wbsTreeContract.getWbsId())
+                    .eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId())
+                    .eq(WbsTreeContract::getType, 2)
+                    .eq(WbsTreeContract::getParentId, wbsTreeContract.getId())
+            );
+            return wbsTreeContracts;
+        }
+    }
 }

+ 12 - 11
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.StringPool;
 import org.springblade.manager.dto.WbsTreePrivateDTO2;
+import org.springblade.manager.dto.WbsTreePrivateDTO3;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.WbsInfo;
 import org.springblade.manager.entity.WbsTreePrivate;
@@ -151,17 +153,16 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         return baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, ids));
     }
 
-
-    public List<WbsTreePrivate> findAllNodeList(String wbsTreeIds, String projectId, String wbsId) {
-        String[] ids = wbsTreeIds.split(",");
-        List<Long> idList = new ArrayList<>();
-        List<WbsTreePrivate> list = new ArrayList<>();
-        for (String id : ids) {
-            idList.add(Long.valueOf(id));
-            WbsTreePrivate wbsTreePrivate = baseMapper.selectByCondition(id, projectId, wbsId);
-            list.add(wbsTreePrivate);
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean updateBatchByPid(List<WbsTreePrivateDTO3> wbsTreePrivates) {
+        try {
+            wbsTreePrivates.stream().forEach(list -> {
+                baseMapper.updateBatchByPid(list);
+            });
+        } catch (Exception e) {
+            throw new ServiceException("操作失败");
         }
-        return list;
+        return true;
     }
-
 }

+ 85 - 53
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -181,11 +181,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             wbsTree.setAncestors(ancestors);
             wbsTree.setType(2);
             wbsTree.setIsDeleted(BladeConstant.DB_NOT_DELETED);
-            for (Map<String, String> map : maps) {
+            maps.stream().forEach(map->{
                 String deptName = map.get("表名");
-                /*if (deptName.length() > 100 || deptName.length() < 1) {
-                    throw new ServiceException("表名长度错误,输入范围1-100个字符长度");
-                }*/
                 wbsTree.setDeptName(deptName);
                 wbsTree.setTableType(getTableType(map.get("表类型")));
                 Long id = SnowFlakeUtil.getId();
@@ -204,19 +201,19 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     wbsTreeBatchImportDTO.setInitTableName(initTableName);
                     list.add(wbsTreeBatchImportDTO);
                 }
-            }
+            });
             //新增元素
-            list.forEach(i -> {
+            list.stream().forEach(i -> {
                 Long elementTableId = i.getId();
                 String tableName = i.getTableName();
                 String initTableName = i.getInitTableName();
-                int keyNumb = 0;
-                for (Map<String, String> map : result2) {
+                final int[] keyNumb = {0};
+                result2.stream().forEach(map->{
                     if (tableName.equals(map.get("表名"))) {
-                        keyNumb++;
+                        keyNumb[0]++;
                         WbsFormElement wbsFormElement = new WbsFormElement();
                         wbsFormElement.setEName(map.get("字段名"));
-                        String key = "key_" + keyNumb;
+                        String key = "key_" + keyNumb[0];
                         wbsFormElement.setEKey(key);
                         wbsFormElement.setFId(String.valueOf(elementTableId));
                         wbsFormElement.setELength(getElementLength(map.get("数据类型")));
@@ -231,7 +228,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                                 getInitTableFiledType(wbsFormElement.getEType()),
                                 wbsFormElement.getELength());
                     }
-                }
+                });
             });
             return true;
         } catch (
@@ -398,9 +395,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             //解析
             WbsExcelUtil excelUtil = new WbsExcelUtil();
             ArrayList<Map<String, String>> result = excelUtil.readExcelToObj(canonicalPath);
-            return startAsyncImportExcel(result, wbsTreeFu, wbsTree1);
+            return importExcel(result, wbsTreeFu, wbsTree1);
         } catch (Exception e) {
-            throw new ServiceException("导入失败");
+            String message = e.getMessage();
+            throw new ServiceException("导入失败,message{}" + message);
         } finally {
             File file2 = new File(canonicalPath);
             if (file2.isFile() && file2.exists()) {
@@ -410,12 +408,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         }
     }
 
-    private boolean startAsyncImportExcel(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
-        for (Map<String, String> map : result) {
+    private boolean importExcel(ArrayList<Map<String, String>> result, WbsTree wbsTreeFu, WbsTree wbsTree1) {
+        result.stream().forEach(map -> {
             map.forEach((nodeType, nodeName) -> {
                 WbsTree wbsTreeZi = new WbsTree();
                 if (StringUtils.isNotEmpty(nodeName)) {
-                    //初始化默认值
+                    //初始化
                     wbsTreeZi.setTenantId(AuthUtil.getTenantId());
                     wbsTreeZi.setDeptName(nodeName);
                     wbsTreeZi.setDeptCategory(Integer.valueOf(nodeType));
@@ -425,14 +423,14 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
                     //新增节点返回未创建成功查询出来的wbsTree对象、创建成功后的wbsTreeZi对象
                     WbsTree wbsTree = importTree(wbsTreeZi);
-                    //后置初始化默认值
+                    //后置初始化
                     if (wbsTree == null) {
                         Long id = wbsTreeZi.getId();
-                        //设置ancestors祖级id集合
+                        //初始化ancestors
                         StringBuilder stringBuffer = new StringBuilder();
                         StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
                         String ancestors = wbsTreeZi.getAncestors() + appendStr;
-                        //修改ancestors的值
+                        //修改ancestors
                         updateData(ancestors, id);
                         wbsTreeFu.setParentId(id);
                         wbsTreeFu.setAncestors(ancestors);
@@ -442,14 +440,47 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     }
                 }
             });
-        }
-        //修改根节点ProjectNodeId
+        });
+
+        /*for (Map<String, String> map : result) {
+            map.forEach((nodeType, nodeName) -> {
+                WbsTree wbsTreeZi = new WbsTree();
+                if (StringUtils.isNotEmpty(nodeName)) {
+                    //初始化
+                    wbsTreeZi.setTenantId(AuthUtil.getTenantId());
+                    wbsTreeZi.setDeptName(nodeName);
+                    wbsTreeZi.setDeptCategory(Integer.valueOf(nodeType));
+                    wbsTreeZi.setWbsId(wbsTreeFu.getWbsId());
+                    wbsTreeZi.setParentId(wbsTreeFu.getParentId());
+                    wbsTreeZi.setAncestors(wbsTreeFu.getAncestors());
+                    wbsTreeZi.setProjectNodeId(wbsTree1.getProjectNodeId());
+                    //新增节点返回未创建成功查询出来的wbsTree对象、创建成功后的wbsTreeZi对象
+                    WbsTree wbsTree = importTree(wbsTreeZi);
+                    //后置初始化
+                    if (wbsTree == null) {
+                        Long id = wbsTreeZi.getId();
+                        //初始化ancestors
+                        StringBuilder stringBuffer = new StringBuilder();
+                        StringBuilder appendStr = stringBuffer.append(",").append(wbsTreeZi.getParentId());
+                        String ancestors = wbsTreeZi.getAncestors() + appendStr;
+                        //修改ancestors
+                        updateData(ancestors, id);
+                        wbsTreeFu.setParentId(id);
+                        wbsTreeFu.setAncestors(ancestors);
+                    } else {
+                        wbsTreeFu.setParentId(wbsTree.getId());
+                        wbsTreeFu.setAncestors(wbsTree.getAncestors());
+                    }
+                }
+            });
+        }*/
+
+        //修改ProjectNodeId
         int i = baseMapper.updateById(wbsTree1);
         return i > 0;
     }
 
     private WbsTree importTree(WbsTree wbsTreeZi) {
-        //查重
         QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("wbs_id", wbsTreeZi.getWbsId());
         queryWrapper.eq("dept_name", wbsTreeZi.getDeptName());
@@ -457,9 +488,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         queryWrapper.eq("project_node_id", wbsTreeZi.getProjectNodeId());
         queryWrapper.ne("ancestors", wbsTreeZi.getAncestors());
         WbsTree wbsTrees = baseMapper.selectOne(queryWrapper);
-        //去重
         if (wbsTrees == null) {
-            //初始化默认值
+            //初始化
             wbsTreeZi.setStatus(1);
             wbsTreeZi.setType(1);
             wbsTreeZi.setMajorDataType(0);
@@ -560,9 +590,10 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
                     .eq(WbsTreePrivate::getType, 1)
             );
-            for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
+            wbsTreePrivates.stream().forEach(wbsTreePrivate -> {
                 idList2.add(String.valueOf(wbsTreePrivate.getId()));
-            }
+
+            });
         } else if (pawDTO.getReferenceType().equals("private")) {
             //私有引用
             List<WbsTreePrivate> wbsTreePrivates2 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
@@ -570,9 +601,9 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
                     .eq(WbsTreePrivate::getType, 1)
             );
-            for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates2) {
+            wbsTreePrivates2.stream().forEach(wbsTreePrivate -> {
                 idList2.add(String.valueOf(wbsTreePrivate.getId()));
-            }
+            });
             deletedStatus = 1;
         }
         List<String> diffrent = WbsTreeContractServiceImpl.getDiffrent(idList1, idList2);
@@ -582,37 +613,38 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             //公有树是否新增元素表,同步到私有
             List<WbsTree> allNodeList = findAllNodeList(wbsTreeIds);
             List<WbsTree> wbsTreeListAll = new ArrayList<>();
-            for (WbsTree wbsTree : allNodeList) {
+            allNodeList.stream().forEach(wbsTree -> {
                 List<WbsTree> wbsTreeList = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
                         .eq(WbsTree::getWbsId, pawDTO.getWbsId())
                         .eq(WbsTree::getType, 2)
                         .eq(WbsTree::getParentId, wbsTree.getId())
                 );
                 wbsTreeListAll.addAll(wbsTreeList);
-            }
-            for (WbsTree wbsTree : wbsTreeListAll) {
+            });
+            wbsTreeListAll.stream().forEach(wbsTree -> {
                 tableId1.add(String.valueOf(wbsTree.getId()));
-            }
+            });
+
             //获取项目私有树下所有的元素表
             List<WbsTreePrivate> wbsTreePrivates1 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                     .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
                     .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
                     .eq(WbsTreePrivate::getType, 2)
             );
-            for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates1) {
+            wbsTreePrivates1.stream().forEach(wbsTreePrivate -> {
                 tableId2.add(String.valueOf(wbsTreePrivate.getId()));
-            }
+            });
             List<String> diffrent1 = WbsTreeContractServiceImpl.getDiffrent(tableId1, tableId2);
             if (diffrent1.size() == 0) {
                 throw new ServiceException("未进行任何操作");
             } else {
                 if (tableId1.size() > tableId2.size()) {
                     //同步元素表
-                    for (String tableId : diffrent1) {
+                    diffrent1.stream().forEach(tableId -> {
                         WbsTree wbsTree = wbsTreeMapper.selectById(tableId);
                         Long snowId1 = SnowFlakeUtil.getId();
                         wbsTreePrivateMapper.insertCombination1(snowId1, wbsTree, pawDTO.getWbsType(), pawDTO.getProjectId());
-                    }
+                    });
                     return "1";
                 }
                 //同步删除 TODO
@@ -625,33 +657,33 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 if (pawDTO.getReferenceType().equals("public")) {
                     //公有
                     List<List<WbsTree>> wbsTrees = new ArrayList<>();
-                    for (String id : diffrent) {
-                        //查询所有公共节点+表单
+                    diffrent.stream().forEach(id -> {
+                        //查询所有公共节点 表单
                         List<WbsTree> trees = baseMapper.selectNodeAndTable(Long.valueOf(id));
                         wbsTrees.add(trees);
-                    }
-                    for (List<WbsTree> trees : wbsTrees) {
-                        for (WbsTree tree : trees) {
+                    });
+                    wbsTrees.stream().forEach(trees -> {
+                        trees.stream().forEach(tree -> {
                             WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate1(tree, pawDTO);
                             insertData.add(wbsTreePrivate2);
-                        }
-                    }
+                        });
+                    });
                     projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getWbsId(), "public");
 
                 } else if (pawDTO.getReferenceType().equals("private")) {
                     //私有
                     List<List<WbsTreePrivate>> wbsTreesPrivate = new ArrayList<>();
-                    for (String id : diffrent) {
+                    diffrent.stream().forEach(id -> {
                         //查询所有私有节点 表单
                         List<WbsTreePrivate> wbsTreePrivate = wbsTreePrivateMapper.selectNodeAndTable(id, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
                         wbsTreesPrivate.add(wbsTreePrivate);
-                    }
-                    for (List<WbsTreePrivate> wbsTreePrivates : wbsTreesPrivate) {
-                        for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
+                    });
+                    wbsTreesPrivate.stream().forEach(wbsTreePrivates -> {
+                        wbsTreePrivates.stream().forEach(wbsTreePrivate -> {
                             WbsTreePrivate wbsTreePrivate2 = getWbsTreePrivate2(wbsTreePrivate, pawDTO);
                             insertData2.add(wbsTreePrivate2);
-                        }
-                    }
+                        });
+                    });
                     projectInfoMapper.updateTemplateIdById(pawDTO.getProjectId(), pawDTO.getPrimaryKeyId(), "private");
                 }
                 if (pawDTO.getReferenceType().equals("public")) {
@@ -663,13 +695,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 //删除节点 表单
                 ArrayList<Long> ids1 = new ArrayList<>();
                 ArrayList<Long> ids2 = new ArrayList<>();
-                for (String id : diffrent) {
+                diffrent.stream().forEach(id -> {
                     ids1.add(Long.valueOf(id));
-                }
+                });
                 if (deletedStatus == 1) {
-                    for (String id : diffrent) {
+                    diffrent.stream().forEach(id -> {
                         ids2.add(Long.valueOf(id));
-                    }
+                    });
                 }
                 if (pawDTO.getReferenceType().equals("public")) {
                     baseMapper.deleteBatch(ids1, pawDTO.getWbsId(), pawDTO.getProjectId());