Răsfoiți Sursa

Merge remote-tracking branch 'origin/master' into master

yangyj 2 ani în urmă
părinte
comite
7ec4d226e3
14 a modificat fișierele cu 415 adăugiri și 348 ștergeri
  1. 49 0
      blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeAllVO.java
  2. 34 8
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ContractInfoController.java
  3. 24 9
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  4. 1 3
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.java
  5. 5 21
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml
  6. 0 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java
  7. 2 12
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.xml
  8. 2 1
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml
  9. 2 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/IContractInfoService.java
  10. 63 28
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java
  11. 149 113
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  12. 24 17
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java
  13. 38 116
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java
  14. 22 16
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

+ 49 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsTreeContractTreeAllVO.java

@@ -0,0 +1,49 @@
+package org.springblade.manager.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+import org.springblade.core.tool.node.INode;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class WbsTreeContractTreeAllVO implements INode<WbsTreeContractTreeAllVO> {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private Long primaryKeyId;
+
+    private String title;
+
+    private Integer nodeType;
+
+    private String partitionCode;
+
+    private Long parentId;
+
+    private Integer sort;
+
+    private Long submitCounts;
+
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private List<WbsTreeContractTreeAllVO> children;
+
+    @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    private Boolean hasChildren;
+
+    @Override
+    public List<WbsTreeContractTreeAllVO> getChildren() {
+        if (this.children == null) {
+            this.children = new ArrayList<>();
+        }
+        return this.children;
+    }
+
+    @Override
+    public Boolean getHasChildren() {
+        return hasChildren;
+    }
+}

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

@@ -542,21 +542,20 @@ public class ContractInfoController extends BladeController {
     }
     }
 
 
     /**
     /**
-     * 查询合同段树-全加载
+     * 查询合同段树-全加载-施工合同段
      */
      */
     @GetMapping("/tree-all")
     @GetMapping("/tree-all")
     @ApiOperationSupport(order = 19)
     @ApiOperationSupport(order = 19)
-    @ApiOperation(value = "查询合同段私有Wbs节点树形结构", notes = "传入wbsId,项目id,合同段id")
+    @ApiOperation(value = "查询合同段私有Wbs节点树形结构-施工合同段", notes = "合同段id,type=1")
     @ApiImplicitParams(value = {
     @ApiImplicitParams(value = {
-            @ApiImplicitParam(name = "wbsId", value = "wbsId", required = true),
-            @ApiImplicitParam(name = "项目id", value = "projectId", required = true),
-            @ApiImplicitParam(name = "合同段id", value = "contractId", required = true)
+            @ApiImplicitParam(name = "合同段id", value = "contractId", required = true),
+            @ApiImplicitParam(name = "type", value = "1=资料查询,资料查询过慢,导致资料填报也过慢,后续优化", required = true)
     })
     })
