Procházet zdrojové kódy

Merge branch 'master' of http://47.110.251.215:3000/java_org/bladex

“zhifk” před 2 roky
rodič
revize
ee75016de4

+ 9 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/EVisaTaskCheckController.java

@@ -91,14 +91,22 @@ public class EVisaTaskCheckController {
 
             //汇总电签配置的审批角色
             List<String> eVisaRoleList = jsonList.stream().map(jsonObject -> jsonObject.getString("sigRoleId")).distinct().collect(Collectors.toList());
+
             //检查
             //循环审批人的角色集合,并判断电签配置中是否含有这个角色
+            List<String> userNameFail = new ArrayList<>();
             for (JSONObject userRole : userRoleList) {
                 if (!eVisaRoleList.contains(userRole.getString("roleId"))) {
                     User user = this.userClient.userInfoById(userRole.getLong("userId")).getData();
-                    return R.data(300, false, "所选中的用户【" + user.getRealName() + "】不具备当前表格所需要的签字岗位,请联系维护人员处理或更换审批人员");
+                    userNameFail.add(user.getRealName());
                 }
             }
+
+            //批量提示
+            if (userNameFail.size() > 0) {
+                return R.data(300, false, "所选中的用户【" + StringUtils.join(userNameFail, ",") + "】不具备当前表格所需要的签字岗位,请联系维护人员处理或更换审批人员");
+            }
+
             //均满足
             return R.data(true);
         }

+ 7 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java

@@ -729,4 +729,11 @@ public class ImageClassificationFileController extends BladeController {
         return fileSizeString;
     }
 
+    @GetMapping("/getFileTitleName")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "获取节点文件题名", notes = "传入节点PkeyId")
+    public R<Object> getFileTitleName(@Valid @RequestParam String pKeyId) {
+        return R.data(this.imageClassificationFileService.getFileTitleName(pKeyId));
+    }
+
 }

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/IImageClassificationFileService.java

@@ -53,4 +53,7 @@ public interface IImageClassificationFileService extends BaseService<ImageClassi
 	 * 根据ids查找已经删除的数据
 	 */
 	List<ImageClassificationFile> getDeleteDataByIds(List<String> ids);
+
+    String getFileTitleName(String pKeyId);
+
 }

+ 136 - 86
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/ImageClassificationFileServiceImpl.java

@@ -30,8 +30,11 @@ import org.springblade.business.service.IImageClassificationFileService;
 import org.springblade.business.vo.TreeVo;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.manager.entity.WbsParam;
 import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.feign.WbsTreeContractClient;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
