فهرست منبع

节点参数bug

liuyc 2 سال پیش
والد
کامیت
d47ecb5097

+ 17 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/WbsParamVO.java

@@ -0,0 +1,17 @@
+package org.springblade.manager.vo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.manager.entity.WbsParam;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class WbsParamVO extends WbsParam {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 数据源节点参数的id
+     */
+    private  Long oldId;
+
+}

+ 18 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -535,6 +535,23 @@ public class InformationWriteQueryController extends BladeController {
         return R.data(300, false, "废除失败,未找到业务数据");
     }
 
+    /**
+     * 单个废除-首件
+     */
+    @PostMapping("/abolishOne-sj")
+    @ApiOperationSupport(order = 24)
+    @ApiOperation(value = "单个废除-首件")
+    public R<Boolean> abolishOneSJ(@RequestParam String primaryKeyId,@RequestParam String id) {
+        //查询填报状态
+        InformationQuery businessData = this.informationQueryService.getOne(Wrappers.<InformationQuery>lambdaQuery()
+                .eq(InformationQuery::getId, id));
+        if (businessData != null) {
+            //使用批量废除接口
+            return this.batchAbolish(businessData.getId().toString(), primaryKeyId);
+        }
+        return R.data(300, false, "废除失败,未找到业务数据");
+    }
+
     /**
      * 查询节点状态
      */
@@ -1880,7 +1897,7 @@ public class InformationWriteQueryController extends BladeController {
         if (saveList.size() > 0) {
             //保存施工日志
             if (saveLedger.size() > 0) {
-                this.constructionLedgerService.saveBatch(saveLedger);
+                this.constructionLedgerService.saveBatch(saveLedger,1000);
             }
 
             try {

+ 4 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/WbsParamMapper.java

@@ -1,7 +1,9 @@
 package org.springblade.manager.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springblade.manager.entity.WbsParam;
+import org.springblade.manager.injector.EasyBaseMapper;
+
+public interface WbsParamMapper extends EasyBaseMapper<WbsParam> {
 
-public interface WbsParamMapper extends BaseMapper<WbsParam> {
 }
+

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

@@ -72,5 +72,4 @@ public interface IWbsTreePrivateService extends BaseService<WbsTreePrivate> {
     List<WbsTreePrivate> searchNodeAllTable(String primaryKeyId, String type, String tableType, String contractId, String projectId, Integer isAdd, Long id);
 
     Object getExcelHtml(String primaryKeyId) throws IOException;
-
 }

+ 28 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -9,14 +9,15 @@ import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.manager.entity.WbsParam;
 import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.WbsTreePrivate;
 import org.springblade.manager.mapper.WbsParamMapper;
 import org.springblade.manager.service.IWbsParamService;
 import org.springblade.manager.service.IWbsTreeContractService;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -83,6 +84,31 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
         return nodes;
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public boolean insertBatch(Collection<WbsParam> entityList, int batchSize) {
+        try {
+            int size = entityList.size();
+            int idxLimit = Math.min(batchSize, size);
+            int i = 1;
+            //保存单批提交的数据集合
+            List<WbsParam> oneBatchList = new ArrayList<>();
+            for (Iterator<WbsParam> var1 = entityList.iterator(); var1.hasNext(); ++i) {
+                WbsParam element = var1.next();
+                oneBatchList.add(element);
+                if (i == idxLimit) {
+                    baseMapper.insertBatchSomeColumn(oneBatchList);
+                    //每次提交后清空集合数据
+                    oneBatchList.clear();
+                    idxLimit = Math.min(idxLimit + batchSize, size);
+                }
+            }
+        } catch (Exception e) {
+            log.error("保存失败", e);
+            return false;
+        }
+        return true;
+    }
+
 
 }
 

+ 73 - 77
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -27,10 +27,7 @@ import org.springblade.manager.entity.*;
 import org.springblade.manager.mapper.*;
 import org.springblade.manager.service.ITableInfoService;
 import org.springblade.manager.service.IWbsTreePrivateService;
-import org.springblade.manager.vo.TreeNodeVOByTabType;
-import org.springblade.manager.vo.WbsNodeTabAndParamVO;
-import org.springblade.manager.vo.WbsNodeTableVO;
-import org.springblade.manager.vo.WbsTreePrivateVO;
+import org.springblade.manager.vo.*;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -516,11 +513,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         //获取该节点下所有表单
         List<WbsNodeTableVO> list = baseMapper.selectNodeTabAndParamList(id, wbsId, projectId);
         //获取节点信息
-        WbsTreePrivate nodeInfo = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda()
-                .eq(WbsTreePrivate::getId, id)
-                .eq(WbsTreePrivate::getWbsId, wbsId)
-                .eq(WbsTreePrivate::getProjectId, projectId)
-        );
+        WbsTreePrivate nodeInfo = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getId, id).eq(WbsTreePrivate::getWbsId, wbsId).eq(WbsTreePrivate::getProjectId, projectId));
         //获取节点参数,此处使用pKeyId与参数表的wbsId做的绑定才能确定唯一;
         List<WbsParam> paramList = wbsParamServiceImpl.findByNodeId(nodeInfo.getPKeyId());
         resultList.setTabData(list);