-    public R treeAll(String wbsId, String projectId, String contractId) {
-        List<WbsTreeContractVO> tree = contractInfoService.tree3(wbsId, projectId, contractId);
+    public R treeAll(String contractId, Integer type) {
+        List<WbsTreeContractTreeAllVO> tree = contractInfoService.tree3(contractId, type);
         if (tree != null && tree.size() > 0) {
         if (tree != null && tree.size() > 0) {
             ContractInfo contractInfo = contractInfoService.getBaseMapper().selectById(contractId);
             ContractInfo contractInfo = contractInfoService.getBaseMapper().selectById(contractId);
-            for (WbsTreeContractVO wbsTreeContractVO : tree) {
+            for (WbsTreeContractTreeAllVO wbsTreeContractVO : tree) {
                 if (ObjectUtil.isNotEmpty(wbsTreeContractVO.getParentId()) && 0L == wbsTreeContractVO.getParentId()) {
                 if (ObjectUtil.isNotEmpty(wbsTreeContractVO.getParentId()) && 0L == wbsTreeContractVO.getParentId()) {
                     wbsTreeContractVO.setTitle(contractInfo.getContractName());
                     wbsTreeContractVO.setTitle(contractInfo.getContractName());
                     break;
                     break;
@@ -567,6 +566,33 @@ public class ContractInfoController extends BladeController {
         return R.fail(200, "未查询到信息");
         return R.fail(200, "未查询到信息");
     }
     }
 
 
+    /**
+     * 查询合同段树-全加载-监理合同段
+     */
+    @GetMapping("/tree-all-jl")
+    @ApiOperationSupport(order = 19)
+    @ApiOperation(value = "查询合同段私有Wbs节点树形结构-监理合同段", notes = "合同段id,type=1")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "合同段id", value = "contractId", required = true),
+            @ApiImplicitParam(name = "type", value = "1=资料查询,资料查询过慢,导致资料填报也过慢,后续优化", required = true)
+    })
+    public R treeAllJL(String contractId, Integer type) {
+        Map<Long, List<WbsTreeContractTreeAllVO>> treeAllJL = contractInfoService.treeAllJL(contractId, type);
+        if (treeAllJL != null && treeAllJL.size() > 0) {
+            for (Map.Entry<Long, List<WbsTreeContractTreeAllVO>> map : treeAllJL.entrySet()) {
+                ContractInfo contractInfo = contractInfoService.getBaseMapper().selectById(map.getKey());
+                for (WbsTreeContractTreeAllVO wbsTreeContractVO : map.getValue()) {
+                    if (ObjectUtil.isNotEmpty(wbsTreeContractVO.getParentId()) && 0L == wbsTreeContractVO.getParentId()) {
+                        wbsTreeContractVO.setTitle(contractInfo.getContractName());
+                        break;
+                    }
+                }
+            }
+            return R.data(treeAllJL);
+        }
+        return R.fail(200, "未查询到信息");
+    }
+
     /**
     /**
      * 查询合同段私有Wbs节点树形结构 --- 试验关联工程节点树
      * 查询合同段私有Wbs节点树形结构 --- 试验关联工程节点树
      */
      */

+ 24 - 9
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -762,8 +762,8 @@ public class ExcelTabController extends BladeController {
             return R.fail("请上传清表!");
             return R.fail("请上传清表!");
         }
         }
 
 
-//        File file1 = ResourceUtil.getFile(wbsTreePrivate.getHtmlUrl());
-        File file1 = ResourceUtil.getFile("D:\\develop\\1633308933835718656.html");
+        File file1 = ResourceUtil.getFile(wbsTreePrivate.getHtmlUrl());
+//        File file1 = ResourceUtil.getFile("D:\\develop\\1633344465559093248.html");
         FileInputStream fileInputStream = new FileInputStream(file1);
         FileInputStream fileInputStream = new FileInputStream(file1);
         String htmlString = IoUtil.readToString(fileInputStream);
         String htmlString = IoUtil.readToString(fileInputStream);
         // 解析 style
         // 解析 style
@@ -1696,8 +1696,8 @@ public class ExcelTabController extends BladeController {
                 Worksheet sheet = wb.getWorksheets().get(0);
                 Worksheet sheet = wb.getWorksheets().get(0);
                 // 数据不为空 &&
                 // 数据不为空 &&
                 if (StringUtils.isNotEmpty(tableNode.getHtmlUrl())) {
                 if (StringUtils.isNotEmpty(tableNode.getHtmlUrl())) {
-//                    File htmlFile = ResourceUtil.getFile(tableNode.getHtmlUrl());
-                    File htmlFile = ResourceUtil.getFile("D:\\develop\\1633344465559093248.html");
+                    File htmlFile = ResourceUtil.getFile(tableNode.getHtmlUrl());
+//                    File htmlFile = ResourceUtil.getFile("D:\\develop\\1633344465559093248.html");
                     if (htmlFile.exists()) {
                     if (htmlFile.exists()) {
                         String htmlString = IoUtil.readToString(new FileInputStream(htmlFile));
                         String htmlString = IoUtil.readToString(new FileInputStream(htmlFile));
                         Document doc = Jsoup.parse(htmlString);
                         Document doc = Jsoup.parse(htmlString);
@@ -1720,10 +1720,10 @@ public class ExcelTabController extends BladeController {
                                 if (val.indexOf("__") >= 0) {
                                 if (val.indexOf("__") >= 0) {
                                     String[] DataVal = val.split("__");
                                     String[] DataVal = val.split("__");
                                     String[] xy = DataVal[1].split("_");
                                     String[] xy = DataVal[1].split("_");
-                                    if (trs.size() <= (Integer.parseInt(xy[0])-1)) {
+                                    if (trs.size() > (Integer.parseInt(xy[0])-1)) {
                                         Element trData = trs.get(Integer.parseInt(xy[0]));
                                         Element trData = trs.get(Integer.parseInt(xy[0]));
                                         Elements tdDatas = trData.select("td");
                                         Elements tdDatas = trData.select("td");
-                                        if (tdDatas.size() <= (Integer.parseInt(xy[0]) - 1)) {
+                                        if (tdDatas.size() > (Integer.parseInt(xy[0]) - 1)) {
                                             Element data = tdDatas.get(Integer.parseInt(xy[1]));
                                             Element data = tdDatas.get(Integer.parseInt(xy[1]));
 
 
                                             if (data.html().indexOf("x1") >= 0 && data.html().indexOf("y1") >= 0) {
                                             if (data.html().indexOf("x1") >= 0 && data.html().indexOf("y1") >= 0) {
@@ -1797,10 +1797,10 @@ public class ExcelTabController extends BladeController {
                                 String key = e.getColKey();
                                 String key = e.getColKey();
                                 String[] keys = key.split("__");
                                 String[] keys = key.split("__");
                                 String[] trtd = keys[1].split("_");
                                 String[] trtd = keys[1].split("_");
-                                if (trs.size() <= (Integer.parseInt(trtd[0])-1)) {
+                                if ( trs.size() > (Integer.parseInt(trtd[0]))) {
                                     Element trData = trs.get(Integer.parseInt(trtd[0]));
                                     Element trData = trs.get(Integer.parseInt(trtd[0]));
                                     Elements tdDatas = trData.select("td");
                                     Elements tdDatas = trData.select("td");
-                                    if (tdDatas.size() <= (Integer.parseInt(trtd[0]) - 1)) {
+                                    if (tdDatas.size() > (Integer.parseInt(trtd[0]) - 1)) {
                                         Element data = tdDatas.get(Integer.parseInt(trtd[1]));
                                         Element data = tdDatas.get(Integer.parseInt(trtd[1]));
 //                                Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
 //                                Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
 
 
@@ -1823,7 +1823,7 @@ public class ExcelTabController extends BladeController {
 
 
                 Long fileName = SnowFlakeUtil.getId();
                 Long fileName = SnowFlakeUtil.getId();
                 String onePdfPath = file_path + "/pdf//" + fileName + ".pdf";
                 String onePdfPath = file_path + "/pdf//" + fileName + ".pdf";
-                wb.saveToFile("d://777.xls", ExcelVersion.Version2010);
+//                wb.saveToFile("d://777.xls", ExcelVersion.Version2010);
                 sheet.saveToPdf(onePdfPath);
                 sheet.saveToPdf(onePdfPath);
 
 
                 BladeFile bladeFile = this.newIOSSClient.uploadFile(fileName + ".pdf", onePdfPath);
                 BladeFile bladeFile = this.newIOSSClient.uploadFile(fileName + ".pdf", onePdfPath);
@@ -1952,6 +1952,21 @@ public class ExcelTabController extends BladeController {
                         }
                         }
                     }
                     }
 
 
+                    // 获取默认值
+                    QueryWrapper<TextdictInfo> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("type", 4);
+                    queryWrapper.eq("tab_id", tableNode.getPKeyId());
+                    final List<TextdictInfo> textdictInfos = textdictInfoService.getBaseMapper().selectList(queryWrapper);
+                    if (!textdictInfos.isEmpty()) {
+                        for (TextdictInfo textdictInfo : textdictInfos) {
+                            if (reData.containsKey(textdictInfo.getColKey())) {
+                                String keyVal = reData.get(textdictInfo.getColKey()) + "";
+                            } else {
+                                reData.put(textdictInfo.getColKey() + "", textdictInfo.getSigRoleName());
+                            }
+                        }
+                    }
+
                     // 移除Id 和 p_key_id
                     // 移除Id 和 p_key_id
                     reData.remove("p_key_id");
                     reData.remove("p_key_id");
                     reData.remove("classify");
                     reData.remove("classify");

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

@@ -84,9 +84,7 @@ public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
     @Select("select quality_node_id from u_trial_self_quality_project where self_id = #{selfId}")
     @Select("select quality_node_id from u_trial_self_quality_project where self_id = #{selfId}")
     List<String> queryList(@Param("selfId") String selfId);
     List<String> queryList(@Param("selfId") String selfId);
 
 
-    List<WbsTreeContractVO> tree5(@Param("wbsId") Long wbsId,
-                                  @Param("projectId") Long projectId,
-                                  @Param("contractId") Long contractId);
+    List<WbsTreeContractTreeAllVO> tree5(@Param("contractId") Long contractId);
 
 
     List<WbsTreeContractVO6> tree6(@Param("wbsId") Long wbsId,
     List<WbsTreeContractVO6> tree6(@Param("wbsId") Long wbsId,
                                   @Param("projectId") Long projectId,
                                   @Param("projectId") Long projectId,

+ 5 - 21
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ContractInfoMapper.xml

@@ -418,37 +418,21 @@
         </foreach>
         </foreach>
     </select>
     </select>
 
 
-    <select id="tree5" resultMap="treeNodeResultMap2">
+    <select id="tree5" resultType="org.springblade.manager.vo.WbsTreeContractTreeAllVO">
         SELECT
         SELECT
         d.p_key_id AS "primaryKeyId",
         d.p_key_id AS "primaryKeyId",
-        d.wbs_type AS "wbsType",
         d.id,
         d.id,
         d.parent_id AS "parentId",
         d.parent_id AS "parentId",
         IFNULL(if(length(trim(full_name)) > 0, full_name, node_name),node_name) AS title,
         IFNULL(if(length(trim(full_name)) > 0, full_name, node_name),node_name) AS title,
-        d.node_name AS "nodeName",
-        d.full_name AS "fullName",
-        d.import_matching_info AS "importMatchingInfo",
-        d.type AS "type",
-        d.node_type AS "nodeType",
-        d.id AS "value",
-        d.id AS "key",
         partition_code,
         partition_code,
-        old_id,
+        node_type,
         sort
         sort
         FROM m_wbs_tree_contract d
         FROM m_wbs_tree_contract d
         WHERE
         WHERE
-        d.is_deleted = 0
-        AND d.status = 1
+         contract_id = #{contractId}
         AND d.type = 1
         AND d.type = 1
-        <if test="wbsId!=null and wbsId!=''">
-            and wbs_id = #{wbsId}
-        </if>
-        <if test="projectId !=null and projectId!=''">
-            and project_id = #{projectId}
-        </if>
-        <if test="contractId!=null and contractId!=''">
-            and contract_id = #{contractId}
-        </if>
+        AND d.status = 1
+        AND d.is_deleted = 0
         ORDER BY d.sort
         ORDER BY d.sort
     </select>
     </select>
 
 

+ 0 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreeContractMapper.java

@@ -28,8 +28,6 @@ public interface WbsTreeContractMapper extends EasyBaseMapper<WbsTreeContract> {
 
 
     WbsTreeContract selectByCondition(@Param("id") String id, @Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);
     WbsTreeContract selectByCondition(@Param("id") String id, @Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);
 
 
-    List<WbsTreeContract> findAllNodeList2(@Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);
-
     void updateByCondition(@Param("id") String id, @Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);
     void updateByCondition(@Param("id") String id, @Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);
 
 
     WbsTreeContract selectByCondition2(@Param("id") String id, @Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);
     WbsTreeContract selectByCondition2(@Param("id") String id, @Param("projectId") String projectId, @Param("contractId") String contractId, @Param("wbsId") String wbsId);

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

@@ -237,17 +237,6 @@
           AND STATUS = 1
           AND STATUS = 1
     </select>
     </select>
 
 
-    <select id="findAllNodeList2" resultType="org.springblade.manager.entity.WbsTreeContract">
-        SELECT *
-        FROM m_wbs_tree_contract
-        WHERE project_id = #{projectId}
-          AND contract_id = #{contractId}
-          AND wbs_id = #{wbsId}
-          AND STATUS = 1
-          AND is_deleted = 0
-          AND old_id is null
-    </select>
-
     <select id="selectParent" resultType="org.springblade.manager.entity.WbsTreePrivate">
     <select id="selectParent" resultType="org.springblade.manager.entity.WbsTreePrivate">
         SELECT p_key_id, node_name, full_name
         SELECT p_key_id, node_name, full_name
         FROM m_wbs_tree_private
         FROM m_wbs_tree_private
@@ -585,7 +574,8 @@
                 node_type = #{item.nodeType},
                 node_type = #{item.nodeType},
                 major_data_type = #{item.majorDataType},
                 major_data_type = #{item.majorDataType},
                 table_type = #{item.tableType},
                 table_type = #{item.tableType},
-                table_owner = #{item.tableOwner}
+                table_owner = #{item.tableOwner},
+                html_url = #{item.htmlUrl}
             </set>
             </set>
             WHERE id = #{item.id}
             WHERE id = #{item.id}
             AND project_id = #{item.projectId}
             AND project_id = #{item.projectId}

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsTreePrivateMapper.xml

@@ -302,7 +302,8 @@
                 import_matching_info = #{item.importMatchingInfo},
                 import_matching_info = #{item.importMatchingInfo},
                 mix_ratio_test_ids = #{item.mixRatioTestIds},
                 mix_ratio_test_ids = #{item.mixRatioTestIds},
                 init_table_name = #{item.initTableName},
                 init_table_name = #{item.initTableName},
-                init_table_id = #{item.initTableId}
+                init_table_id = #{item.initTableId},
+                html_url = #{item.htmlUrl}
             </set>
             </set>
             WHERE id = #{item.id}
             WHERE id = #{item.id}
             AND project_id = #{item.projectId}
             AND project_id = #{item.projectId}

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

@@ -44,7 +44,7 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
 
     List<WbsTreeContractVO> tree2(String wbsId, String projectId, String contractId);
     List<WbsTreeContractVO> tree2(String wbsId, String projectId, String contractId);
 
 
-    List<WbsTreeContractVO> tree3(String wbsId, String projectId, String contractId);
+    List<WbsTreeContractTreeAllVO> tree3(String contractId, Integer type);
 
 
     List<WbsTreeContractVO6> tree6List(String wbsId, String projectId, String contractId);
     List<WbsTreeContractVO6> tree6List(String wbsId, String projectId, String contractId);
 
 
@@ -68,6 +68,6 @@ public interface IContractInfoService extends BaseService<ContractInfo> {
 
 
     Map<String, Object> trialRelationTree(String wbsId, String projectId, String contractId, String selfId);
     Map<String, Object> trialRelationTree(String wbsId, String projectId, String contractId, String selfId);
 
 
-
+    Map<Long, List<WbsTreeContractTreeAllVO>> treeAllJL(String contractId, Integer type);
 
 
 }
 }

+ 63 - 28
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ContractInfoServiceImpl.java

@@ -3,6 +3,7 @@ package org.springblade.manager.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
@@ -39,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 
 import java.io.IOException;
 import java.io.IOException;
 import java.util.*;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 @Service
 @Service
@@ -131,33 +133,67 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
     }
     }
 
 
     @Override
     @Override
-    public List<WbsTreeContractVO> tree3(String wbsId, String projectId, String contractId) {
-        List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree5(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
-        //获取所有已填报信息
-        Map<String, Long> allTable = informationQueryClient.getTreeAllTable(contractId);
-        Set<String> keySet = allTable.keySet();
-        for (String key : keySet) {
-            for (WbsTreeContractVO vo : wbsTreeContractVOS) {
-                if (key.equals(vo.getId()+"")){
-                    vo.setSubmitCounts(allTable.get(key));
+    public List<WbsTreeContractTreeAllVO> tree3(String contractId, Integer type) {
+        List<WbsTreeContractTreeAllVO> wbsTreeContractVOS = baseMapper.tree5(Long.parseLong(contractId));
+        if (ObjectUtils.isNotEmpty(type) && type == 1) {
+            //获取所有已填报信息
+            Map<String, Long> allTable = informationQueryClient.getTreeAllTable(contractId);
+            Set<String> keySet = allTable.keySet();
+            for (String key : keySet) {
+                for (WbsTreeContractTreeAllVO vo : wbsTreeContractVOS) {
+                    if (key.equals(vo.getId() + "")) {
+                        vo.setSubmitCounts(allTable.get(key));
+                    }
                 }
                 }
             }
             }
+            wbsTreeContractVOS.stream().forEach(wtc -> {
+                if (wtc.getSubmitCounts() == null) {
+                    wtc.setSubmitCounts(0L);
+                }
+            });
         }
         }
-        wbsTreeContractVOS.stream().forEach(wtc->{
-            if (wtc.getSubmitCounts() == null){
-                wtc.setSubmitCounts(0L);
+        return buildWbsTreeByStreamByTreeAll(wbsTreeContractVOS);
+    }
+
+    @Override
+    public Map<Long, List<WbsTreeContractTreeAllVO>> treeAllJL(String contractId, Integer type) {
+        //获取当前监理、指挥部合同段对应的施工权限
+        String sql = "select contract_id_sg from m_contract_relation_jlyz where contract_id_jlyz = " + contractId;
+        List<ContractRelationJlyz> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ContractRelationJlyz.class));
+
+        Map<Long, List<WbsTreeContractTreeAllVO>> result = new HashMap<>();
+
+        //查询施工树
+        for (ContractRelationJlyz sg : query) {
+            List<WbsTreeContractTreeAllVO> wbsTreeContractVOS = baseMapper.tree5(sg.getContractIdSg());
+            if (ObjectUtils.isNotEmpty(type) && type == 1) {
+                //获取所有已填报信息
+                Map<String, Long> allTable = informationQueryClient.getTreeAllTable(contractId);
+                Set<String> keySet = allTable.keySet();
+                for (String key : keySet) {
+                    for (WbsTreeContractTreeAllVO vo : wbsTreeContractVOS) {
+                        if (key.equals(vo.getId() + "")) {
+                            vo.setSubmitCounts(allTable.get(key));
+                        }
+                    }
+                }
+                wbsTreeContractVOS.stream().forEach(wtc -> {
+                    if (wtc.getSubmitCounts() == null) {
+                        wtc.setSubmitCounts(0L);
+                    }
+                });
             }
             }
-        });
-        return buildWbsTreeByStream(wbsTreeContractVOS);
+            List<WbsTreeContractTreeAllVO> resultTreeSG = buildWbsTreeByStreamByTreeAll(wbsTreeContractVOS);
+            result.put(sg.getContractIdSg(), resultTreeSG);
+        }
+        return result;
     }
     }
 
 
     @Override
     @Override
     public List<WbsTreeContractVO6> tree6List(String wbsId, String projectId, String contractId) {
     public List<WbsTreeContractVO6> tree6List(String wbsId, String projectId, String contractId) {
-        List<WbsTreeContractVO6> wbsTreeContractVOS = baseMapper.tree6(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
-        return wbsTreeContractVOS;
+        return baseMapper.tree6(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId));
     }
     }
 
 
-
     @Override
     @Override
     public List<WbsTreeContractVO> tree(String wbsId, String projectId, String contractId) {
     public List<WbsTreeContractVO> tree(String wbsId, String projectId, String contractId) {
         List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree2(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId), null, null, null);
         List<WbsTreeContractVO> wbsTreeContractVOS = baseMapper.tree2(Long.parseLong(wbsId), Long.parseLong(projectId), Long.parseLong(contractId), null, null, null);
@@ -171,10 +207,10 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         return list;
         return list;
     }
     }
 
 
-    public List<WbsTreeContractVO6> buildWbsTreeByStream6(List<WbsTreeContractVO6> wbsTreeVO2s) {
-        List<WbsTreeContractVO6> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
-        Map<Long, List<WbsTreeContractVO6>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeContractVO6::getParentId));
-        this.recursionFnTree6(list, map);
+    public List<WbsTreeContractTreeAllVO> buildWbsTreeByStreamByTreeAll(List<WbsTreeContractTreeAllVO> wbsTreeVO2s) {
+        List<WbsTreeContractTreeAllVO> list = wbsTreeVO2s.stream().filter(f -> f.getParentId() == 0L).collect(Collectors.toList());
+        Map<Long, List<WbsTreeContractTreeAllVO>> map = wbsTreeVO2s.stream().collect(Collectors.groupingBy(WbsTreeContractTreeAllVO::getParentId));
+        this.recursionFnTreeAll(list, map);
         return list;
         return list;
     }
     }
 
 
@@ -189,18 +225,17 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
         }
         }
     }
     }
 
 
-    public void recursionFnTree6(List<WbsTreeContractVO6> list, Map<Long, List<WbsTreeContractVO6>> map) {
-        for (WbsTreeContractVO6 wbsTreeContractVO6 : list) {
-            List<WbsTreeContractVO6> childrenList = map.get(wbsTreeContractVO6.getId());
-            wbsTreeContractVO6.setChildren(childrenList);
+    public void recursionFnTreeAll(List<WbsTreeContractTreeAllVO> list, Map<Long, List<WbsTreeContractTreeAllVO>> map) {
+        for (WbsTreeContractTreeAllVO wbsTreeContractVO : list) {
+            List<WbsTreeContractTreeAllVO> childrenList = map.get(wbsTreeContractVO.getId());
+            wbsTreeContractVO.setChildren(childrenList);
             if (childrenList != null && childrenList.size() > 0) {
             if (childrenList != null && childrenList.size() > 0) {
-                wbsTreeContractVO6.setHasChildren(true);
-                recursionFnTree6(childrenList, map);
+                wbsTreeContractVO.setHasChildren(true);
+                recursionFnTreeAll(childrenList, map);
             }
             }
         }
         }
     }
     }
 
 
-
     @Override
     @Override
     public List<WbsTreeContractVO2> treeTwo(String projectId) {
     public List<WbsTreeContractVO2> treeTwo(String projectId) {
         return wbsTreeContractMapper.selectListByCondition(projectId);
         return wbsTreeContractMapper.selectListByCondition(projectId);

+ 149 - 113
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -1049,7 +1049,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     @Override
     @Override
     public R getBussPdfInfo(Long pkeyId) throws Exception {
     public R getBussPdfInfo(Long pkeyId) throws Exception {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-       // String file_path = "/Users/hongchuangyanfa/Desktop/";
+        //String file_path = "/Users/hongchuangyanfa/Desktop/";
 
 
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
         WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
                 .eq(WbsTreeContract::getPKeyId, pkeyId));
@@ -1096,12 +1096,33 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
             if (xx == all) {
             if (xx == all) {
                 int fisRow = mergedCell.getFirstRow();
                 int fisRow = mergedCell.getFirstRow();
                 int firsrCol = mergedCell.getFirstColumn();
                 int firsrCol = mergedCell.getFirstColumn();
+
                 Cell cell = sheet.getRow(fisRow).getCell(firsrCol);
                 Cell cell = sheet.getRow(fisRow).getCell(firsrCol);
                 short fontIndex = cell.getCellStyle().getFontIndex();
                 short fontIndex = cell.getCellStyle().getFontIndex();
-                Font fontAt = workbook.getFontAt(fontIndex);
-                short fontHeightInPoints = fontAt.getFontHeightInPoints();
+
+                Font oldfontAt = workbook.getFontAt(fontIndex);
+
+                Font redFont = workbook.createFont();
+                redFont.setFontHeightInPoints(oldfontAt.getFontHeightInPoints());//设置字体大小
+                redFont.setFontName(oldfontAt.getFontName());//设置字体
+
+                CellStyle newStyle = workbook.createCellStyle(); //创建单元格样式
+                newStyle.cloneStyleFrom(cell.getCellStyle());
+
+
+
+                short fontHeightInPoints = redFont.getFontHeightInPoints();
                 if (fontHeightInPoints >= 14 && StringUtils.isEmpty(cell.getStringCellValue()) && fisRow<=8) {
                 if (fontHeightInPoints >= 14 && StringUtils.isEmpty(cell.getStringCellValue()) && fisRow<=8) {
-                    cell.setCellValue(projectInfo.getProjectName());
+
+                    String title=projectInfo.getProjectName();
+                    if(title.length()>=44){
+                        sheet.getRow(fisRow).setHeight((short)900);
+                        newStyle.setWrapText(true);
+                    }
+                    redFont.setBold(true);
+                    newStyle.setFont(redFont);
+                    cell.setCellStyle(newStyle);
+                    cell.setCellValue(title);
                     break;
                     break;
                 }
                 }
             }
             }
@@ -1122,90 +1143,98 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         if (val.indexOf("__") >= 0) {
                         if (val.indexOf("__") >= 0) {
                             String[] DataVal = val.split("__");
                             String[] DataVal = val.split("__");
                             String[] xy = DataVal[1].split("_");
                             String[] xy = DataVal[1].split("_");
-
-                            Element data = trs.get(Integer.parseInt(xy[0])).select("td").get(Integer.parseInt(xy[1]));
-
-                            if (data.html().indexOf("x1") >= 0 && data.html().indexOf("y1") >= 0) {
-                                int x1 = 0;
-                                int x2 = 0;
-                                int y1 = 0;
-                                int y2 = 0;
-
-                                if (data.html().indexOf("el-tooltip") >= 0) {
-                                    x1 = Integer.parseInt(data.children().get(0).children().get(0).attr("x1"));
-                                    x2 = Integer.parseInt(data.children().get(0).children().get(0).attr("x2"));
-                                    y1 = Integer.parseInt(data.children().get(0).children().get(0).attr("y1"));
-                                } else {
-                                    x1 = Integer.parseInt(data.children().get(0).attr("x1"));
-                                    y1 = Integer.parseInt(data.children().get(0).attr("y1"));
-                                }
-                                if (x1 == 0) {
-                                    x1 = 1;
-                                }
-                                String myData = DataInfo.get(val) + "";
-                                if (myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) {
-                                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
-                                    sdf.setTimeZone(TimeZone.getTimeZone("GTM+8"));
-                                    SimpleDateFormat formatStr = new SimpleDateFormat("yyyy年MM月dd日");
-                                    if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
-
-                                        myData = myData.replace("[", "").replace("]", "").replaceAll("'", "");
-                                        String[] dataVal = myData.split(",");
-
-                                        Date Start_dataStr = sdf.parse(dataVal[0]);
-                                        Date end_dataStr = sdf.parse(dataVal[1]);
-                                        String StartDate = formatStr.format(Start_dataStr);
-                                        String endDate = formatStr.format(end_dataStr);
-                                        if (StartDate.equals(endDate)) {
-                                            myData = StartDate;
-                                        } else {
-                                            myData = StartDate + "-" + endDate;
-                                        }
-                                    } else {
-                                        String[] dataStr = myData.split("T")[0].split("-");
-                                        myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1);
-                                    }
-                                }
-                                //https:bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
-                                if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
-
-                                    InputStream imageIn = CommonUtil.getOSSInputStream(myData);
-                                    byte[] bytes = IOUtils.toByteArray(imageIn);
-                                    // 这里根据实际需求选择图片类型
-                                    int pictureIdx = workbook.addPicture(bytes, 6);
-
-                                    CreationHelper helper = workbook.getCreationHelper();
-                                    ClientAnchor anchor = helper.createClientAnchor();
-                                    anchor.setCol1(x1); // param1是列号
-                                    anchor.setCol2(x2);
-                                    anchor.setRow1(y1); // param2是行号
-                                    anchor.setRow2(y2); // param2是行号
-                                    //
-                                    Drawing drawing = sheet.createDrawingPatriarch();
-                                    anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
-                                    // 插入图片
-                                    Picture pict = drawing.createPicture(anchor, pictureIdx); // 调整图片占单元格百分比的大小,1.0就是100%
-                                    pict.resize(1, 1);
-                                    FileUtils.imageOrientation(sheet, anchor, new DataVO(x1 - 1, y1 - 1));
-
-                                } else if (myData.equals("1") && data.html().indexOf("hc-form-checkbox-group") >= 0) {
-                                    Row row = sheet.getRow(y1 - 1);
-                                    if(row!=null){
-                                        Cell cell = row.getCell(x1 - 1);
-                                        if(cell!=null || ObjectUtils.isNotEmpty(cell)) {
-                                            String exceVal = cell.getStringCellValue().replaceAll(" ", "");
-                                            short fontIndex = cell.getCellStyle().getFontIndex();
-                                            Font fontAt = workbook.getFontAt(fontIndex);
-                                            fontAt.setFontName("EUDC");
-                                            cell.setCellValue(exceVal.replace("□", "\u2611"));
-                                        }
-                                    }
-                                } else {
-                                    Row row = sheet.getRow(y1 - 1);
-                                    if(row!=null){
-                                        Cell cell = row.getCell(x1 - 1);
-                                        if(cell!=null || ObjectUtils.isNotEmpty(cell)){
-                                            cell.setCellValue(myData);
+                            if (Integer.parseInt(xy[0])<trs.size()) {
+                                Element ytzData = trs.get(Integer.parseInt(xy[0]));
+                                if (ytzData != null) {
+                                    Elements tdsx = ytzData.select("td");
+                                    if (Integer.parseInt(xy[1]) < tdsx.size()) {
+                                        Element data = ytzData.select("td").get(Integer.parseInt(xy[1]));
+                                        if (data != null) {
+                                            if (data.html().indexOf("x1") >= 0 && data.html().indexOf("y1") >= 0) {
+                                                int x1 = 0;
+                                                int x2 = 0;
+                                                int y1 = 0;
+                                                int y2 = 0;
+
+                                                if (data.html().indexOf("el-tooltip") >= 0) {
+                                                    x1 = Integer.parseInt(data.children().get(0).children().get(0).attr("x1"));
+                                                    x2 = Integer.parseInt(data.children().get(0).children().get(0).attr("x2"));
+                                                    y1 = Integer.parseInt(data.children().get(0).children().get(0).attr("y1"));
+                                                } else {
+                                                    x1 = Integer.parseInt(data.children().get(0).attr("x1"));
+                                                    y1 = Integer.parseInt(data.children().get(0).attr("y1"));
+                                                }
+                                                if (x1 == 0) {
+                                                    x1 = 1;
+                                                }
+                                                String myData = DataInfo.get(val) + "";
+                                                if (myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) {
+                                                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
+                                                    sdf.setTimeZone(TimeZone.getTimeZone("GTM+8"));
+                                                    SimpleDateFormat formatStr = new SimpleDateFormat("yyyy年MM月dd日");
+                                                    if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
+
+                                                        myData = myData.replace("[", "").replace("]", "").replaceAll("'", "");
+                                                        String[] dataVal = myData.split(",");
+
+                                                        Date Start_dataStr = sdf.parse(dataVal[0]);
+                                                        Date end_dataStr = sdf.parse(dataVal[1]);
+                                                        String StartDate = formatStr.format(Start_dataStr);
+                                                        String endDate = formatStr.format(end_dataStr);
+                                                        if (StartDate.equals(endDate)) {
+                                                            myData = StartDate;
+                                                        } else {
+                                                            myData = StartDate + "-" + endDate;
+                                                        }
+                                                    } else {
+                                                        String[] dataStr = myData.split("T")[0].split("-");
+                                                        myData = StringUtil.format("{}年{}月{}日", dataStr[0], dataStr[1], Integer.parseInt(dataStr[2]) + 1);
+                                                    }
+                                                }
+                                                //https:bladex-test-info.oss-cn-chengdu.aliyuncs.com//upload/20220819/b53cb6700db369381e3b03d7737bcdec.jpg__16_1
+                                                if (myData.indexOf("https") >= 0 && myData.indexOf("aliyuncs") >= 0) {
+
+                                                    InputStream imageIn = CommonUtil.getOSSInputStream(myData);
+                                                    byte[] bytes = IOUtils.toByteArray(imageIn);
+                                                    // 这里根据实际需求选择图片类型
+                                                    int pictureIdx = workbook.addPicture(bytes, 6);
+
+                                                    CreationHelper helper = workbook.getCreationHelper();
+                                                    ClientAnchor anchor = helper.createClientAnchor();
+                                                    anchor.setCol1(x1); // param1是列号
+                                                    anchor.setCol2(x2);
+                                                    anchor.setRow1(y1); // param2是行号
+                                                    anchor.setRow2(y2); // param2是行号
+                                                    //
+                                                    Drawing drawing = sheet.createDrawingPatriarch();
+                                                    anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);
+                                                    // 插入图片
+                                                    Picture pict = drawing.createPicture(anchor, pictureIdx); // 调整图片占单元格百分比的大小,1.0就是100%
+                                                    pict.resize(1, 1);
+                                                    FileUtils.imageOrientation(sheet, anchor, new DataVO(x1 - 1, y1 - 1));
+
+                                                } else if (myData.equals("1") && data.html().indexOf("hc-form-checkbox-group") >= 0) {
+                                                    Row row = sheet.getRow(y1 - 1);
+                                                    if (row != null) {
+                                                        Cell cell = row.getCell(x1 - 1);
+                                                        if (cell != null || ObjectUtils.isNotEmpty(cell)) {
+                                                            String exceVal = cell.getStringCellValue().replaceAll(" ", "");
+                                                            short fontIndex = cell.getCellStyle().getFontIndex();
+                                                            Font fontAt = workbook.getFontAt(fontIndex);
+                                                            fontAt.setFontName("EUDC");
+                                                            cell.setCellValue(exceVal.replace("□", "\u2611"));
+                                                        }
+                                                    }
+                                                } else {
+                                                    Row row = sheet.getRow(y1 - 1);
+                                                    if (row != null) {
+                                                        Cell cell = row.getCell(x1 - 1);
+                                                        if (cell != null || ObjectUtils.isNotEmpty(cell)) {
+                                                            cell.setCellValue(myData);
+                                                        }
+                                                    }
+                                                }
+                                            }
                                         }
                                         }
                                     }
                                     }
                                 }
                                 }
@@ -1225,32 +1254,39 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
                         String key = e.getColKey();
                         String key = e.getColKey();
                         String[] keys = key.split("__");
                         String[] keys = key.split("__");
                         String[] trtd = keys[1].split("_");
                         String[] trtd = keys[1].split("_");
-                        Element data = trs.get(Integer.parseInt(trtd[0])).select("td").get(Integer.parseInt(trtd[1]));
-                        int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
-                        if (x1 == 0) {
-                            x1 = 1;
-                        }
-                        int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
+                        if (Integer.parseInt(trtd[0])<trs.size()) {
+                            Element ytzData = trs.get(Integer.parseInt(trtd[0]));
+                            if (ytzData != null) {
+                                Elements tdsx = ytzData.select("td");
+                                if (Integer.parseInt(trtd[1])<tdsx.size()) {
+                                    Element data = ytzData.select("td").get(Integer.parseInt(trtd[1]));
+                                    int x1 = Integer.parseInt(data.children().get(0).attr("x1"));
+                                    if (x1 == 0) {
+                                        x1 = 1;
+                                    }
+                                    int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
 
 
-                        Row row = sheet.getRow(y1 - 1);
-                        if(row!=null){
-                            Cell cell = sheet.getRow(y1-1).getCell(x1-1);
-                            if(cell!=null || ObjectUtils.isNotEmpty(cell)){
-                                short fontIndex = cell.getCellStyle().getFontIndex();
-                                Font oldfontAt = workbook.getFontAt(fontIndex);
-
-                                Font redFont = workbook.createFont();
-                                redFont.setColor(IndexedColors.WHITE.getIndex()); //设置字体颜色
-                                redFont.setFontHeightInPoints(oldfontAt.getFontHeightInPoints());//设置字体大小
-                                redFont.setFontName(oldfontAt.getFontName());//设置字体
-
-                                CellStyle newStyle = workbook.createCellStyle(); //创建单元格样式
-                                newStyle.cloneStyleFrom(cell.getCellStyle());
-                                newStyle.setFont(redFont);
-                                cell.setCellStyle(newStyle);
-                                cell.setCellValue(e.getId() + "");
+                                    Row row = sheet.getRow(y1 - 1);
+                                    if (row != null) {
+                                        Cell cell = sheet.getRow(y1 - 1).getCell(x1 - 1);
+                                        if (cell != null || ObjectUtils.isNotEmpty(cell)) {
+                                            short fontIndex = cell.getCellStyle().getFontIndex();
+                                            Font oldfontAt = workbook.getFontAt(fontIndex);
+
+                                            Font redFont = workbook.createFont();
+                                            redFont.setColor(IndexedColors.WHITE.getIndex()); //设置字体颜色
+                                            redFont.setFontHeightInPoints(oldfontAt.getFontHeightInPoints());//设置字体大小
+                                            redFont.setFontName(oldfontAt.getFontName());//设置字体
+
+                                            CellStyle newStyle = workbook.createCellStyle(); //创建单元格样式
+                                            newStyle.cloneStyleFrom(cell.getCellStyle());
+                                            newStyle.setFont(redFont);
+                                            cell.setCellStyle(newStyle);
+                                            cell.setCellValue(e.getId() + "");
+                                        }
+                                    }
+                                }
                             }
                             }
-
                         }
                         }
                     }
                     }
                 }
                 }
@@ -1316,7 +1352,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
     @Override
     @Override
     public void getBussPdfs(String nodeId, String classify, String contractId, String projectId) throws Exception {
     public void getBussPdfs(String nodeId, String classify, String contractId, String projectId) throws Exception {
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
         String file_path = ParamCache.getValue(CommonConstant.SYS_LOCAL_URL);
-        //String file_path = "/Users/hongchuangyanfa/Desktop/";
+       // String file_path = "/Users/hongchuangyanfa/Desktop/";
         // 获取有权限的节点信息
         // 获取有权限的节点信息
         List<AppWbsTreeContractVO> wbsTreeContractList = wbsTreeContractService.searchNodeAllTable(nodeId, classify, contractId, projectId);
         List<AppWbsTreeContractVO> wbsTreeContractList = wbsTreeContractService.searchNodeAllTable(nodeId, classify, contractId, projectId);
         List<String> data = new ArrayList<>();
         List<String> data = new ArrayList<>();

+ 24 - 17
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -79,29 +79,35 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
         List<String> idList = Arrays.asList(ids);
         List<String> idList = Arrays.asList(ids);
         List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
         List<String> idList1 = idList.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
 
 
-        //获取当前合同段wbs所有节点、表单(不包括客户端新增或者复制节点)
-        List<WbsTreeContract> list = baseMapper.findAllNodeList2(pawDTO.getProjectId(), pawDTO.getContractId(), pawDTO.getWbsId());
+        //获取当前合同段所有节点、表单(不包括客户端新增或者复制节点)
+        List<WbsTreeContract> list = baseMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
+                .select(WbsTreeContract::getId, WbsTreeContract::getType)
+                .eq(WbsTreeContract::getContractId, pawDTO.getContractId())
+                .eq(WbsTreeContract::getWbsId, pawDTO.getWbsId())
+                .eq(WbsTreeContract::getStatus, 1)
+                .isNull(WbsTreeContract::getOldId));
 
 
-        //当前合同段所有表单Id
+        //当前合同段所有表单ids
         List<String> collect1 = new ArrayList<>();
         List<String> collect1 = new ArrayList<>();
-        //当前合同段所有节点Id
+        //当前合同段所有节点ids
         List<String> collect2 = new ArrayList<>();
         List<String> collect2 = new ArrayList<>();
-
         if (list.size() > 0) {
         if (list.size() > 0) {
-            List<WbsTreeContract> collect3 = list.stream().filter(f -> f.getType() == 2).collect(Collectors.toList());
-            collect1 = collect3.stream().map(WbsTreeContract::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
-            List<WbsTreeContract> collect4 = list.stream().filter(f -> f.getType() == 1).collect(Collectors.toList());
-            collect2 = collect4.stream().map(WbsTreeContract::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
+            collect1 = list.stream().filter(f -> f.getType() == 2).collect(Collectors.toList()).stream().map(WbsTreeContract::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
+            collect2 = list.stream().filter(f -> f.getType() == 1).collect(Collectors.toList()).stream().map(WbsTreeContract::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
         }
         }
 
 
-        List<String> collect5 = collect2;
-        List<String> saveIds = idList1.stream().filter(f -> !collect5.contains(f)).collect(Collectors.toList());
-        List<String> delIds = collect5.stream().filter(f -> !idList1.contains(f)).collect(Collectors.toList());
+        List<String> collect3 = collect2;
+        List<String> saveIds = idList1.stream().filter(f -> !collect3.contains(f)).collect(Collectors.toList());
+        List<String> delIds = collect3.stream().filter(f -> !idList1.contains(f)).collect(Collectors.toList());
 
 
+        //TODO ---------节点未变只同步元素表---------
         if (saveIds.size() == 0 && delIds.size() == 0) {
         if (saveIds.size() == 0 && delIds.size() == 0) {
-            //节点id未变,只进行节点下的元素表的同步
             List<WbsTreePrivate> wbsTreePrivateList2 = new ArrayList<>();
             List<WbsTreePrivate> wbsTreePrivateList2 = new ArrayList<>();
-            List<WbsTreePrivate> wbsTreePrivateList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, Long.parseLong(pawDTO.getProjectId())).eq(WbsTreePrivate::getWbsId, Long.parseLong(pawDTO.getWbsId())).eq(WbsTreePrivate::getType, 2));
+            List<WbsTreePrivate> wbsTreePrivateList = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
+                    .eq(WbsTreePrivate::getProjectId, Long.parseLong(pawDTO.getProjectId()))
+                    .eq(WbsTreePrivate::getWbsId, Long.parseLong(pawDTO.getWbsId()))
+                    .eq(WbsTreePrivate::getType, 2)
+            );
 
 
             wbsTreePrivateList.forEach(wbsTreePrivate -> {
             wbsTreePrivateList.forEach(wbsTreePrivate -> {
                 idList1.forEach(id -> {
                 idList1.forEach(id -> {
@@ -114,6 +120,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             List<String> collect = wbsTreePrivateList2.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
             List<String> collect = wbsTreePrivateList2.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
 
 
             List<String> diffRent1 = DiffListUtil.getDiffRent(collect, collect1);
             List<String> diffRent1 = DiffListUtil.getDiffRent(collect, collect1);
+
             if (collect.size() == collect1.size()) {
             if (collect.size() == collect1.size()) {
                 return true;
                 return true;
             }
             }
@@ -141,7 +148,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
             }
             }
 
 
         } else {
         } else {
-            //删除
+            //TODO ---------删除---------
             if (delIds.size() > 0) {
             if (delIds.size() > 0) {
                 List<ContractRelationJlyz> contractRelationJLYZList = baseMapper.selectContractRelationInfoByidSG2(pawDTO.getContractId());
                 List<ContractRelationJlyz> contractRelationJLYZList = baseMapper.selectContractRelationInfoByidSG2(pawDTO.getContractId());
                 if (contractRelationJLYZList.size() > 0) {
                 if (contractRelationJLYZList.size() > 0) {
@@ -169,7 +176,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 baseMapper.deleteBatch(ids1, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
                 baseMapper.deleteBatch(ids1, pawDTO.getWbsId(), pawDTO.getProjectId(), pawDTO.getContractId());
             }
             }
 
 
-            //新增
+            //TODO ---------新增---------
             if (saveIds.size() > 0) {
             if (saveIds.size() > 0) {
                 List<WbsTreePrivate> wbsTreePrivatesList = new ArrayList<>();
                 List<WbsTreePrivate> wbsTreePrivatesList = new ArrayList<>();
                 List<WbsTreeContract> wbsTreeContractList = new ArrayList<>();
                 List<WbsTreeContract> wbsTreeContractList = new ArrayList<>();
@@ -323,7 +330,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                 tableOwners = "1,2,3";
                 tableOwners = "1,2,3";
             } else if (tableOwner.equals("2")) {
             } else if (tableOwner.equals("2")) {
                 tableOwners = "4,5,6";
                 tableOwners = "4,5,6";
-            }else {
+            } else {
                 tableOwners = "7,8,9";
                 tableOwners = "7,8,9";
             }
             }
             tableOwnerList = Func.toStrList(tableOwners);
             tableOwnerList = Func.toStrList(tableOwners);

+ 38 - 116
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -457,7 +457,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         List<WbsTreePrivate> listPrivate = new ArrayList<>();
         List<WbsTreePrivate> listPrivate = new ArrayList<>();
         List<WbsTreeContract> listContract = new ArrayList<>();
         List<WbsTreeContract> listContract = new ArrayList<>();
         //获取当前项目下所有合同段信息
         //获取当前项目下所有合同段信息
-        List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, projectId));
+        List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().select(ContractInfo::getId).eq(ContractInfo::getPId, projectId));
 
 
         for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
         for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
             for (WbsTreePrivate treePrivateNow : wbsTreePrivatesAllNow) {
             for (WbsTreePrivate treePrivateNow : wbsTreePrivatesAllNow) {
@@ -471,8 +471,8 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                                 || (ObjectUtils.isNotEmpty(wbsTreePrivate.getImportMatchingInfo()) && !wbsTreePrivate.getImportMatchingInfo().equals(treePrivateNow.getImportMatchingInfo()))
                                 || (ObjectUtils.isNotEmpty(wbsTreePrivate.getImportMatchingInfo()) && !wbsTreePrivate.getImportMatchingInfo().equals(treePrivateNow.getImportMatchingInfo()))
                                 || (ObjectUtils.isNotEmpty(wbsTreePrivate.getMixRatioTestIds()) && !wbsTreePrivate.getMixRatioTestIds().equals(treePrivateNow.getMixRatioTestIds()))
                                 || (ObjectUtils.isNotEmpty(wbsTreePrivate.getMixRatioTestIds()) && !wbsTreePrivate.getMixRatioTestIds().equals(treePrivateNow.getMixRatioTestIds()))
                                 || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableId()) && !wbsTreePrivate.getInitTableId().equals(treePrivateNow.getInitTableId()))
                                 || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableId()) && !wbsTreePrivate.getInitTableId().equals(treePrivateNow.getInitTableId()))
-                                || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableName()) && !wbsTreePrivate.getInitTableName().equals(treePrivateNow.getInitTableName()))
-                        )) {
+                                || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableName()) && !wbsTreePrivate.getInitTableName().equals(treePrivateNow.getInitTableName())
+                                || (ObjectUtils.isNotEmpty(wbsTreePrivate.getHtmlUrl()) && !wbsTreePrivate.getHtmlUrl().equals(treePrivateNow.getHtmlUrl()))))) {
                     //修改项目wbs信息
                     //修改项目wbs信息
                     WbsTreePrivate wbsPrivate = BeanUtil.copyProperties(wbsTreePrivate, WbsTreePrivate.class);
                     WbsTreePrivate wbsPrivate = BeanUtil.copyProperties(wbsTreePrivate, WbsTreePrivate.class);
                     if (wbsPrivate != null) {
                     if (wbsPrivate != null) {
@@ -493,14 +493,18 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             }
             }
         }
         }
 
 
+        //修改到项目
         if (listPrivate.size() > 0) {
         if (listPrivate.size() > 0) {
             baseMapper.updateBatchWbsPrivate(listPrivate);
             baseMapper.updateBatchWbsPrivate(listPrivate);
         }
         }
+
+        //修改到合同段
         if (listContract.size() > 0) {
         if (listContract.size() > 0) {
             //获取合同段下的复制、新增节点
             //获取合同段下的复制、新增节点
             List<WbsTreeContract> wbsTreeContractsCopyOrAddAll = new ArrayList<>();
             List<WbsTreeContract> wbsTreeContractsCopyOrAddAll = new ArrayList<>();
             for (ContractInfo contractInfo : contractInfos) {
             for (ContractInfo contractInfo : contractInfos) {
                 List<WbsTreeContract> wbsTreeContractsCopyOrAdd = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
                 List<WbsTreeContract> wbsTreeContractsCopyOrAdd = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>lambdaQuery()
+                        .select(WbsTreeContract::getId, WbsTreeContract::getOldId, WbsTreeContract::getProjectId, WbsTreeContract::getContractId)
                         .eq(WbsTreeContract::getProjectId, projectId)
                         .eq(WbsTreeContract::getProjectId, projectId)
                         .eq(WbsTreeContract::getContractId, contractInfo.getId())
                         .eq(WbsTreeContract::getContractId, contractInfo.getId())
                         .eq(WbsTreeContract::getWbsType, wbsType)
                         .eq(WbsTreeContract::getWbsType, wbsType)
@@ -520,6 +524,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         obj2.setMajorDataType(obj1.getMajorDataType());
                         obj2.setMajorDataType(obj1.getMajorDataType());
                         obj2.setTableType(obj1.getTableType());
                         obj2.setTableType(obj1.getTableType());
                         obj2.setTableOwner(obj1.getTableOwner());
                         obj2.setTableOwner(obj1.getTableOwner());
+                        obj2.setHtmlUrl(obj1.getHtmlUrl());
                         listContractAdd.add(obj2);
                         listContractAdd.add(obj2);
                     }
                     }
                 }
                 }
@@ -802,34 +807,19 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
 
             if (("1").equals(wbsTreePrivate.getWbsType())) {
             if (("1").equals(wbsTreePrivate.getWbsType())) {
                 if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
                 if (("public").equals(projectInfo.getReferenceWbsTemplateType())) {
-                    /*TODO-------------------------------------公有引用同步--------------------------------------------*/
+                    /*TODO-------------------------------------质检公有引用同步--------------------------------------------*/
                     //获取当前节点对应的公有引用树下的元素表
                     //获取当前节点对应的公有引用树下的元素表
-                    WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
-                            .eq(WbsTree::getId, wbsTreePrivate.getId())
-                    );
+                    WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getId, wbsTreePrivate.getId()));
                     List<WbsTree> wbsTreesPublicTables;
                     List<WbsTree> wbsTreesPublicTables;
                     if (wbsTree.getAncestors().equals("0")) {
                     if (wbsTree.getAncestors().equals("0")) {
                         //根节点
                         //根节点
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                .eq(WbsTree::getWbsId, wbsTree.getWbsId())
-                                .eq(WbsTree::getType, 2)
-                                .eq(WbsTree::getStatus, 1)
-                        );
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2).eq(WbsTree::getStatus, 1));
                     } else {
                     } else {
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                .eq(WbsTree::getWbsId, wbsTree.getWbsId())
-                                .eq(WbsTree::getType, 2)
-                                .eq(WbsTree::getStatus, 1)
-                                .like(WbsTree::getAncestors, wbsTree.getId())
-                        );
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2).eq(WbsTree::getStatus, 1).like(WbsTree::getAncestors, wbsTree.getId()));
                     }
                     }
 
 
                     //获取当前项目树下的元素表 节点
                     //获取当前项目树下的元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                            .eq(WbsTreePrivate::getStatus, 1)
-                    );
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
 
 
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
@@ -842,22 +832,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
 
                     //获取新增的公有元素表addPublicTable
                     //获取新增的公有元素表addPublicTable
                     List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
                     List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
-                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
-                            .collect(Collectors.toList());
+                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
 
 
                     //判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     //判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
                     List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
-                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
-                    ).collect(Collectors.toList());
+                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
 
                     //获取当前项目下所有施工合同段id
                     //获取当前项目下所有施工合同段id
                     List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
                     List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
 
 
                     //获取当前项目下所有合同段树
                     //获取当前项目下所有合同段树
-                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreeContract::getStatus, 1)
-                    );
+                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreeContract::getStatus, 1));
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 
 