@@ -39,7 +42,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 /**
- *  服务实现类
+ * 服务实现类
  *
  * @author BladeX
  * @since 2022-05-24
@@ -47,91 +50,138 @@ import java.util.stream.Collectors;
 @Service
 @AllArgsConstructor
 public class ImageClassificationFileServiceImpl extends BaseServiceImpl<ImageClassificationFileMapper, ImageClassificationFile> implements IImageClassificationFileService {
-	private final WbsTreeContractClient wbsTreeContractClient;
-	@Override
-	public List<Integer> queryCurrentContractImageFileType(String contractId) {
-		return this.baseMapper.queryCurrentContractImageFileType(contractId);
-	}
-
-	@Override
-	public Integer queryCurrentClassifyAllFileCount(String projectId, String contractId, Long classifyId) {
-		return this.baseMapper.queryCurrentClassifyAllFileCount(projectId, contractId, classifyId);
-	}
-
-	@Override
-	public List<TreeVo> getYearDateTree(String classifyId, String projectId, String contractId) {
-		//获取时间
-		List<Date> shootingTimes = this.baseMapper.selectShootingTimeByClassifyAndProjectId(classifyId, projectId, contractId);
-		//转换时间
-		List<String> yearMonthDayList = new ArrayList<>();
-		shootingTimes.forEach(date -> yearMonthDayList.add(DateFormatUtils.format(date, "yyyy-MM-dd")));
-		//转成结构树
-		return YearTreeUtils.yearMonthDayTree(yearMonthDayList, "DESC");
-	}
-
-	@Override
-	public IPage<ImageClassificationFileVO> selectImageClassificationFilePage(IPage<ImageClassificationFileVO> page, ImageClassificationFileVO imageClassificationFile) {
-		long current = (page.getCurrent() - 1L) * page.getSize();
-		if(StringUtils.isNotEmpty(imageClassificationFile.getWbsIdsStr())){
-			//查询下级节点信息
+
+    private final WbsTreeContractClient wbsTreeContractClient;
+    private final JdbcTemplate jdbcTemplate;
+
+    @Override
+    public List<Integer> queryCurrentContractImageFileType(String contractId) {
+        return this.baseMapper.queryCurrentContractImageFileType(contractId);
+    }
+
+    @Override
+    public Integer queryCurrentClassifyAllFileCount(String projectId, String contractId, Long classifyId) {
+        return this.baseMapper.queryCurrentClassifyAllFileCount(projectId, contractId, classifyId);
+    }
+
+    @Override
+    public List<TreeVo> getYearDateTree(String classifyId, String projectId, String contractId) {
+        //获取时间
+        List<Date> shootingTimes = this.baseMapper.selectShootingTimeByClassifyAndProjectId(classifyId, projectId, contractId);
+        //转换时间
+        List<String> yearMonthDayList = new ArrayList<>();
+        shootingTimes.forEach(date -> yearMonthDayList.add(DateFormatUtils.format(date, "yyyy-MM-dd")));
+        //转成结构树
+        return YearTreeUtils.yearMonthDayTree(yearMonthDayList, "DESC");
+    }
+
+    @Override
+    public IPage<ImageClassificationFileVO> selectImageClassificationFilePage(IPage<ImageClassificationFileVO> page, ImageClassificationFileVO imageClassificationFile) {
+        long current = (page.getCurrent() - 1L) * page.getSize();
+        if (StringUtils.isNotEmpty(imageClassificationFile.getWbsIdsStr())) {
+            //查询下级节点信息
 //			imageClassificationFile.setWbsIds(JSONArray.parseArray(JSONObject.toJSONString(imageClassificationFile.getWbsIdsStr().split(",")), String.class));
-			WbsTreeContract node = wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(Long.valueOf(imageClassificationFile.getWbsIdsStr()));
-			List<WbsTreeContract> wbsTreeContracts = new ArrayList<>();
-			if (node.getParentId()==0){
-				wbsTreeContracts = wbsTreeContractClient.queryAllChild(imageClassificationFile.getContractId());
-			}else {
-				wbsTreeContracts = wbsTreeContractClient.queryCurrentNodeAllChild(imageClassificationFile.getContractId(), node.getId());
-			}
-			wbsTreeContracts.add(node);
-			imageClassificationFile.setWbsIds(wbsTreeContracts.stream().map(wtc->wtc.getPKeyId()+"").collect(Collectors.toList()));
-		}
-		//获取数据
-		List<ImageClassificationFile> fileVOS = this.baseMapper.selectImageClassificationFilePage(current, page.getSize(), imageClassificationFile);
-		if(fileVOS != null && fileVOS.size() > 0){
-			//分组
-			List<List<ImageClassificationFile>> group = CommonUtil.getBatchSize(fileVOS, new Integer(String.valueOf(page.getSize())));
-
-			//获取数据并设置分页信息
-			List<ImageClassificationFile> result = group.get(new Integer(String.valueOf(page.getCurrent())) - 1);
-			//转换类型
-			List<ImageClassificationFileVO> resultVo = JSONArray.parseArray(JSONObject.toJSONString(result), ImageClassificationFileVO.class);
-
-			//处理文件大小单位
-			resultVo.forEach(vo -> {
-				//获取文件大小
-				String fileSize = vo.getFileSize();
-				if(StringUtils.isNotEmpty(fileSize) && CommonUtil.checkIsBigDecimal(fileSize)){
-					long size = new Long(fileSize);
-					if(size < 1024L){
-						vo.setFileSize(vo.getFileSize() + "B");
-					} else {
-						vo.setFileSize((size / 1024) + "K");
-					}
-				}
-			});
-
-			page.setTotal(fileVOS.size());
-			page.setRecords(resultVo);
-		}
-
-		return page;
-	}
-
-	/**
-	 * 恢复删除
-	 * @param ids
-	 * @return
-	 */
-	@Override
-	public Boolean recoveryByIds(List<String> ids) {
-		return baseMapper.recoveryByIds(ids);
-	}
-	/**
-	 * 根据ids查找已经删除的数据
-	 */
-	@Override
-	public List<ImageClassificationFile> getDeleteDataByIds(List<String> ids) {
-		return baseMapper.getDeleteDataByIds(ids);
-	}
+            WbsTreeContract node = wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(Long.valueOf(imageClassificationFile.getWbsIdsStr()));
+            List<WbsTreeContract> wbsTreeContracts = new ArrayList<>();
+            if (node.getParentId() == 0) {
+                wbsTreeContracts = wbsTreeContractClient.queryAllChild(imageClassificationFile.getContractId());
+            } else {
+                wbsTreeContracts = wbsTreeContractClient.queryCurrentNodeAllChild(imageClassificationFile.getContractId(), node.getId());
+            }
+            wbsTreeContracts.add(node);
+            imageClassificationFile.setWbsIds(wbsTreeContracts.stream().map(wtc -> wtc.getPKeyId() + "").collect(Collectors.toList()));
+        }
+        //获取数据
+        List<ImageClassificationFile> fileVOS = this.baseMapper.selectImageClassificationFilePage(current, page.getSize(), imageClassificationFile);
+        if (fileVOS != null && fileVOS.size() > 0) {
+            //分组
+            List<List<ImageClassificationFile>> group = CommonUtil.getBatchSize(fileVOS, new Integer(String.valueOf(page.getSize())));
+
+            //获取数据并设置分页信息
+            List<ImageClassificationFile> result = group.get(new Integer(String.valueOf(page.getCurrent())) - 1);
+            //转换类型
+            List<ImageClassificationFileVO> resultVo = JSONArray.parseArray(JSONObject.toJSONString(result), ImageClassificationFileVO.class);
+
+            //处理文件大小单位
+            resultVo.forEach(vo -> {
+                //获取文件大小
+                String fileSize = vo.getFileSize();
+                if (StringUtils.isNotEmpty(fileSize) && CommonUtil.checkIsBigDecimal(fileSize)) {
+                    long size = new Long(fileSize);
+                    if (size < 1024L) {
+                        vo.setFileSize(vo.getFileSize() + "B");
+                    } else {
+                        vo.setFileSize((size / 1024) + "K");
+                    }
+                }
+            });
+
+            page.setTotal(fileVOS.size());
+            page.setRecords(resultVo);
+        }
+
+        return page;
+    }
+
+    /**
+     * 恢复删除
+     *
+     * @param ids
+     * @return
+     */
+    @Override
+    public Boolean recoveryByIds(List<String> ids) {
+        return baseMapper.recoveryByIds(ids);
+    }
+
+    /**
+     * 根据ids查找已经删除的数据
+     */
+    @Override
+    public List<ImageClassificationFile> getDeleteDataByIds(List<String> ids) {
+        return baseMapper.getDeleteDataByIds(ids);
+    }
+
+    @Override
+    public String getFileTitleName(String pKeyId) {
+        WbsTreeContract wbsTreeContract = jdbcTemplate.query("select id,ancestors,contract_id,project_id,wbs_id from m_wbs_tree_contract where is_deleted = 0 and status = 1 and p_key_id = " + pKeyId, new BeanPropertyRowMapper<>(WbsTreeContract.class)).stream().findAny().orElse(null);
+        if (wbsTreeContract != null) {
+            WbsParam wbsParam = jdbcTemplate.query("select v from m_wbs_param where is_deleted = 0 and status = 1 and v is not null and k = 'FILE_TITLE' and name = '文件题名' and node_id = " + wbsTreeContract.getId(), new BeanPropertyRowMapper<>(WbsParam.class)).stream().findAny().orElse(null);
+            if (wbsParam != null) {
+                String[] titles = wbsParam.getV().split("-");
+                List<String> nodeNumber = new ArrayList<>();
+                for (String title : titles) {
+                    if (title.contains("c") || title.contains("C")) {
+                        String lastStr = title.substring(title.length() - 1);
+                        nodeNumber.add(lastStr);
+                    }
+                }
+
+                List<String> ancestors = Arrays.asList(wbsTreeContract.getAncestors().split(","));
+                /*ancestors = new ArrayList<>(ancestors); // 将固定大小的列表复制到新的可变列表中
+                ancestors.removeIf(("0")::equals); //删除根节点*/
+
+                List<String> ids = new ArrayList<>();
+                for (String index : nodeNumber) {
+                    if ("0".equals(index)) {
+                        index = "1";
+                    }
+                    if (Integer.parseInt(index) <= ancestors.size()) {
+                        String id = ancestors.get(Integer.parseInt(index));
+                        if (StringUtils.isNotEmpty(id)) {
+                            ids.add(id);
+                        }
+                    }
+                }
+
+                List<WbsTreeContract> wbsTreeContractList = jdbcTemplate.query("select node_name from m_wbs_tree_contract where is_deleted = 0 and status = 1 and project_id = " + wbsTreeContract.getProjectId() + " and contract_id = " + wbsTreeContract.getContractId() + " and wbs_id = " + wbsTreeContract.getWbsId() + " and id in(" + StringUtils.join(ids, ",") + ")", new BeanPropertyRowMapper<>(WbsTreeContract.class));
+                List<String> nameList = wbsTreeContractList.stream().map(WbsTreeContract::getNodeName).collect(Collectors.toList());
+                if (nameList.size() > 0) {
+                    return StringUtils.join(nameList, "");
+                }
+            }
+        }
+        return null;
+    }
 
 }

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

