|  | @@ -2,6 +2,7 @@ package org.springblade.manager.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
	
		
			
				|  |  |  import lombok.AllArgsConstructor;
 | 
	
	
		
			
				|  | @@ -12,7 +13,6 @@ import org.springblade.core.secure.utils.AuthUtil;
 | 
	
		
			
				|  |  |  import org.springblade.core.tool.node.ForestNodeMerger;
 | 
	
		
			
				|  |  |  import org.springblade.core.tool.utils.BeanUtil;
 | 
	
		
			
				|  |  |  import org.springblade.core.tool.utils.StringPool;
 | 
	
		
			
				|  |  | -import org.springblade.core.tool.utils.StringUtil;
 | 
	
		
			
				|  |  |  import org.springblade.manager.dto.WbsTreePrivateDTO2;
 | 
	
		
			
				|  |  |  import org.springblade.manager.dto.WbsTreePrivateDTO3;
 | 
	
		
			
				|  |  |  import org.springblade.manager.entity.*;
 | 
	
	
		
			
				|  | @@ -22,6 +22,7 @@ import org.springblade.manager.service.IWbsTreePrivateService;
 | 
	
		
			
				|  |  |  import org.springblade.manager.vo.WbsNodeTabAndParamVO;
 | 
	
		
			
				|  |  |  import org.springblade.manager.vo.WbsNodeTableVO;
 | 
	
		
			
				|  |  |  import org.springblade.manager.vo.WbsTreePrivateVO;
 | 
	
		
			
				|  |  | +import org.springframework.context.annotation.Bean;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -149,7 +150,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public List<WbsTreePrivateVO> tabTypeLazyTree( Long parentId, String projectId) {
 | 
	
		
			
				|  |  | +    public List<WbsTreePrivateVO> tabTypeLazyTree(Long parentId, String projectId) {
 | 
	
		
			
				|  |  |          return ForestNodeMerger.merge(baseMapper.tabTypeLazyTree(parentId, projectId));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -473,42 +474,49 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 | 
	
		
			
				|  |  |                  break;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              if (StringUtils.isNotEmpty(wbsId)) {
 | 
	
		
			
				|  |  | +                //获取当前参数表的所有业务数据
 | 
	
		
			
				|  |  | +                List<WbsParam> wbsParamListAll = wbsParamMapper.selectList(Wrappers.<WbsParam>query().lambda().eq(WbsParam::getType, 1));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  List<WbsParam> paramListData = new ArrayList<>();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                  //获取公有树
 | 
	
		
			
				|  |  |                  List<WbsTree> treePublicNodeAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
 | 
	
		
			
				|  |  |                          .eq(WbsTree::getWbsId, wbsId)
 | 
	
		
			
				|  |  |                          .eq(WbsTree::getStatus, 1)
 | 
	
		
			
				|  |  |                          .eq(WbsTree::getType, 1)
 | 
	
		
			
				|  |  |                  );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  if (treePublicNodeAll.size() > 0) {
 | 
	
		
			
				|  |  |                      //公有引用
 | 
	
		
			
				|  |  |                      for (WbsTreePrivate wbsTreePrivate : wbsTreePrivateAllNow) {
 | 
	
		
			
				|  |  |                          for (WbsTree wbsTree : treePublicNodeAll) {
 | 
	
		
			
				|  |  |                              if (wbsTree.getId().equals(wbsTreePrivate.getId())) {
 | 
	
		
			
				|  |  |                                  //获取公有节点参数
 | 
	
		
			
				|  |  | -                                List<WbsParam> paramList = wbsParamServiceImpl.findByNodeId(wbsTree.getId());
 | 
	
		
			
				|  |  | -                                for (WbsParam wbsParam : paramList) {
 | 
	
		
			
				|  |  | -                                    wbsParam.setWbsId(wbsTreePrivate.getPKeyId());
 | 
	
		
			
				|  |  | -                                    wbsParam.setId(SnowFlakeUtil.getId());
 | 
	
		
			
				|  |  | -                                    paramListData.add(wbsParam);
 | 
	
		
			
				|  |  | +                                List<WbsParam> wbsParamList = wbsParamListAll.stream().filter(f -> f.getWbsId().equals(wbsTree.getId())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +                                if (wbsParamList.size() > 0) {
 | 
	
		
			
				|  |  | +                                    for (WbsParam wbsParam : wbsParamList) {
 | 
	
		
			
				|  |  | +                                        WbsParam param = BeanUtil.copyProperties(wbsParam, WbsParam.class);
 | 
	
		
			
				|  |  | +                                        if (param != null) {
 | 
	
		
			
				|  |  | +                                            param.setWbsId(wbsTreePrivate.getPKeyId());
 | 
	
		
			
				|  |  | +                                            param.setId(SnowFlakeUtil.getId());
 | 
	
		
			
				|  |  | +                                            paramListData.add(param);
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  | -                    //私有引用 - 获取私有树
 | 
	
		
			
				|  |  | +                    //私有引用 - 获取原始引用私有树
 | 
	
		
			
				|  |  |                      WbsTreePrivate treePrivateRootNode = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
 | 
	
		
			
				|  |  |                              .eq(WbsTreePrivate::getPKeyId, wbsId)
 | 
	
		
			
				|  |  |                              .eq(WbsTreePrivate::getParentId, 0L)
 | 
	
		
			
				|  |  |                              .eq(WbsTreePrivate::getStatus, 1)
 | 
	
		
			
				|  |  |                              .eq(WbsTreePrivate::getType, 1)
 | 
	
		
			
				|  |  |                      );
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                      List<WbsTreePrivate> treePrivateNodeAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
 | 
	
		
			
				|  |  |                              .eq(WbsTreePrivate::getWbsId, treePrivateRootNode.getWbsId())
 | 
	
		
			
				|  |  | +                            .eq(WbsTreePrivate::getProjectId, treePrivateRootNode.getProjectId())
 | 
	
		
			
				|  |  |                              .eq(WbsTreePrivate::getStatus, 1)
 | 
	
		
			
				|  |  |                              .eq(WbsTreePrivate::getType, 1)
 | 
	
		
			
				|  |  |                      );
 | 
	
	
		
			
				|  | @@ -517,11 +525,16 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 | 
	
		
			
				|  |  |                          for (WbsTreePrivate wbsTreePrivateYS : treePrivateNodeAll) {
 | 
	
		
			
				|  |  |                              if (wbsTreePrivateYS.getId().equals(wbsTreePrivate.getId())) {
 | 
	
		
			
				|  |  |                                  //获取公有节点参数
 | 
	
		
			
				|  |  | -                                List<WbsParam> paramList = wbsParamServiceImpl.findByNodeId(wbsTreePrivateYS.getPKeyId());
 | 
	
		
			
				|  |  | -                                for (WbsParam wbsParam : paramList) {
 | 
	
		
			
				|  |  | -                                    wbsParam.setWbsId(wbsTreePrivate.getPKeyId());
 | 
	
		
			
				|  |  | -                                    wbsParam.setId(SnowFlakeUtil.getId());
 | 
	
		
			
				|  |  | -                                    paramListData.add(wbsParam);
 | 
	
		
			
				|  |  | +                                List<WbsParam> wbsParamList = wbsParamListAll.stream().filter(f -> f.getWbsId().equals(wbsTreePrivateYS.getPKeyId())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +                                if (wbsParamList.size() > 0) {
 | 
	
		
			
				|  |  | +                                    for (WbsParam wbsParam : wbsParamList) {
 | 
	
		
			
				|  |  | +                                        WbsParam param = BeanUtil.copyProperties(wbsParam, WbsParam.class);
 | 
	
		
			
				|  |  | +                                        if (param != null) {
 | 
	
		
			
				|  |  | +                                            param.setWbsId(wbsTreePrivate.getPKeyId());
 | 
	
		
			
				|  |  | +                                            param.setId(SnowFlakeUtil.getId());
 | 
	
		
			
				|  |  | +                                            paramListData.add(param);
 | 
	
		
			
				|  |  | +                                        }
 | 
	
		
			
				|  |  | +                                    }
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          }
 | 
	
	
		
			
				|  | @@ -532,16 +545,17 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 | 
	
		
			
				|  |  |                  Iterator<WbsParam> iterator = paramListData.iterator();
 | 
	
		
			
				|  |  |                  while (iterator.hasNext()) {
 | 
	
		
			
				|  |  |                      WbsParam next = iterator.next();
 | 
	
		
			
				|  |  | -                    WbsParam wbsParam = wbsParamMapper.selectOne(Wrappers.<WbsParam>query().lambda()
 | 
	
		
			
				|  |  | -                            .eq(WbsParam::getK, next.getK())
 | 
	
		
			
				|  |  | -                            .eq(WbsParam::getV, next.getV())
 | 
	
		
			
				|  |  | -                            .eq(WbsParam::getName, next.getName())
 | 
	
		
			
				|  |  | -                            .eq(WbsParam::getWbsId, next.getWbsId())
 | 
	
		
			
				|  |  | -                    );
 | 
	
		
			
				|  |  | -                    if (wbsParam != null) {
 | 
	
		
			
				|  |  | +                    List<WbsParam> collect = wbsParamListAll.stream().filter(f ->
 | 
	
		
			
				|  |  | +                            (StringUtils.isNotEmpty(f.getK()) && f.getK().equals(next.getK()))
 | 
	
		
			
				|  |  | +                                    && (StringUtils.isNotEmpty(f.getV()) && f.getV().equals(next.getV()))
 | 
	
		
			
				|  |  | +                                    && (StringUtils.isNotEmpty(f.getName()) && f.getName().equals(next.getName()))
 | 
	
		
			
				|  |  | +                                    && (ObjectUtils.isNotEmpty(f.getWbsId()) && f.getWbsId().equals(next.getWbsId())))
 | 
	
		
			
				|  |  | +                            .collect(Collectors.toList());
 | 
	
		
			
				|  |  | +                    if (collect.size() > 0) {
 | 
	
		
			
				|  |  |                          iterator.remove();
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  wbsParamServiceImpl.saveBatch(paramListData, 1000);
 | 
	
		
			
				|  |  |                  return true;
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -567,29 +581,38 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 | 
	
		
			
				|  |  |                  WbsTree wbsTree = wbsTreeMapper.selectOne(Wrappers.<WbsTree>query().lambda()
 | 
	
		
			
				|  |  |                          .eq(WbsTree::getId, wbsTreePrivate.getId())
 | 
	
		
			
				|  |  |                  );
 | 
	
		
			
				|  |  | -                List<WbsTree> 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<WbsTree> wbsTreesPublicTables;
 | 
	
		
			
				|  |  | +                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)
 | 
	
		
			
				|  |  | +                    );
 | 
	
		
			
				|  |  | +                } 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())
 | 
	
		
			
				|  |  | +                    );
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //获取当前项目树下的元素表 节点
 | 
	
		
			
				|  |  |                  List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
 | 
	
		
			
				|  |  |                          .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
 | 
	
		
			
				|  |  |                          .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
 | 
	
		
			
				|  |  |                          .eq(WbsTreePrivate::getStatus, 1)
 | 
	
		
			
				|  |  | -                        .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
 | 
	
		
			
				|  |  |                  );
 | 
	
		
			
				|  |  |                  List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -                List<WbsTreePrivate> wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +                List<WbsTreePrivate> wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //获取新增的公有元素表addPublicTable
 | 
	
		
			
				|  |  |                  List<WbsTree> addPublicTable = wbsTreesPublicTables.stream().filter(f ->
 | 
	
		
			
				|  |  |                          !wbsTreePrivatesProjectTables.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(f.getId()))
 | 
	
		
			
				|  |  |                          .collect(Collectors.toList());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                //判断当前新增的表在项目的wbs树种是否存在上级节点,存在表示可以新增,不存在表示不新增
 | 
	
		
			
				|  |  | +                //判断当前新增的表在项目的wbs树中是否存在上级节点,存在表示可以新增,不存在表示不新增
 | 
	
		
			
				|  |  |                  List<WbsTree> addPublicTables = addPublicTable.stream().filter(node ->
 | 
	
		
			
				|  |  |                          wbsTreePrivatesProjectNodes.stream().map(WbsTreePrivate::getId).collect(Collectors.toList()).contains(node.getParentId())
 | 
	
		
			
				|  |  |                  ).collect(Collectors.toList());
 | 
	
	
		
			
				|  | @@ -670,24 +693,34 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 | 
	
		
			
				|  |  |                  //根据wbsTreePrivate的wbsId=私有引用的pKeyId来获取引用树根节点
 | 
	
		
			
				|  |  |                  WbsTreePrivate wbsTreePrivateRoot = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTreePrivate.getWbsId()));
 | 
	
		
			
				|  |  |                  //获取当前私有引用树的元素表信息
 | 
	
		
			
				|  |  | -                List<WbsTreePrivate> 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, wbsTreePrivateRoot.getId())
 | 
	
		
			
				|  |  | -                );
 | 
	
		
			
				|  |  | +                List<WbsTreePrivate> wbsTreePrivateRootTables;
 | 
	
		
			
				|  |  | +                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)
 | 
	
		
			
				|  |  | +                    );
 | 
	
		
			
				|  |  | +                } 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())
 | 
	
		
			
				|  |  | +                    );
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //获取当前项目选择的节点下的所有元素表 节点
 | 
	
		
			
				|  |  |                  List<WbsTreePrivate> wbsTreePrivatesProjectAll = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
 | 
	
		
			
				|  |  |                          .eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId())
 | 
	
		
			
				|  |  |                          .eq(WbsTreePrivate::getWbsId, wbsTreePrivate.getWbsId())
 | 
	
		
			
				|  |  |                          .eq(WbsTreePrivate::getStatus, 1)
 | 
	
		
			
				|  |  | -                        .like(WbsTreePrivate::getAncestors, wbsTreePrivate.getId())
 | 
	
		
			
				|  |  |                  );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  List<WbsTreePrivate> wbsTreePrivatesProjectNodes = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(1)).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -                List<WbsTreePrivate> wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2)).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +                List<WbsTreePrivate> wbsTreePrivatesProjectTables = wbsTreePrivatesProjectAll.stream().filter(f -> f.getType().equals(2) && f.getAncestors().contains(String.valueOf(wbsTreePrivate.getId()))).collect(Collectors.toList());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //获取新增的私有元素表addPrivateTable
 | 
	
		
			
				|  |  |                  List<WbsTreePrivate> addPrivateTable = wbsTreePrivateRootTables.stream().filter(f ->
 | 
	
	
		
			
				|  | @@ -749,7 +782,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 | 
	
		
			
				|  |  |                                          //将表单同步到复制或新增的节点下
 | 
	
		
			
				|  |  |                                          for (WbsTreeContract treeContract : wbsTreeContracts2) {
 | 
	
		
			
				|  |  |                                              WbsTreeContract wbsTreeContract2 = BeanUtil.copyProperties(wbsTreeContract, WbsTreeContract.class);
 | 
	
		
			
				|  |  | -                                            if (wbsTreeContract2 != null){
 | 
	
		
			
				|  |  | +                                            if (wbsTreeContract2 != null) {
 | 
	
		
			
				|  |  |                                                  wbsTreeContract2.setPKeyId(SnowFlakeUtil.getId());
 | 
	
		
			
				|  |  |                                                  wbsTreeContract2.setParentId(treeContract.getId());
 | 
	
		
			
				|  |  |  
 |