@@ -946,35 +931,20 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     }
                     }
 
 
                 } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
                 } else if (("private").equals(projectInfo.getReferenceWbsTemplateType())) {
-                    /*TODO-------------------------------------私有引用同步--------------------------------------------*/
+                    /*TODO-------------------------------------质检私有引用同步--------------------------------------------*/
                     //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
                     //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
                     WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
                     WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
                     //获取当前私有引用树的元素表信息
                     //获取当前私有引用树的元素表信息
                     List<WbsTreePrivate> wbsTreePrivateRootTables;
                     List<WbsTreePrivate> wbsTreePrivateRootTables;
                     if (wbsTreePrivate.getAncestors().equals("0")) {
                     if (wbsTreePrivate.getAncestors().equals("0")) {
                         //根节点
                         //根节点
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                                .eq(WbsTreePrivate::getType, 2)
-                                .eq(WbsTreePrivate::getStatus, 1)
-                        );
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2).eq(WbsTreePrivate::getStatus, 1));
                     } else {
                     } else {
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                                .eq(WbsTreePrivate::getType, 2)
-                                .eq(WbsTreePrivate::getStatus, 1)
-                                .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
-                        );
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2).eq(WbsTreePrivate::getStatus, 1).like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId()));
                     }
                     }
 
 
                     //获取当前项目选择的节点下的所有元素表 节点
                     //获取当前项目选择的节点下的所有元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                            .eq(WbsTreePrivate::getStatus, 1)
