Explorar o código

Merge branch 'refs/heads/feature-lihb-20250926-syncInfo' into dev

LHB hai 1 día
pai
achega
ff2bcffcfe

+ 17 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/WbsTreeSynchronousRecordDTO.java

@@ -0,0 +1,17 @@
+package org.springblade.manager.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.manager.entity.WbsTreeSynchronousRecord;
+
+/**
+ * @author LHB
+ */
+@Data
+public class WbsTreeSynchronousRecordDTO extends WbsTreeSynchronousRecord {
+    @ApiModelProperty("进度")
+    private Integer progress = 0;
+
+    @ApiModelProperty("剩余数量")
+    private Integer surplusCount = 0;
+}

+ 19 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/WbsTreeSynchronousRecord.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
@@ -26,69 +27,84 @@ public class WbsTreeSynchronousRecord {
     /**
      * 项目id
      */
+    @ApiModelProperty(value = "项目id")
     private Long projectId;
 
     /**
      * 项目名称
      */
+    @ApiModelProperty(value = "项目名称")
     private String projectName;
 
 
+    @ApiModelProperty(value = "同步范围(1-从后管同步,2-同步到合同段)")
     @TableField("`range`")
     private Integer range;
     /**
      * 同步范围名称
      */
+    @ApiModelProperty(value = "同步范围名称")
     private String rangeName;
     /**
      * 合同段范围 逗号拼接的编号 101.未填报 102.已填报-未上报 103.未上报 104.待审批 105.已审批
      */
+    @ApiModelProperty(value = "合同段范围 逗号拼接的编号 101.未填报 102.已填报-未上报 103.未上报 104.待审批 105.已审批")
     private String contractRange;
     /**
      * 合同段范围名称
      */
+    @ApiModelProperty(value = "合同段范围名称")
     private String contractRangeName;
 
     /**
      * 同步源Id
      */
+    @ApiModelProperty(value = "同步源Id")
     private Long templateId;
 
     /**
      * 同步源名称
      */
+    @ApiModelProperty(value = "同步源名称")
     private String templateName;
 
     /**
      * 同步类型 逗号拼接的编号 1.新增表单 2.清表配置 3.元素配置 4.电签配置 5.公式配置 6.默认值配置 7.表单排序
      */
+    @ApiModelProperty(value = "同步类型 逗号拼接的编号 1.新增表单 2.清表配置 3.元素配置 4.电签配置 5.公式配置 6.默认值配置 7.表单排序")
     private String type;
 
     /**
      * 同步类型名称
      */
+    @ApiModelProperty(value = "同步类型名称")
     private String typeName;
 
     /**
      * 同步节点id 多个节点
      */
+    @ApiModelProperty(value = "同步节点id 多个节点")
     private String nodeId;
 
     /**
      * 同步节点名称
      */
+    @ApiModelProperty(value = "同步节点名称")
     private String nodeName;
     /**
      * 表单Ids     range = 4 强制同步时  当前数据为同步源
      */
+    @ApiModelProperty(value = "表单Ids     range = 4 强制同步时  当前数据为同步源")
     private String formIds;
     /**
      * 同步节点数量
      */
+    @ApiModelProperty(value = "同步节点数量")
     private Integer nodeNum;
     /**
      * 已同步数量
      */
+    @ApiModelProperty(value = "已同步数量")
     private Integer nodeNumEnd;
 
     /**
@@ -99,15 +115,18 @@ public class WbsTreeSynchronousRecord {
     /**
      * 状态(0-未同步,1-正在同步,2-已同步,3-同步失败)
      */
+    @ApiModelProperty(value = "状态(0-未同步,1-正在同步,2-已同步,3-同步失败)")
     private Integer status;
     /**
      * 状态(0-未同步,1-正在同步,2-已同步,3-同步失败)
      */
+    @ApiModelProperty(value = "状态名称")
     @TableField(exist = false)
     private String statusName;
     /**
      * 错误信息
      */
+    @ApiModelProperty(value = "错误信息")
     @TableField(updateStrategy = FieldStrategy.NOT_EMPTY)
     private String errorMsg;
     /**

+ 67 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeSynchronousRecordController.java

@@ -4,9 +4,13 @@ package org.springblade.manager.controller;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.beanutils.BeanUtils;
+import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.manager.entity.ProjectInfo;
-import org.springblade.manager.entity.WbsTreePrivate;
+import org.springblade.manager.dto.WbsTreeSynchronousRecordDTO;
 import org.springblade.manager.entity.WbsTreeSynchronousRecord;
 import org.springblade.manager.service.WbsTreeSynchronousRecordService;
 import org.springblade.core.mp.support.Condition;
@@ -16,8 +20,9 @@ import org.springblade.manager.vo.WbsTreeSynchronousRecordVo;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * WBS同步记录表(MWbsTreeSynchronousRecord)表控制层
@@ -27,6 +32,7 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/synchronousRecord")
+@Api(value = "WBS同步记录表接口", tags = "WBS同步记录表接口")
 public class WbsTreeSynchronousRecordController {
     /**
      * 服务对象
@@ -41,6 +47,7 @@ public class WbsTreeSynchronousRecordController {
      * @param query  分页对象
      * @return 所有数据
      */
+    @ApiOperation(value = "分页查询")
     @GetMapping("/page")
     public R<IPage<WbsTreeSynchronousRecord>> selectAll(WbsTreeSynchronousRecord record, Query query) {
         LambdaQueryWrapper<WbsTreeSynchronousRecord> lambda = new QueryWrapper().lambda();
@@ -79,6 +86,7 @@ public class WbsTreeSynchronousRecordController {
      * @param id 主键
      * @return 单条数据
      */
+    @ApiOperation(value = "通过主键查询单条数据")
     @GetMapping("getById")
     public R<WbsTreeSynchronousRecord> selectOne(@RequestParam Long id) {
         return R.data(this.mWbsTreeSynchronousRecordService.getById(id));
@@ -91,6 +99,7 @@ public class WbsTreeSynchronousRecordController {
      * @param mWbsTreeSynchronousRecord 实体对象
      * @return 新增结果
      */
+    @ApiOperation(value = "新增数据")
     @PostMapping("add")
     public R<WbsTreeSynchronousRecord> insert(@RequestBody WbsTreeSynchronousRecord mWbsTreeSynchronousRecord) {
 
@@ -127,6 +136,7 @@ public class WbsTreeSynchronousRecordController {
     /**
      * 认证接口是否正在同步
      */
+    @ApiOperation(value = "认证接口是否正在同步")
     @PostMapping("getNodeStatus")
     public R<WbsTreeSynchronousRecord> getNodeStatus(@RequestParam Long id) {
         return R.data(this.mWbsTreeSynchronousRecordService.getNodeStatus(id));
@@ -138,6 +148,7 @@ public class WbsTreeSynchronousRecordController {
      *
      * @param nodeIds 节点ids 逗号拼接
      */
+    @ApiOperation(value = "获取当前项目的模板项目")
     @GetMapping("getTempProject")
     public R<List<WbsTreeSynchronousRecordVo>> getProjectTemplate(@RequestParam String nodeIds) {
         if (StringUtil.isBlank(nodeIds)) {
@@ -146,5 +157,58 @@ public class WbsTreeSynchronousRecordController {
         return R.data(this.mWbsTreeSynchronousRecordService.getProjectTemplate(nodeIds));
     }
 
+    /**
+     * 添加同步记录查询功能
+     *  采用定时查询模式展示进度条
+     */
+    @ApiOperation(value = "添加同步记录查询功能")
+    @GetMapping("querySyncRecord")
+    public R<List<WbsTreeSynchronousRecordDTO>> querySyncRecord(@RequestParam Long projectId) {
+        List<WbsTreeSynchronousRecord> list = this.mWbsTreeSynchronousRecordService.list(new QueryWrapper<WbsTreeSynchronousRecord>().lambda()
+                .eq(WbsTreeSynchronousRecord::getProjectId, projectId)
+                .eq(WbsTreeSynchronousRecord::getIsDeleted, 0)
+                .ne(WbsTreeSynchronousRecord::getStatus, 2)
+        );
+        List<WbsTreeSynchronousRecordDTO> wbsTreeSynchronousRecordDTOS = BeanUtil.copyProperties(list, WbsTreeSynchronousRecordDTO.class);
+        wbsTreeSynchronousRecordDTOS.forEach(m -> {
+            if(m.getNodeNum() != 0){
+                m.setSurplusCount(m.getNodeNum() - m.getNodeNumEnd());
+                int i = m.getNodeNumEnd() * 100 / m.getNodeNum();
+                if (m.getStatus() == 2 || i > 100) {
+                    i = 100;
+                }
+                m.setProgress(i);
+            }else{
+                m.setSurplusCount(0);
+                m.setProgress(0);
+            }
+        });
+        return R.data(wbsTreeSynchronousRecordDTOS);
+    }
+
+    /**
+     * 删除接口
+     */
+    @ApiOperation(value = "删除接口")
+    @GetMapping("delete")
+    public R<Boolean> delete(@RequestParam Long id) {
+        return R.data(this.mWbsTreeSynchronousRecordService.update(Wrappers.<WbsTreeSynchronousRecord>update().lambda()
+                .set(WbsTreeSynchronousRecord::getIsDeleted, 1)
+                .eq(WbsTreeSynchronousRecord::getId, id)
+        ));
+    }
+
+
+    /**
+     * 重刷接口
+     */
+    @ApiOperation(value = "重刷接口")
+    @GetMapping("reFlush")
+    public R<Boolean> reFlush(@RequestParam Long id) {
+        return R.data(this.mWbsTreeSynchronousRecordService.update(Wrappers.<WbsTreeSynchronousRecord>update().lambda()
+                .set(WbsTreeSynchronousRecord::getStatus, 0)
+                .eq(WbsTreeSynchronousRecord::getId, id)
+        ));
+    }
 }
 

+ 55 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousEViSaServiceImpl.java

@@ -319,4 +319,59 @@ public class WbsSynchronousEViSaServiceImpl {
         Integer i = wbsTreeContractMapper.insertBatchSomeColumn(list);
         return i;
     }
+
+    /**
+     * 新增表单
+     * @param wbsTreeSynchronousRecord
+     * @param list
+     * @param pId
+     */
+    public void insertPrivateForm(WbsTreeSynchronousRecord wbsTreeSynchronousRecord, List<WbsTreePrivate> list, Long pId) {
+        //排序调整
+        if (wbsTreeSynchronousRecord.getType().contains("7")) {
+            list.sort(Comparator.comparingInt(WbsTreePrivate::getSort));
+            //获取节点下的当前表单
+            List<WbsTreePrivate> resourceData = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                    .select(WbsTreePrivate::getPKeyId, WbsTreePrivate::getSort)
+                    .eq(WbsTreePrivate::getPId, pId)
+                    .eq(WbsTreePrivate::getIsDeleted, 0)
+                    .orderByAsc(WbsTreePrivate::getSort));
+            if (CollectionUtil.isNotEmpty(resourceData)) {
+                for (int i = 0; i < resourceData.size(); i++) {
+                    resourceData.get(i).setSort(i + 1);
+                }
+                //修改排序为连续排序
+                wbsTreePrivateMapper.updateSortBatchByPKeyId(resourceData);
+            }
+
+
+            for (WbsTreePrivate wbsTreePrivate : list) {
+                wbsTreePrivateMapper.updateSortByPId(pId, wbsTreePrivate.getSort());
+            }
+        }
+        //单个批次一个事务,只会回滚当前批次数据
+        Integer i = wbsTreePrivateMapper.insertBatchSomeColumn(list);
+
+        //如果失败  -- - - - - 继续执行   或者把当前节点的p_key_id 记录到某个地方 方便后续处理
+        if (i == 0) {
+            //这里可以保存到数据库指定错误日志表
+        } else {
+            //排序调整-连续排序
+            if (wbsTreeSynchronousRecord.getType().contains("7")) {
+                //获取节点下的当前表单
+                List<WbsTreePrivate> resourceData = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                        .select(WbsTreePrivate::getPKeyId, WbsTreePrivate::getSort)
+                        .eq(WbsTreePrivate::getPId, pId)
+                        .eq(WbsTreePrivate::getIsDeleted, 0)
+                        .orderByAsc(WbsTreePrivate::getSort));
+                if (CollectionUtil.isNotEmpty(resourceData)) {
+                    for (int j = 0; j < resourceData.size(); j++) {
+                        resourceData.get(j).setSort(j + 1);
+                    }
+                    //修改排序为连续排序
+                    wbsTreePrivateMapper.updateSortBatchByPKeyId(resourceData);
+                }
+            }
+        }
+    }
 }

+ 31 - 75
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsSynchronousServiceImpl.java

@@ -246,6 +246,7 @@ public class WbsSynchronousServiceImpl {
         ProjectInfo tempProject = projectInfoMapper.selectOne(Wrappers.<ProjectInfo>lambdaQuery()
                 .eq(ProjectInfo::getId, wbsTreeSynchronousRecord.getTemplateId()));
 
+        List<WbsTreePrivate> addData = new ArrayList<>();
         List<WbsTreePrivate> editData = new ArrayList<>();
 
         for (String primaryKeyId : nodeIds) {
@@ -512,7 +513,8 @@ public class WbsSynchronousServiceImpl {
                     switch (i) {
                         //添加表单
                         case 1:
-                            insertPrivateForm(wbsTreeSynchronousRecord, wbsTreePrivates, addPrivateNodes);
+                            List<WbsTreePrivate> list = insertPrivateForm(wbsTreeSynchronousRecord, wbsTreePrivates, addPrivateNodes);
+                            addData.addAll(list);
                             updateEViSa(collect, wbsTreeSynchronousRecord.getTemplateId(), projectInfo.getId(), templateNodes, addPrivateNodes);
                             break;
                         //清表
@@ -541,17 +543,32 @@ public class WbsSynchronousServiceImpl {
                 }
             }
         }
+        Set<Long> pIdsNew = new HashSet<>();
+        Map<Long, List<WbsTreePrivate>> addMap = addData.stream().collect(Collectors.groupingBy(WbsTreePrivate::getPId));
+        pIdsNew.addAll(addMap.keySet());
+
+
         //更新数据的同时统计最小节点数量
         Map<Long, List<WbsTreePrivate>> collect1 = editData.stream().collect(Collectors.groupingBy(WbsTreePrivate::getPId));
-        Set<Long> pIds = collect1.keySet();
+        pIdsNew.addAll(collect1.keySet());
         Integer nodeNumEnd = 0;
-        for (Long pId : pIds) {
+        //修改需要操作的数量
+        synchronousRecordMapper.update(null, Wrappers.<WbsTreeSynchronousRecord>lambdaUpdate()
+                .set(WbsTreeSynchronousRecord::getNodeNum, pIdsNew.size())
+                .set(WbsTreeSynchronousRecord::getUpdateTime, DateTime.now())
+                .eq(WbsTreeSynchronousRecord::getId, wbsTreeSynchronousRecord.getId()));
+        for (Long pId : pIdsNew) {
             nodeNumEnd++;
+            //新增数据
+            List<WbsTreePrivate> addList = addMap.get(pId);
+            if (CollectionUtil.isNotEmpty(addList)) {
+                wbsSynchronousEViSaService.insertPrivateForm(wbsTreeSynchronousRecord, addList, pId);
+            }
             List<WbsTreePrivate> list = collect1.get(pId);
-
-            //更新最新节点
-            wbsSynchronousEViSaService.updatePrivate(wbsTreeSynchronousRecord.getType(), pId, wbsTreeSynchronousRecord.getCreateUserId(), list);
-
+            if(CollectionUtil.isNotEmpty(list)){
+                //更新最新节点
+                wbsSynchronousEViSaService.updatePrivate(wbsTreeSynchronousRecord.getType(), pId, wbsTreeSynchronousRecord.getCreateUserId(), list);
+            }
             synchronousRecordMapper.update(null, Wrappers.<WbsTreeSynchronousRecord>lambdaUpdate()
                     .set(WbsTreeSynchronousRecord::getNodeNumEnd, nodeNumEnd)
                     .set(WbsTreeSynchronousRecord::getUpdateTime, DateTime.now())
@@ -871,7 +888,11 @@ public class WbsSynchronousServiceImpl {
 
         //需要记录历史html的表单
         Map<Long, List<WbsTreeContract>> collect3 = oldHtml.stream().collect(Collectors.groupingBy(WbsTreeContract::getPId));
-
+        //修改需要操作的数量
+        synchronousRecordMapper.update(null, Wrappers.<WbsTreeSynchronousRecord>lambdaUpdate()
+                .set(WbsTreeSynchronousRecord::getNodeNum, pIdsNew.size())
+                .set(WbsTreeSynchronousRecord::getUpdateTime, DateTime.now())
+                .eq(WbsTreeSynchronousRecord::getId, wbsTreeSynchronousRecord.getId()));
         for (Long pId : pIdsNew) {
             nodeNumEnd++;
 
@@ -937,7 +958,7 @@ public class WbsSynchronousServiceImpl {
      * @param wbsTreePrivates          当前项目对应节点的子节点
      * @param addPrivateNodes          需要新增的节点
      */
-    public void insertPrivateForm(WbsTreeSynchronousRecord wbsTreeSynchronousRecord, List<WbsTreePrivate> wbsTreePrivates, List<WbsTreePrivate> addPrivateNodes) {
+    public List<WbsTreePrivate> insertPrivateForm(WbsTreeSynchronousRecord wbsTreeSynchronousRecord, List<WbsTreePrivate> wbsTreePrivates, List<WbsTreePrivate> addPrivateNodes) {
         List<WbsTreePrivate> addData = new ArrayList<>();
 
         //------------------------------------------------新增-------------------------------------------------------------------------
@@ -1014,73 +1035,8 @@ public class WbsSynchronousServiceImpl {
                 e.printStackTrace();
                 throw new ServiceException("重置表单路径错误");
             }
-
-            //新增-----------------------------------------------------------------------------------------------------------------
-            Map<Long, List<WbsTreePrivate>> collect = addData.stream().collect(Collectors.groupingBy(WbsTreePrivate::getPId));
-            Set<Long> longs = collect.keySet();
-
-            List<Long> pIds = new ArrayList<>(longs);
-            //按最小节点批量新增
-            List<List<Long>> partition = Lists.partition(pIds, 100);
-            int sum = 0;
-            for (List<Long> data : partition) {
-                for (Long pId : data) {
-                    List<WbsTreePrivate> list = collect.get(pId);
-                    //排序调整
-                    if (wbsTreeSynchronousRecord.getType().contains("7")) {
-                        list.sort(Comparator.comparingInt(WbsTreePrivate::getSort));
-                        //获取节点下的当前表单
-                        List<WbsTreePrivate> resourceData = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
-                                .select(WbsTreePrivate::getPKeyId, WbsTreePrivate::getSort)
-                                .eq(WbsTreePrivate::getPId, pId)
-                                .eq(WbsTreePrivate::getIsDeleted, 0)
-                                .orderByAsc(WbsTreePrivate::getSort));
-                        if (CollectionUtil.isNotEmpty(resourceData)) {
-                            for (int i = 0; i < resourceData.size(); i++) {
-                                resourceData.get(i).setSort(i + 1);
-                            }
-                            //修改排序为连续排序
-                            wbsTreePrivateMapper.updateSortBatchByPKeyId(resourceData);
-                        }
-
-
-                        for (WbsTreePrivate wbsTreePrivate : list) {
-                            wbsTreePrivateMapper.updateSortByPId(pId, wbsTreePrivate.getSort());
-                        }
-                    }
-
-                    //单个批次一个事务,只会回滚当前批次数据
-                    Integer i = wbsTreePrivateMapper.insertBatchSomeColumn(list);
-                    //如果失败  -- - - - - 继续执行   或者把当前节点的p_key_id 记录到某个地方 方便后续处理
-                    if (i == 0) {
-                        List<Long> collect1 = addData.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList());
-                        //这里可以保存到数据库指定错误日志表
-                        throw new ServiceException("添加失败:" + StringUtil.join(collect1, ","));
-                    } else {
-                        //排序调整-连续排序
-                        if (wbsTreeSynchronousRecord.getType().contains("7")) {
-                            //获取节点下的当前表单
-                            List<WbsTreePrivate> resourceData = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
-                                    .select(WbsTreePrivate::getPKeyId, WbsTreePrivate::getSort)
-                                    .eq(WbsTreePrivate::getPId, pId)
-                                    .eq(WbsTreePrivate::getIsDeleted, 0)
-                                    .orderByAsc(WbsTreePrivate::getSort));
-                            if (CollectionUtil.isNotEmpty(resourceData)) {
-                                for (int j = 0; j < resourceData.size(); j++) {
-                                    resourceData.get(j).setSort(j + 1);
-                                }
-                                //修改排序为连续排序
-                                wbsTreePrivateMapper.updateSortBatchByPKeyId(resourceData);
-                            }
-                        }
-                        synchronousRecordMapper.update(null, Wrappers.<WbsTreeSynchronousRecord>lambdaUpdate()
-                                .set(WbsTreeSynchronousRecord::getNodeNumEnd, sum++)
-                                .set(WbsTreeSynchronousRecord::getUpdateTime, DateTime.now())
-                                .eq(WbsTreeSynchronousRecord::getId, wbsTreeSynchronousRecord.getId()));
-                    }
-                }
-            }
         }
+        return addData;
     }
 
     /**

+ 5 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeSynchronousRecordServiceImpl.java

@@ -56,6 +56,11 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
                 .in(WbsTreeSynchronousRecord::getStatus, 0, 1));
         List<String> nodeIds = wbsTreeSynchronousRecords.stream().map(WbsTreeSynchronousRecord::getNodeId).collect(Collectors.toList());
 
+        //  //判断节点类型  如果是试验或计量则不允许添加合同合同段
+        WbsTreePrivate wbsTreePrivate1 = wbsTreePrivateMapper.selectById(mWbsTreeSynchronousRecord.getNodeId());
+        if (mWbsTreeSynchronousRecord.getRange() == 2 && wbsTreePrivate1 != null && !Objects.equals(wbsTreePrivate1.getWbsType(), "1")) {
+            throw new ServiceException(wbsTreePrivate1.getNodeName() + " 节点不是质检类型,无法同步合同段");
+        }
         //所有子节点集合
         List<Long> privateIds = new ArrayList<>();
         //通过 ancestors_p_id 查询所有 非表单子节点
@@ -69,13 +74,6 @@ public class WbsTreeSynchronousRecordServiceImpl extends ServiceImpl<WbsTreeSync
                 );
                 privateIds.add(Long.valueOf(s));
                 privateIds.addAll(wbsTreePrivates.stream().map(WbsTreePrivate::getPKeyId).collect(Collectors.toList()));
-
-
-                //  //判断节点类型  如果是试验或计量则不允许添加合同合同段
-                WbsTreePrivate wbsTreePrivate = wbsTreePrivateMapper.selectById(nodeId);
-                if (mWbsTreeSynchronousRecord.getRange() == 2 && wbsTreePrivate != null && !Objects.equals(wbsTreePrivate.getWbsType(), 1)) {
-                    throw new ServiceException(wbsTreePrivate.getNodeName() + " 节点不是质检类型,无法同步合同段");
-                }
             }
         }