@@ -576,7 +576,8 @@
                 major_data_type = #{item.majorDataType},
                 table_type = #{item.tableType},
                 table_owner = #{item.tableOwner},
-                html_url = #{item.htmlUrl}
+                html_url = #{item.htmlUrl},
+                sort = #{item.sort}
             </set>
             WHERE id = #{item.id}
             AND project_id = #{item.projectId}

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

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

+ 25 - 7
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreePrivateServiceImpl.java

@@ -13,6 +13,7 @@ import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;
 import org.jsoup.select.Elements;
+import org.springblade.business.feign.InformationQueryClient;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -66,6 +67,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     private final WbsTreePrivateMapper wbsTreePrivateMapper;
     private final JdbcTemplate jdbcTemplate;
     private final TextdictInfoServiceImpl textDictInfoService;
+    private final InformationQueryClient informationQueryClient;
 
     @Resource(name = "taskExecutor1")
     private final ThreadPoolExecutor executor;
@@ -231,16 +233,20 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
     @Override
     public boolean wbsTreePrivateSort(List<WbsTreePrivateDTO2> wbsTreeDTO) {
         int number = 1;
+        String projectId = "";
+        String parentId = "";
         for (WbsTreePrivateDTO2 wbsTree : wbsTreeDTO) {
             wbsTree.setSort(number);
             baseMapper.updateSortById(wbsTree.getPKeyId(), wbsTree.getSort());
 
-            WbsTreePrivate objPrivate = baseMapper.selectOne(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getPKeyId, wbsTree.getPKeyId()));
+            WbsTreePrivate objPrivate = baseMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery()
+                    .select(WbsTreePrivate::getWbsId, WbsTreePrivate::getProjectId, WbsTreePrivate::getId, WbsTreePrivate::getParentId)
+                    .eq(WbsTreePrivate::getPKeyId, wbsTree.getPKeyId()));
             if (objPrivate != null) {
-                String projectId = objPrivate.getProjectId();
+                projectId = objPrivate.getProjectId();
+                parentId = objPrivate.getParentId() + "";
                 String wbsId = objPrivate.getWbsId();
                 Long id = objPrivate.getId();
-                //合同段wbs树同步排序
                 LambdaUpdateWrapper<WbsTreeContract> updateWrapper = new LambdaUpdateWrapper<>();
                 updateWrapper.eq(WbsTreeContract::getWbsId, wbsId);
                 updateWrapper.eq(WbsTreeContract::getProjectId, projectId);
@@ -250,6 +256,15 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
             }
             number++;
         }