-                    );
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
 
 
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
@@ -987,22 +957,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
 
                     //获取新增的私有元素表addPrivateTable
                     //获取新增的私有元素表addPrivateTable
                     List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
                     List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
-                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
-                            .collect(Collectors.toList());
+                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
 
 
                     //获取当前项目下所有施工合同段id
                     //获取当前项目下所有施工合同段id
                     List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
                     List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
 
 
                     //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
                     List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
-                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
-                    ).collect(Collectors.toList());
+                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
 
                     //获取当前项目下所有合同段树
                     //获取当前项目下所有合同段树
-                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreeContract::getStatus, 1)
-                    );
+                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreeContract::getStatus, 1));
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 
 
@@ -1089,34 +1054,19 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             }
             }
             if (("2").equals(wbsTreePrivate.getWbsType())) {
             if (("2").equals(wbsTreePrivate.getWbsType())) {
                 if (("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
                 if (("public").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
-                    /*TODO-------------------------------------公有引用同步--------------------------------------------*/
+                    /*TODO-------------------------------------试验公有引用同步--------------------------------------------*/
                     //获取当前节点对应的公有引用树下的元素表
                     //获取当前节点对应的公有引用树下的元素表
-                    WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
-                            .eq(WbsTree::getId, wbsTreePrivate.getId())
-                    );
+                    WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getId, wbsTreePrivate.getId()));
                     List<WbsTree> wbsTreesPublicTables;
                     List<WbsTree> wbsTreesPublicTables;
                     if (wbsTree.getAncestors().equals("0")) {
                     if (wbsTree.getAncestors().equals("0")) {
                         //根节点
                         //根节点
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                .eq(WbsTree::getWbsId, wbsTree.getWbsId())
-                                .eq(WbsTree::getType, 2)
-                                .eq(WbsTree::getStatus, 1)
-                        );
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2).eq(WbsTree::getStatus, 1));
                     } else {
                     } else {
-                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                                .eq(WbsTree::getWbsId, wbsTree.getWbsId())
-                                .eq(WbsTree::getType, 2)
-                                .eq(WbsTree::getStatus, 1)
-                                .like(WbsTree::getAncestors, wbsTree.getId())
-                        );
+                        wbsTreesPublicTables = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, wbsTree.getWbsId()).eq(WbsTree::getType, 2).eq(WbsTree::getStatus, 1).like(WbsTree::getAncestors, wbsTree.getId()));
                     }
                     }
 
 
                     //获取当前项目树下的元素表 节点
                     //获取当前项目树下的元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                            .eq(WbsTreePrivate::getStatus, 1)