@@ -554,43 +547,30 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public boolean syncNodeParam(String projectId) {
         if (StringUtils.isNotEmpty(projectId)) {
             //获取项目节点树
-            List<WbsTreePrivate> wbsTreePrivateAllNow = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                    .eq(WbsTreePrivate::getProjectId, projectId)
-                    .eq(WbsTreePrivate::getStatus, 1)
-                    .eq(WbsTreePrivate::getType, 1)
-            );
-            String wbsId = "";
-            for (WbsTreePrivate wbsTreePrivate : wbsTreePrivateAllNow) {
-                wbsId = wbsTreePrivate.getWbsId();
-                break;
-            }
+            List<WbsTreePrivate> wbsTreePrivateAllNow = baseMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getProjectId, projectId).eq(WbsTreePrivate::getStatus, 1).eq(WbsTreePrivate::getType, 1));
+            String wbsId = wbsTreePrivateAllNow.stream().map(WbsTreePrivate::getWbsId).findAny().orElse(null);
             if (StringUtils.isNotEmpty(wbsId)) {
-                //获取当前参数表的所有业务数据
-                List<WbsParam> wbsParamListAll = wbsParamMapper.selectList(Wrappers.<WbsParam>query().lambda().eq(WbsParam::getType, 1).isNotNull(WbsParam::getNodeId).ne(WbsParam::getNodeId, -1));
 
-                List<WbsParam> paramListData = new ArrayList<>();
+                List<WbsParamVO> paramListData = new ArrayList<>();
                 //获取公有树
-                List<WbsTree> treePublicNodeAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda()
-                        .eq(WbsTree::getWbsId, wbsId)
-                        .eq(WbsTree::getStatus, 1)
-                        .eq(WbsTree::getType, 1)
-                );
+                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())) {
+                                String sql = "select * from m_wbs_param where node_id = " + wbsTree.getId();
+                                List<WbsParam> wbsParamList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsParam.class));
                                 //获取公有节点参数