+
+        //更新Redis
+        List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>lambdaQuery().select(ContractInfo::getId).eq(ContractInfo::getContractType, 1).eq(ContractInfo::getPId, Long.parseLong(projectId)));
+        if (contractInfos.size() > 0) {
+            for (ContractInfo contractInfo : contractInfos) {
+                informationQueryClient.AsyncWbsTree("", parentId, contractInfo.getId() + "", "", "1");
+            }
+        }
+
         return true;
     }
 
@@ -393,6 +408,7 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                                 || (ObjectUtils.isNotEmpty(wbsTree.getMixRatioTestIds()) && !wbsTree.getMixRatioTestIds().equals(wbsTreePrivate.getMixRatioTestIds()))
                                 || (ObjectUtils.isNotEmpty(wbsTree.getInitTableId()) && !wbsTree.getInitTableId().toString().equals(wbsTreePrivate.getInitTableId()))
                                 || (ObjectUtils.isNotEmpty(wbsTree.getInitTableName()) && !wbsTree.getInitTableName().equals(wbsTreePrivate.getInitTableName()))
+                                || ((new Integer(1)).equals(wbsTreePrivate.getType()) && ObjectUtils.isNotEmpty(wbsTree.getSort()) && !wbsTree.getSort().equals(wbsTreePrivate.getSort()))
                         )) {
                     //修改项目wbs信息
                     WbsTreePrivate wbsPrivate = BeanUtil.copyProperties(wbsTree, WbsTreePrivate.class);
@@ -456,10 +472,12 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
         List<WbsTreePrivate> listPrivate = new ArrayList<>();
         List<WbsTreeContract> listContract = new ArrayList<>();
         //获取当前项目下所有合同段信息
-        List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().select(ContractInfo::getId, ContractInfo::getContractType).eq(ContractInfo::getPId, projectId));
+        List<ContractInfo> contractInfos = contractInfoMapper.selectList(Wrappers.<ContractInfo>query().lambda().select(ContractInfo::getId, ContractInfo::getContractType)
+                .eq(ContractInfo::getContractType, 1)
+                .eq(ContractInfo::getPId, projectId));
         List<Long> contractInfosIds = contractInfos.stream().filter(f -> 1 == f.getContractType()).map(ContractInfo::getId).collect(Collectors.toList());
 