-                    );
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
 
 
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
@@ -1129,22 +1079,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
 
                     //获取新增的公有元素表addPublicTable
                     //获取新增的公有元素表addPublicTable
                     List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
                     List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
-                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
-                            .collect(Collectors.toList());
+                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
 
 
                     //判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     //判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
                     List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
-                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
-                    ).collect(Collectors.toList());
+                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
 
                     //获取当前项目下所有施工合同段id
                     //获取当前项目下所有施工合同段id
                     List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
                     List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().eq(ContractInfo::getPId, wbsTreePrivate.getProjectId()));
 
 
                     //获取当前项目下所有合同段树
                     //获取当前项目下所有合同段树
-                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreeContract::getStatus, 1)
-                    );
+                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreeContract::getStatus, 1));
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 
 
@@ -1233,35 +1178,20 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     }
                     }
 
 
                 } else if (("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
                 } else if (("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial())) {
-                    /*TODO-------------------------------------私有引用同步--------------------------------------------*/
+                    /*TODO-------------------------------------试验私有引用同步--------------------------------------------*/
                     //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
                     //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
                     WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
                     WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
                     //获取当前私有引用树的元素表信息
                     //获取当前私有引用树的元素表信息
                     List<WbsTreePrivate> wbsTreePrivateRootTables;
                     List<WbsTreePrivate> wbsTreePrivateRootTables;
                     if (wbsTreePrivate.getAncestors().equals("0")) {
                     if (wbsTreePrivate.getAncestors().equals("0")) {
                         //根节点
                         //根节点
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                                .eq(WbsTreePrivate::getType, 2)
-                                .eq(WbsTreePrivate::getStatus, 1)
-                        );
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2).eq(WbsTreePrivate::getStatus, 1));
                     } else {
                     } else {
-                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                                .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId())
-                                .eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId())
-                                .eq(WbsTreePrivate::getType, 2)
-                                .eq(WbsTreePrivate::getStatus, 1)
-                                .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
-                        );
+                        wbsTreePrivateRootTables = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivateRoot.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivateRoot.getWbsId()).eq(WbsTreePrivate::getType, 2).eq(WbsTreePrivate::getStatus, 1).like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId()));
                     }
                     }
 
 
                     //获取当前项目选择的节点下的所有元素表 节点
                     //获取当前项目选择的节点下的所有元素表 节点