-                                List<WbsParam> wbsParamList = wbsParamListAll.stream().filter(f -> f.getNodeId().equals(wbsTree.getId())).collect(Collectors.toList());
                                 if (wbsParamList.size() > 0) {
                                     for (WbsParam wbsParam : wbsParamList) {
-                                        WbsParam param = BeanUtil.copyProperties(wbsParam, WbsParam.class);
+                                        WbsParamVO param = BeanUtil.copyProperties(wbsParam, WbsParamVO.class);
                                         if (param != null) {
+                                            param.setOldId(wbsParam.getId());
                                             param.setNodeId(wbsTreePrivate.getPKeyId());
                                             param.setId(SnowFlakeUtil.getId());
                                             paramListData.add(param);
@@ -603,28 +583,19 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
 
                 } 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)
-                    );
+                    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));
 
                     for (WbsTreePrivate wbsTreePrivate : wbsTreePrivateAllNow) {
                         for (WbsTreePrivate wbsTreePrivateYS : treePrivateNodeAll) {
                             if (wbsTreePrivateYS.getId().equals(wbsTreePrivate.getId())) {
-                                //获取公有节点参数
-                                List<WbsParam> wbsParamList = wbsParamListAll.stream().filter(f -> f.getNodeId().equals(wbsTreePrivateYS.getPKeyId())).collect(Collectors.toList());
+                                String sql = "select * from m_wbs_param where node_id = " + wbsTreePrivateYS.getPKeyId();
+                                List<WbsParam> wbsParamList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsParam.class));
                                 if (wbsParamList.size() > 0) {
                                     for (WbsParam wbsParam : wbsParamList) {
-                                        WbsParam param = BeanUtil.copyProperties(wbsParam, WbsParam.class);
+                                        WbsParamVO param = BeanUtil.copyProperties(wbsParam, WbsParamVO.class);
                                         if (param != null) {
+                                            param.setOldId(wbsParam.getId());
                                             param.setNodeId(wbsTreePrivate.getPKeyId());
                                             param.setId(SnowFlakeUtil.getId());
                                             paramListData.add(param);
@@ -636,22 +607,68 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     }
                 }
 
+                List<WbsParam> updateList = new ArrayList<>();
+                List<WbsParam> insertList = new ArrayList<>();
                 //判断是否存在
-                Iterator<WbsParam> iterator = paramListData.iterator();
+                Iterator<WbsParamVO> iterator = paramListData.iterator();
                 while (iterator.hasNext()) {
-                    WbsParam next = iterator.next();
-                    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.getNodeId()) && f.getNodeId().equals(next.getNodeId())))
-                            .collect(Collectors.toList());
-                    if (collect.size() > 0) {
-                        iterator.remove();
+                    WbsParamVO next = iterator.next();
+
+                    //获取引用的节点上的源参数信息
+                    String sql1 = "select * from m_wbs_param where id = " + next.getOldId();
+                    WbsParam oldObj = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(WbsParam.class)).stream().findAny().orElse(null);
+
+                    //获取被引用的节点上的现参数信息
+                    String sql2 = "select * from m_wbs_param where name = '" + next.getName() + "' and k = '" + next.getK() + "' and v = '" + next.getV() + "' and node_id = " + next.getNodeId() + " and remark = '" + next.getRemark() + "' and is_deleted = 0 and status = 1";
+                    WbsParam newObj = jdbcTemplate.query(sql2, new BeanPropertyRowMapper<>(WbsParam.class)).stream().findAny().orElse(null);
+
+                    if (oldObj != null && newObj != null) {
+                        //如果源节点参数与现节点参数名称、K、V、备注一致,那么就跳过
+                        if (oldObj.getName().equals(newObj.getName()) && oldObj.getK().equals(newObj.getK()) && oldObj.getV().equals(newObj.getV()) && oldObj.getRemark().equals(newObj.getRemark())) {
+                            iterator.remove();
+
+                            //如果源节点参数与现节点参数名称、K一致,V、备注不一致,那么就修改当前名称下的节点参数
+                        } else if (oldObj.getName().equals(newObj.getName()) && oldObj.getK().equals(newObj.getK()) && (!oldObj.getV().equals(newObj.getV()) || !oldObj.getRemark().equals(newObj.getRemark()))) {
+                            newObj.setName(oldObj.getName());
+                            newObj.setK(oldObj.getK());
+                            newObj.setV(oldObj.getV());
+                            newObj.setRemark(oldObj.getRemark());
+                            updateList.add(newObj);
+
+                            //如果源节点参数与现节点参数名称不一致,那么新增
+                        } else if (!oldObj.getName().equals(newObj.getName())) {
+                            insertList.add(next);
+                        }
+
+                    } else if (oldObj != null) {
+                        //二次过滤,节点名称、节点id相同,修改
+                        String sql3 = "select * from m_wbs_param where name = '" + next.getName() + "' and node_id = " + next.getNodeId() + " and is_deleted = 0 and status = 1";
+                        List<WbsParam> query = jdbcTemplate.query(sql3, new BeanPropertyRowMapper<>(WbsParam.class));
+                        if (query.size() > 0) {
+                            for (WbsParam wbsParam : query) {
+                                if (oldObj.getName().equals(wbsParam.getName())) {
+                                    //修改
+                                    wbsParam.setName(next.getName());
+                                    wbsParam.setK(next.getK());
+                                    wbsParam.setV(next.getV());
+                                    wbsParam.setRemark(next.getRemark());
+                                    updateList.add(wbsParam);
+                                }
+                            }
+                        } else {
+                            //新增
+                            insertList.add(next);
+                        }
                     }