-        Map<Long, WbsTreePrivate> maps = wbsTreePrivatesAllNow.stream().collect(Collectors.toMap(WbsTreePrivate::getId, Function.identity()));
+        Map<Long, WbsTreePrivate> maps = wbsTreePrivatesAllNow.stream().collect(Collectors.toMap(WbsTreePrivate::getId, wbsTreePrivate -> wbsTreePrivate, (obj1, obj2) -> obj1));
 
         for (WbsTreePrivate wbsTreePrivate : wbsTreePrivates) {
             WbsTreePrivate treePrivateNow = maps.get(wbsTreePrivate.getId());
@@ -473,7 +491,8 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                         || (ObjectUtils.isNotEmpty(wbsTreePrivate.getMixRatioTestIds()) && !wbsTreePrivate.getMixRatioTestIds().equals(treePrivateNow.getMixRatioTestIds()))
                         || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableId()) && !wbsTreePrivate.getInitTableId().equals(treePrivateNow.getInitTableId()))
                         || (ObjectUtils.isNotEmpty(wbsTreePrivate.getInitTableName()) && !wbsTreePrivate.getInitTableName().equals(treePrivateNow.getInitTableName())
-                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getHtmlUrl()) && !wbsTreePrivate.getHtmlUrl().equals(treePrivateNow.getHtmlUrl())))) {
+                        || (ObjectUtils.isNotEmpty(wbsTreePrivate.getHtmlUrl()) && !wbsTreePrivate.getHtmlUrl().equals(treePrivateNow.getHtmlUrl())))
+                        || ((new Integer(1)).equals(wbsTreePrivate.getType()) && ObjectUtils.isNotEmpty(wbsTreePrivate.getSort()) && !wbsTreePrivate.getSort().equals(treePrivateNow.getSort()))) {
                     //修改项目wbs信息
                     WbsTreePrivate wbsPrivate = BeanUtil.copyProperties(wbsTreePrivate, WbsTreePrivate.class);
                     if (wbsPrivate != null) {
@@ -492,7 +511,6 @@ public class WbsTreePrivateServiceImpl extends BaseServiceImpl<WbsTreePrivateMap
                     }
                 }
             }
-
         }
 
         //修改到项目

+ 27 - 11
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeServiceImpl.java