-                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                            .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
-                            .eq(WbsTreePrivate::getStatus, 1)
-                    );
+                    List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId()).eq(WbsTreePrivate::getStatus, 1));
 
 
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
                     List<WbsTreePrivate> wbsTreePrivatesProjectTables;
@@ -1274,22 +1204,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
 
                     //获取新增的私有元素表addPrivateTable
                     //获取新增的私有元素表addPrivateTable
                     List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
                     List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
-                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
-                            .collect(Collectors.toList());
+                            !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId())).collect(Collectors.toList());
 
 
                     //获取当前项目下所有施工合同段id
                     //获取当前项目下所有施工合同段id
                     List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
                     List<ContractInfo> contractInfos = contractInfoMapper.selectContractIdByProjectId(wbsTreePrivate.getProjectId());
 
 
                     //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     //判断当前新增的表在私有wbs中是否存在上级节点,存在表示可以新增,不存在表示不新增
                     List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
                     List<WbsTreePrivate> addPrivateTables = addPrivateTable.stream().filter(node ->
-                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
-                    ).collect(Collectors.toList());
+                            wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())).collect(Collectors.toList());
 
 
                     //获取当前项目下所有合同段树
                     //获取当前项目下所有合同段树
-                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId())
-                            .eq(WbsTreeContract::getStatus, 1)
-                    );
+                    List<WbsTreeContract> treeContractListAll = wbsTreeContractMapper.selectList(Wrappers.<WbsTreeContract>query().lambda().eq(WbsTreeContract::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreeContract::getStatus, 1));
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllNodes = treeContractListAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
                     List<WbsTreeContract> treeContractListAllTables = treeContractListAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 
 