+
                 }
 
-                wbsParamServiceImpl.saveBatch(paramListData, 1000);
+                if (updateList.size() > 0) {
+                    this.wbsParamServiceImpl.updateBatchById(updateList, 1000);
+                }
+                if (insertList.size() > 0) {
+                    this.wbsParamServiceImpl.saveBatch(insertList, 1000);
+                }
                 return true;
             }
         }
@@ -659,7 +676,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public boolean syncNodeTable(String primaryKeyId) {
         if (StringUtils.isNotEmpty(primaryKeyId)) {
             //获取当前节点对应节点信息
@@ -1610,26 +1626,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         return true;
     }
 
-
-    public void insertDLTab(WbsTreeContractDTO pawDTO) {
-        //获取当前引用项目的独立库表单
-        List<WbsTreePrivate> wbsTreePrivates = baseMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, pawDTO.getReferencePrivateWbsProjectId()).eq(WbsTreePrivate::getType, 10));
-        List<WbsTreePrivate> wbsTreePrivatesNew = new ArrayList<>();
-        if (wbsTreePrivates.size() > 0) {
-            for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
-                WbsTreePrivate wbsTreePrivateNew = BeanUtil.copyProperties(wbsTreePrivate, WbsTreePrivate.class);
-                if (wbsTreePrivateNew != null) {
-                    Long id = SnowFlakeUtil.getId();
-                    wbsTreePrivateNew.setPKeyId(id);
-                    wbsTreePrivateNew.setId(id);
-                    wbsTreePrivateNew.setProjectId(pawDTO.getProjectId());
-                    wbsTreePrivatesNew.add(wbsTreePrivateNew);
-                }
-            }
-        }
-        this.insertBatch(wbsTreePrivatesNew, 1000);
-    }
-
     /**
      * 修改initTableId
      */

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