@@ -278,7 +278,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 IOException | ClassNotFoundException e) {
             throw new ServiceException("操作失败,请上传正确模板内容");
         } finally {
-            if (canonicalPath != null){
+            if (canonicalPath != null) {
                 File file2 = new File(canonicalPath);
                 if (file2.isFile() && file2.exists()) {
                     if (file2.delete()) {
@@ -331,9 +331,19 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                 //质检公有
                 if (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateId()) && (ObjectUtil.isNotEmpty(projectInfo.getReferenceWbsTemplateType()) && ("public").equals(projectInfo.getReferenceWbsTemplateType()))) {
                     //获取公有树
-                    List<WbsTree> wbsTreeListAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery().eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTree::getType, 1).eq(WbsTree::getStatus, 1));
+                    List<WbsTree> wbsTreeListAll = wbsTreeMapper.selectList(Wrappers.<WbsTree>lambdaQuery()
+                            .select(WbsTree::getId, WbsTree::getNodeName, WbsTree::getNodeType, WbsTree::getMajorDataType,
+                                    WbsTree::getTableType, WbsTree::getTableOwner, WbsTree::getImportMatchingInfo,
+                                    WbsTree::getMixRatioTestIds, WbsTree::getInitTableId,
+                                    WbsTree::getInitTableName, WbsTree::getSort)
+                            .eq(WbsTree::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTree::getType, 1).eq(WbsTree::getStatus, 1));
                     //获取项目私节点、元素表
-                    List<WbsTreePrivate> wbsTreePrivatesAll = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda().eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getStatus, 1));
+                    List<WbsTreePrivate> wbsTreePrivatesAll = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>lambdaQuery()
+                            .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType,
+                                    WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo,
+                                    WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId,
+                                    WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl, WbsTreePrivate::getSort)
+                            .eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).eq(WbsTreePrivate::getProjectId, wbsTreePrivate.getProjectId()).eq(WbsTreePrivate::getStatus, 1));
                     //同步修改
                     this.updateWbsInfoPrivateAsync(wbsTreeListAll, wbsTreePrivatesAll, wbsTreePrivate.getProjectId(), Integer.parseInt(wbsTreePrivate.getWbsType()));
 
@@ -345,14 +355,20 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
                             .eq(WbsTreePrivate::getPKeyId, projectInfo.getReferenceWbsTemplateId()));
                     //获取私有引用项目树
                     List<WbsTreePrivate> wbsTreePrivateAllOld = wbsTreePrivateMapper.selectList(Wrappers.<WbsTreePrivate>query().lambda()
-                            .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
+                            .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType,
+                                    WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo,
+                                    WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId,
+                                    WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl, WbsTreePrivate::getSort)
                             .eq(WbsTreePrivate::getStatus, 1)
                             .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()
-                            .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType, WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo, WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId, WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl)
+                            .select(WbsTreePrivate::getId, WbsTreePrivate::getNodeName, WbsTreePrivate::getNodeType, WbsTreePrivate::getMajorDataType,
+                                    WbsTreePrivate::getTableType, WbsTreePrivate::getTableOwner, WbsTreePrivate::getImportMatchingInfo,
+                                    WbsTreePrivate::getMixRatioTestIds, WbsTreePrivate::getInitTableId,
+                                    WbsTreePrivate::getInitTableName, WbsTreePrivate::getHtmlUrl, WbsTreePrivate::getSort)
                             .eq(WbsTreePrivate::getStatus, 1)
                             .eq(WbsTreePrivate::getProjectId, Long.parseLong(wbsTreePrivate.getProjectId()))
                             .and(obj -> obj.eq(WbsTreePrivate::getWbsId, projectInfo.getReferenceWbsTemplateId()).or().isNull(WbsTreePrivate::getWbsId))
@@ -417,7 +433,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     @Override
-    public List<WbsFormElementVO> selectFormElements(String id, String nodeId ,Integer type) {
+    public List<WbsFormElementVO> selectFormElements(String id, String nodeId, Integer type) {
         List<WbsFormElementVO> wbsFormElements = wbsTreeMapper.selectFormElements(id);
         if (Func.isEmpty(wbsFormElements)) {
             wbsFormElements = wbsTreeMapper.selectFormElements4TableId(id);
@@ -442,13 +458,13 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
             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 if (com.mixsmart.utils.StringUtils.isEquals(type, 0)){
+            } else if (com.mixsmart.utils.StringUtils.isEquals(type, 0)) {
                 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();
-            }else  if (com.mixsmart.utils.StringUtils.isEquals(type, 3)){
+            } else if (com.mixsmart.utils.StringUtils.isEquals(type, 3)) {
                 WbsTreePrivate treePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, nodeId));
                 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=35 and c.element_id in(" + elementIds + ")  and c.project_id=" + treePrivate.getProjectId();
-            }else{
+            } else {
                 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=35 and c.element_id in(" + elementIds + ")";
             }
             List<Long> longs2 = this.jdbcTemplate.queryForList(sql, Long.class);
@@ -466,8 +482,8 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
     }
 
     @Override
-    public List<WbsFormElementVO> selectPrivateFormElements(String id,String eName) {
-        return wbsTreeMapper.selectPrivateFormElements(id,eName);
+    public List<WbsFormElementVO> selectPrivateFormElements(String id, String eName) {
+        return wbsTreeMapper.selectPrivateFormElements(id, eName);
     }
 
     @Override