@@ -1476,9 +1401,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     jdbcTemplate.execute(delSql);
                     jdbcTemplate.execute(delSql);
                 }
                 }
 
 
-                //新增
-                //textDictInfoService.insertBatch(insertData, 1000);
-
                 //异步新增
                 //异步新增
                 List<List<TextdictInfo>> partition1 = Lists.partition(insertData, 1000);
                 List<List<TextdictInfo>> partition1 = Lists.partition(insertData, 1000);
                 CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->
                 CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->

+ 22 - 16
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -340,16 +340,21 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 //质检私有
                 //质检私有
             } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("private").equals(projectInfo.getReferenceWbsTemplateType())) {
             } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("private").equals(projectInfo.getReferenceWbsTemplateType())) {
                 //获取私有引用根节点
                 //获取私有引用根节点
-                WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
+                WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
+                        .select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId)
+                        .eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
                 //获取私有引用项目树
                 //获取私有引用项目树
                 List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                 List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivateRecord.getProjectId())
+                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
                         .eq(WbsTreePrivate::getStatus, 1)
                         .eq(WbsTreePrivate::getStatus, 1)
-                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, wbsTreePrivateRecord.getWbsId()).or().isNull(WbsTreePrivate::getWbsId))
+                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivateRecord.getProjectId()))
+                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, Long.parseLong(wbsTreePrivateRecord.getWbsId())).or().isNull(WbsTreePrivate::getWbsId))
                 );
                 );
                 //获取当前项目私有树、元素表
                 //获取当前项目私有树、元素表
                 List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                 List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