@@ -399,7 +399,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     @Override
-    public List<WbsFormElementVO> selectFormElements(String id,Integer type) {
+    public List<WbsFormElementVO> selectFormElements(String id, Integer type) {
         List<WbsFormElementVO> wbsFormElements = wbsTreeMapper.selectFormElements(id);
         ;
 //        if (Func.isEmpty(wbsFormElements)) {
@@ -416,18 +416,18 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
         String elementIds = wbsFormElements.stream().map(WbsFormElement::getId).map(String::valueOf).collect(Collectors.joining(","));
         if (Func.isNotEmpty(elementIds)) {
             /*TYPE==1就是WBS级别*/
-            Integer scopeA= com.mixsmart.utils.StringUtils.isEquals(type,1)? FormulaBean.WBS_GLOBAL:FormulaBean.PRO_GLOBAL;
-            Integer scopeB=com.mixsmart.utils.StringUtils.isEquals(type,1)? FormulaBean.WBS_PART:FormulaBean.PRO_PART;
-            List<Long> longs = this.jdbcTemplate.queryForList("select a.id from m_wbs_form_element a inner join m_element_formula_mapping b on a.id=b.element_id where a.id in(" + elementIds + ") and b.scope="+scopeA, Long.class);
+            Integer scopeA = com.mixsmart.utils.StringUtils.isEquals(type, 1) ? FormulaBean.WBS_GLOBAL : FormulaBean.PRO_GLOBAL;
+            Integer scopeB = com.mixsmart.utils.StringUtils.isEquals(type, 1) ? FormulaBean.WBS_PART : FormulaBean.PRO_PART;
+            List<Long> longs = this.jdbcTemplate.queryForList("select a.id from m_wbs_form_element a inner join m_element_formula_mapping b on a.id=b.element_id where a.id in(" + elementIds + ") and b.scope=" + scopeA, Long.class);
             wbsFormElements.forEach(e -> {
                 e.setGlobalFormula(longs.contains(e.getId()) ? 1 : 0);
             });
             String sql;
-            if(com.mixsmart.utils.StringUtils.isEquals(type,1)){
-                sql="select c.element_id from m_wbs_tree a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.id=" + id + " and c.scope="+scopeB+" and c.element_id in(" + elementIds + ")";
-            }else{
-                WbsTreePrivate treePrivate= this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId,id));
-                sql="select c.element_id from m_wbs_tree_private a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.p_key_id=" + id + " and c.scope="+scopeB+" and c.element_id in(" + elementIds + ")  and c.project_id="+treePrivate.getProjectId();
+            if (com.mixsmart.utils.StringUtils.isEquals(type, 1)) {
+                sql = "select c.element_id from m_wbs_tree a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.id=" + id + " and c.scope=" + scopeB + " and c.element_id in(" + elementIds + ")";
+            } else {
+                WbsTreePrivate treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, id));
+                sql = "select c.element_id from m_wbs_tree_private a INNER JOIN m_wbs_tree b on a.parent_id=b.id INNER JOIN m_element_formula_mapping c on b.id=c.node_id where  a.p_key_id=" + id + " and c.scope=" + scopeB + " and c.element_id in(" + elementIds + ")  and c.project_id=" + treePrivate.getProjectId();
             }
             List<Long> longs2 = this.jdbcTemplate.queryForList(sql, Long.class);
             wbsFormElements.forEach(e -> {
@@ -566,18 +566,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
             //1.同步私有电签默认信息
             if (saveIds.size() == 0 && delIds.size() == 0) {
-                /*if (pawDTO.getReferenceType().equals("public")) {
-                    //获取公有wbs树所有的节点、元素表
-                    List<WbsTree> wbsTreeListAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, Long.parseLong(pawDTO.getWbsId())).eq(WbsTree::getStatus, 1));
-
-                    //获取项目私有wbs树下所有的节点、元素表
-                    List<WbsTreePrivate> wbsTreePrivatesAll = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, Long.parseLong(pawDTO.getWbsId())).eq(WbsTreePrivate::getProjectId, Long.parseLong(pawDTO.getProjectId())).eq(WbsTreePrivate::getStatus, 1));
-
-                    //修改公有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
-                    this.updateWbsInfoPrivateAsync(wbsTreeListAll, wbsTreePrivatesAll, pawDTO.getProjectId());
-
-                }*/
-
                 if (pawDTO.getReferenceType().equals("private")) {
 
                     //新增独立表单库数据
@@ -601,10 +589,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
 
                     //同步私有-电签匹配数据、默认信息数据
                     this.insertTextDictInfoAsync(WbsTreePrivateTables, wbsTreePrivateNowTables);
-
-                    //同步私有wbs节点信息、元素表基础信息到项目级wbs、合同段wbs
-                    //this.updateWbsInfoContractAsync(wbsTreePrivateAllOld, wbsTreePrivatesAllNow, pawDTO.getProjectId(), pawDTO.getPrimaryKeyId());
-
                 }
 
             } else {
@@ -688,8 +672,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                     if (pawDTO.getReferenceType().equals("public")) {
                         List<WbsTree> addListData = new ArrayList<>();
                         //获取当前wbs树下所有节点、表信息
-                        List<WbsTree> treesAll = baseMapper.selectList(Wrappers.<WbsTree>query().lambda().eq(WbsTree::getWbsId, pawDTO.getWbsId()));
-
+                        List<WbsTree> treesAll = baseMapper.selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getWbsId, pawDTO.getWbsId()).eq(WbsTree::getStatus, 1));
                         for (WbsTree wbsTree : treesAll) {
                             for (String id : saveIds) {
                                 if (Long.parseLong(id) == (wbsTree.getId())) {
@@ -719,23 +702,26 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                         Map<Long, List<TextdictInfo>> textDictInfoData = new HashMap<>();
 
                         //查询出当前wbs树下所有节点、表信息(type=10独立表)
-                        List<WbsTreePrivate> wbsTreePrivates = wbsTreePrivateMapper.selectNodeAndTable(null, pawDTO.getWbsId(), pawDTO.getReferencePrivateWbsProjectId());
-
-                        //获取当前项目下的所有独立表
-                        List<WbsTreePrivate> wbsTreePrivatesTableDL = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
-                                .eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId())
-                                .eq(WbsTreePrivate::getType, 10)
-                                .eq(WbsTreePrivate::getParentId, -10)
+                        List<WbsTreePrivate> wbsTreePrivatesNodeAndTab = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
                                 .eq(WbsTreePrivate::getStatus, 1)
+                                .eq(WbsTreePrivate::getProjectId, pawDTO.getReferencePrivateWbsProjectId())
+                                .eq(WbsTreePrivate::getWbsId, pawDTO.getWbsId())
+                                .and(obj -> obj.eq(WbsTreePrivate::getType, 1).or().eq(WbsTreePrivate::getType,2))
                         );
 
+                        List<WbsTreePrivate> wbsTreePrivatesTableDLOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, pawDTO.getReferencePrivateWbsProjectId()).eq(WbsTreePrivate::getType, 10).eq(WbsTreePrivate::getStatus, 1).eq(WbsTreePrivate::getParentId, -10).isNull(WbsTreePrivate::getWbsId));
+                        wbsTreePrivatesNodeAndTab.addAll(wbsTreePrivatesTableDLOld);
+
+                        //获取当前项目下的所有独立表
+                        List<WbsTreePrivate> wbsTreePrivatesTableDL = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, pawDTO.getProjectId()).eq(WbsTreePrivate::getType, 10).eq(WbsTreePrivate::getParentId, -10).eq(WbsTreePrivate::getStatus, 1));
+
                         //查询对应电签位置配置信息的pKeyIds
-                        List<Long> pIdsDL = wbsTreePrivates.stream().filter(f -> f.getType().equals(10) || f.getType().equals(2)).collect(Collectors.toList()).stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
+                        List<Long> pIdsDL = wbsTreePrivatesNodeAndTab.stream().filter(f -> f.getType().equals(10) || f.getType().equals(2)).collect(Collectors.toList()).stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
                         String pKeyIds = StringUtils.join(pIdsDL, ",");
                         String sql = "select `id`,`name`,`type`,tab_id,col_key,sig_role_id,is_deleted,sig_role_name,col_name,pyzbx,pyzby from m_textdict_info where tab_id in (" + pKeyIds + ") and is_deleted = 0";
                         List<TextdictInfo> textDictInfosAll = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(TextdictInfo.class));
 
-                        for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
+                        for (WbsTreePrivate wbsTreePrivate : wbsTreePrivatesNodeAndTab) {
                             if (wbsTreePrivate.getType() == 1 || wbsTreePrivate.getType() == 2) {
                                 for (String id : saveIds) {
                                     if (Long.parseLong(id) == (wbsTreePrivate.getId())) {