+                        .eq(WbsTreePrivate::getStatus, 1)
+                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
                         .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).or().isNull(WbsTreePrivate::getWbsId))
                         .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).or().isNull(WbsTreePrivate::getWbsId))
                 );
                 );
                 //同步修改
                 //同步修改
@@ -369,16 +374,21 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 //试验私有
                 //试验私有
             } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
             } else if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateIdTrial()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateTypeTrial()) && ("private").equals(projectInfo.getReferenceWbsTemplateTypeTrial()))) {
 
 
-                WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdTrial()));
+                WbsTreePrivate wbsTreePrivateRecord = wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
+                        .select(WbsTreePrivate::getProjectId, WbsTreePrivate::getWbsId)
+                        .eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateIdTrial()));
 
 
                 List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                 List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
                         .eq(WbsTreePrivate::getStatus, 1)
                         .eq(WbsTreePrivate::getStatus, 1)
-                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, wbsTreePrivateRecord.getWbsId()).or().isNull(WbsTreePrivate::getWbsId))
+                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
+                        .and(obj -> obj.eq(WbsTreePrivate::getWbsId, Long.parseLong(wbsTreePrivateRecord.getWbsId())).or().isNull(WbsTreePrivate::getWbsId))
                 );
                 );
 
 
                 List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
                 List<WbsTreePrivate> wbsTreePrivatesAllNow = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
+                        .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
+                        .eq(WbsTreePrivate::getStatus, 1)
+                        .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
                         .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateIdTrial()).or().isNull(WbsTreePrivate::getWbsId))
                         .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateIdTrial()).or().isNull(WbsTreePrivate::getWbsId))
                 );
                 );
 
 
@@ -558,16 +568,12 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
 
             if (pawDTO.getReferenceType().equals("public")) {
             if (pawDTO.getReferenceType().equals("public")) {
                 //当前公有引用
                 //当前公有引用
-                List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .select(WbsTreePrivate::getId)
-                        .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId()).eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 1));
+                List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getId).eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId()).eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 1));
                 List<String> collect = wbsTreePrivates.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
                 List<String> collect = wbsTreePrivates.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
                 idList2.addAll(collect);
                 idList2.addAll(collect);
             } else if (pawDTO.getReferenceType().equals("private")) {
             } else if (pawDTO.getReferenceType().equals("private")) {
                 //当前私有引用
                 //当前私有引用
-                List<WbsTreePrivate> wbsTreePrivates2 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                        .select(WbsTreePrivate::getId)
-                        .eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId()).eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 1));
+                List<WbsTreePrivate> wbsTreePrivates2 = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().select(WbsTreePrivate::getId).eq(WbsTreePrivate::getWbsId, pawDTO.getPrimaryKeyId()).eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 1));
                 List<String> collect = wbsTreePrivates2.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
                 List<String> collect = wbsTreePrivates2.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).stream().map(String::valueOf).collect(Collectors.toList());
                 idList2.addAll(collect);
                 idList2.addAll(collect);
             }
             }
@@ -779,7 +785,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         List<List<WbsTreePrivate>> partition1 = Lists.partition(insertData1, 1000);
                         List<List<WbsTreePrivate>> partition1 = Lists.partition(insertData1, 1000);
                         CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->
                         CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->
                                 CompletableFuture.runAsync(() -> {
                                 CompletableFuture.runAsync(() -> {
-                                    wbsTreePrivateService.insertBatch(addList,1000);
+                                    wbsTreePrivateService.insertBatch(addList, 1000);
                                 }, executor)).toArray(CompletableFuture[]::new));
                                 }, executor)).toArray(CompletableFuture[]::new));
                         handle.join();
                         handle.join();
 
 
@@ -796,7 +802,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         List<List<WbsTreePrivate>> partition1 = Lists.partition(insertData2, 1000);
                         List<List<WbsTreePrivate>> partition1 = Lists.partition(insertData2, 1000);
                         CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->
                         CompletableFuture<Void> handle = CompletableFuture.allOf(partition1.stream().map(addList ->
                                 CompletableFuture.runAsync(() -> {
                                 CompletableFuture.runAsync(() -> {
-                                    wbsTreePrivateService.insertBatch(addList,1000);
+                                    wbsTreePrivateService.insertBatch(addList, 1000);
                                 }, executor)).toArray(CompletableFuture[]::new));
                                 }, executor)).toArray(CompletableFuture[]::new));
                         handle.join();
                         handle.join();