chenr 4 месяцев назад
Родитель
Сommit
c404c9c0a4

+ 26 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsParamClient.java

@@ -0,0 +1,26 @@
+package org.springblade.manager.feign;
+
+
+import org.springblade.manager.entity.WbsParam;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
+
+@FeignClient(value = APPLICATION_NAME_PREFIX + "manager")
+public interface WbsParamClient {
+    /**
+     * 接口前缀
+     */
+    String API_PREFIX = "/api/manager/wbsParam";
+
+    @PostMapping(API_PREFIX + "/saveWbsParam")
+    void saveWbsParam(@RequestBody WbsParam wbsParam);
+
+    @GetMapping(API_PREFIX + "/getWbsParam")
+    WbsParam getWbsParam(@RequestParam Long nodeId);
+
+}

+ 51 - 14
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -142,6 +142,8 @@ public class InformationWriteQueryController extends BladeController {
 
     private final IUserClient iUserClient;
 
+    private final WbsParamClient wbsParamClient;
+
     @Autowired
     StringRedisTemplate RedisTemplate;
 
@@ -1631,6 +1633,13 @@ public R<Boolean> copyContractTreeNode(@RequestBody CopyContractTreeNodeVO vo) {
                 newData.setPKeyId(SnowFlakeUtil.getId());
                 if (nodeOld.getNodeType() != null && nodeOld.getNodeType() == 6) {
                     peerMap.put(newData.getPKeyId(), nodeOld.getPKeyId());
+                    //复制节点命名配置
+                    WbsParam wbsParam = wbsParamClient.getWbsParam(Long.parseLong(vo.getNeedCopyPrimaryKeyId()));
+                    if(wbsParam!=null){
+                        wbsParam.setId(SnowFlakeUtil.getId());
+                        wbsParam.setNodeId(newData.getPKeyId());
+                        wbsParamClient.saveWbsParam(wbsParam);
+                    }
                 }
 
                 if (StringUtils.isNotEmpty(nodeOld.getOldId())) {
@@ -1749,6 +1758,8 @@ public R<Boolean> copyContractTreeNode(@RequestBody CopyContractTreeNodeVO vo) {
         /*复制formulaOption*/
         this.copyFormulaOptions(saveList, peerMap);
 
+
+
         /*更新缓存*/
         informationQueryService.delAsyncWbsTree(needCopyNode.getContractId());
 
@@ -1900,6 +1911,17 @@ public R<Boolean> copyContractTreeNode(@RequestBody CopyContractTreeNodeVO vo) {
                     /*保存复制新增节点*/
                     row = wbsTreeContractClient.saveBatch(nodes);
                 }
+                //新增节点命名配置
+                if(nodes.size()>0){
+                    WbsParam wbsParam = wbsParamClient.getWbsParam(Long.parseLong(vo.getNeedCopyPrimaryKeyId()));
+                    if(wbsParam!=null){
+                        for (WbsTreeContract node : nodes) {
+                            wbsParam.setId(SnowFlakeUtil.getId());
+                            wbsParam.setNodeId(node.getPKeyId());
+                            wbsParamClient.saveWbsParam(wbsParam);
+                        }
+                    }
+                }
 
                 if (tabs.size() > 0) {
                     /*保存复制新增表*/
@@ -2783,8 +2805,8 @@ public R<Boolean> updateContractNodeParameter(@RequestParam Long pKeyId, @Reques
         if (nodeType == 18) {
             targetType = 2;
         }
-        if (sourceType > targetType) {
-            throw new ServiceException("当前节点类型不能大于父级节点类型");
+        if (sourceType >= targetType) {
+            throw new ServiceException("当前节点类型不能大于或等于父级节点类型");
         }
     }
     WbsTreeContract queries = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(pKeyId);
@@ -3066,7 +3088,7 @@ public R<Boolean> saveContractTreeNode(@RequestBody AddContractTreeNodeVO vo) {
 
     //检查新增类型
     if ("1".equals(vo.getSaveType())||"3".equals(vo.getSaveType())) {
-        //todo 当前及父节点
+        //todo 当前及子节点 当前及父节点
         //当前及父节点时,半选说明其下的子节点并不是全部选中的,所以这时候只需要根据全选的查询其全部子节点即可
         if (allSelectedNodeList.size() > 0) {
             //查询数据
@@ -3122,12 +3144,26 @@ public R<Boolean> saveContractTreeNode(@RequestBody AddContractTreeNodeVO vo) {
             ));
         }
     }
-
+    //新增节点类型不能大于选择节点类型
+    Set<Integer> nodeType = query.stream()
+        .filter(wbsTreeContract -> wbsTreeContract.getNodeType() != null)
+        .map(WbsTreePrivate::getNodeType)
+        .collect(Collectors.toSet());
+    Integer type = treeContract.getNodeType();
+    type = (type == 1) ? 1 : (type == 18) ? 2 : type + 1;
+    for (Integer i : nodeType) {
+        i = (i == 1) ? 1 : (i == 18) ? 2 : i + 1;
+        if (i <=type) {
+            throw new ServiceException("当前新增节点类型不能大于或等于父级节点类型");
+        }
+    }
 
     //保存集合
     List<WbsTreeContract> saveList = new ArrayList<>();
     List<ConstructionLedger> saveLedger = new ArrayList<>();
 
+
+
     //封裝节点名称nodeName与id的Map
     Map<Long, String> idAndNodeNameMaps = query.stream()
             .filter(wbsTreePrivate -> pKeyIds.contains(wbsTreePrivate.getPKeyId().toString()))
@@ -3193,7 +3229,7 @@ public R<Boolean> saveContractTreeNode(@RequestBody AddContractTreeNodeVO vo) {
                             newData.setParentId(OldIdToNewIdMap.containsKey(half.getParentId())
                                     ? OldIdToNewIdMap.get(half.getParentId()) : treeContract.getId().equals(half.getParentId())
                                     ||
-                                    treeContract.getOldId().equals(half.getParentId().toString())
+                                    half.getParentId().toString().equals(treeContract.getOldId())
                                     ? treeContract.getId() : SnowFlakeUtil.getId());
                         }
                     } else {
@@ -3202,7 +3238,7 @@ public R<Boolean> saveContractTreeNode(@RequestBody AddContractTreeNodeVO vo) {
                         newData.setParentId(OldIdToNewIdMap.containsKey(half.getParentId())
                                 ? OldIdToNewIdMap.get(half.getParentId()) : treeContract.getId().equals(half.getParentId())
                                 ||
-                                treeContract.getOldId().equals(half.getParentId().toString())
+                                half.getParentId().toString().equals(treeContract.getOldId())
                                 ? treeContract.getId() : SnowFlakeUtil.getId());
                     }
                 }
@@ -3625,12 +3661,13 @@ private void disposeHalfSelectList(@RequestBody WbsTreeContract treeContract, Li
  * @param wbsTreeContract 选择节点
  */
 private void foreachQueryChild(List<Long> parentIdsList, List<WbsTreePrivateAddVO> childList, WbsTreeContract wbsTreeContract) {
-    List<WbsTreePrivateAddVO> childS = jdbcTemplate.query("select * from m_wbs_tree_private" +
-            " where parent_id in(" + StringUtils.join(parentIdsList, ",") + ")" +
-            " and project_id = " + wbsTreeContract.getProjectId() +
-            " and wbs_id = " + wbsTreeContract.getWbsId() +
-            " and wbs_type = " + wbsTreeContract.getWbsType() +
-            " and is_deleted = 0 and status = 1", new BeanPropertyRowMapper<>(WbsTreePrivateAddVO.class));
+    String sql="select * from m_wbs_tree_private" +
+        " where parent_id in(" + StringUtils.join(parentIdsList, ",") + ")" +
+        " and project_id = " + wbsTreeContract.getProjectId() +
+        " and wbs_id = " + wbsTreeContract.getWbsId() +
+        " and wbs_type = " + wbsTreeContract.getWbsType() +
+        " and is_deleted = 0 and status = 1";
+    List<WbsTreePrivateAddVO> childS = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(WbsTreePrivateAddVO.class));
     if (childS.size() > 0) {
         childList.addAll(childS);
     }
@@ -4112,8 +4149,8 @@ public R<Object> customAddContractNode(@RequestBody CustomAddContractNodeDTO dto
         if(dto.getNodeType()==18){
             targetType=2;
         }
-        if(sourceType>targetType){
-            throw new ServiceException("当前新增选择的节点类型不能大于父级节点类型");
+        if(sourceType>=targetType){
+            throw new ServiceException("当前新增选择的节点类型不能大于或等于父级节点类型");
         }
         WbsTreeContract obj = new WbsTreeContract();
         obj.setPKeyId(SnowFlakeUtil.getId());

+ 13 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/NodeBaseInfoController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.manager.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -128,10 +129,21 @@ public class NodeBaseInfoController extends BladeController {
 
     @GetMapping("/getOrSaveNodeBaseInfo")
     @ApiOperationSupport(order = 8)
-    @ApiOperation(value = "获取节点基础数据", notes = "获取节点基础数据")
+    @ApiOperation(value = "刷新节点基础数据", notes = "获取节点基础数据")
     public R getOrSaveNodeBaseInfo(@RequestParam Long pKeyId){
         return R.data(nodeBaseInfoService.getOrSaveNodeBaseInfo(pKeyId));
     }
+    @GetMapping("/getNodeData")
+    @ApiOperationSupport(order = 9)
+    @ApiOperation(value = "获取节点基础数据", notes = "获取节点基础数据")
+    public R getNodeData(@RequestParam Long pKeyId){
+        NodeBaseInfo nodeBaseInfo = nodeBaseInfoService.getBaseMapper().selectOne(new QueryWrapper<NodeBaseInfo>().eq("node_id", pKeyId));
+        if(nodeBaseInfo!=null){
+            return R.data(nodeBaseInfo);
+        }else {
+            return R.data(nodeBaseInfoService.getOrSaveNodeBaseInfo(pKeyId));
+        }
+    }
 
     @GetMapping("/getNodeBaseInfoByPkeyId")
     @ApiOperationSupport(order = 9)

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

@@ -185,15 +185,15 @@ public class ParameterController extends BladeController {
     public String getNameRuleV1(String string){
         // 定义工程名称到C格式的映射
         Map<String, String> mapping = new HashMap<>();
-        mapping.put("0", "单位工程");
-        mapping.put("1", "子单位工程");
-        mapping.put("2", "分部工程");
-        mapping.put("3", "子分部工程");
-        mapping.put("4", "分项工程");
-        mapping.put("5", "子分项工程");
-        mapping.put("6", "工序");
-        mapping.put("7", "划分编号(质检)");
-        mapping.put("8", "范围随机数");
+        mapping.put("1", "单位工程");
+        mapping.put("2", "子单位工程");
+        mapping.put("3", "分部工程");
+        mapping.put("4", "子分部工程");
+        mapping.put("5", "分项工程");
+        mapping.put("6", "子分项工程");
+        mapping.put("7", "工序");
+        mapping.put("8", "划分编号(质检)");
+        mapping.put("9", "范围随机数");
         // 将输入字符串分割成列表
         List<String> list = Arrays.asList(string.split(","));
         return list.stream()

+ 6 - 52
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/WbsTreeContractController.java

@@ -44,6 +44,7 @@ import org.springblade.manager.service.IWbsTreeContractService;
 import org.springblade.manager.service.IWbsTreePrivateService;
 import org.springblade.manager.service.impl.WbsTreeContractServiceImpl;
 import org.springblade.manager.utils.FileUtils;
+import org.springblade.manager.utils.RandomNumberHolder;
 import org.springblade.manager.vo.*;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -156,57 +157,7 @@ public class WbsTreeContractController extends BladeController {
     @ApiOperationSupport(order = 31)
     @ApiOperation(value = "根据节点PkeyId获取节点配置")
     public R getNameRuleByPkeyId(@RequestParam Long pKeyId,@RequestParam Long projectId){
-        //先查询合同段级的
-        NameRuleVo vo = iWbsParamService.getNameRuleByPkeyId(pKeyId);
-        if(vo!=null){
-            List<String> list = Arrays.asList(vo.getNameVaule().split("-"));
-            return R.data(list);
-        }else {
-            //合同段没有 在查项目级的
-            String sql="select * from m_wbs_tree_contract where p_key_id="+pKeyId;
-            WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
-            String sql1="select * from m_wbs_tree_private where p_key_id="+contract.getIsTypePrivatePid();
-            WbsTreePrivate wbsTreePrivate = jdbcTemplate.queryForObject(sql1,new BeanPropertyRowMapper<>(WbsTreePrivate.class));
-            if(wbsTreePrivate==null){
-                return R.success("暂无数据");
-            }
-            String ancestor=wbsTreePrivate.getAncestors();
-            String[] ancestors = ancestor.split(",");
-            List<Long> list2 = Arrays.stream(ancestors)
-                .map(Long::parseLong)
-                .collect(Collectors.toList());
-            List<WbsTreePrivate> nodeList = iWbsTreePrivateService.getBaseMapper().selectList(new LambdaQueryWrapper<>(WbsTreePrivate.class).select(WbsTreePrivate::getId).eq(WbsTreePrivate::getNodeType, 1).ne(WbsTreePrivate::getParentId, 0).in(WbsTreePrivate::getPKeyId, list2));
-            List<Long> list3 = nodeList.stream().map(o -> o.getId()).collect(Collectors.toList());
-            if(list3.size()<0){
-                return R.success("暂无数据");
-            }
-            List<WbsParam> wbsParamList = iWbsParamService.getBaseMapper().selectList(new LambdaQueryWrapper<>(WbsParam.class).eq(WbsParam::getProjectId, projectId).eq(WbsParam::getK, "FILE_TITLE"));
-            List<WbsParam> result=new ArrayList<>();
-            if(wbsParamList.size()>0){
-                //筛选出包含当前单位工程节点的
-                for (WbsParam param : wbsParamList) {
-                    if(list3.contains(param.getNodeId())){
-                        result.add(param);
-                    }
-                }
-                if(result.size()>0){
-                    //如果有部分节点优先部分
-                    List<WbsParam> collect1 = result.stream().filter(o -> o.getNameType() == 2).collect(Collectors.toList());
-                    if(collect1.size()>0){
-                        WbsParam param = collect1.get(0);
-                        return R.data(Arrays.asList(param.getV().split("-")));
-                    }
-                    //没有部分节点用所有节点
-                    List<WbsParam> collect2 = result.stream().filter(o -> o.getNameType() == 1).collect(Collectors.toList());
-                    if(collect2.size()>0){
-                        WbsParam param = collect2.get(0);
-                        return R.data(Arrays.asList(param.getV().split("-")));
-                    }
-                }
-            }
-
-        }
-        return R.success("暂无数据");
+        return iWbsParamService.getNameRuleByPkeyId(pKeyId,projectId);
     }
 
     @GetMapping("/getNameRuleByRule")
@@ -218,7 +169,10 @@ public class WbsTreeContractController extends BladeController {
         nameRule= String.join("-", codes);
         String sql="Select * from m_wbs_tree_contract where p_key_id="+pkeyId;
         WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
-        return R.data(iWbsParamService.createFileTitle1(contract,nameRule));
+        String result = iWbsParamService.createFileTitle1(contract, nameRule);
+        RandomNumberHolder.RandomTemplateTypeclear();
+        RandomNumberHolder.RandomWbsTreeContractclear();
+        return R.data(result);
     }
     //节点命名配置
     @GetMapping("/saveContractNameRule")

+ 24 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsParamClientImpl.java

@@ -0,0 +1,24 @@
+package org.springblade.manager.feign;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.AllArgsConstructor;
+import org.springblade.manager.entity.WbsParam;
+import org.springblade.manager.service.IWbsParamService;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@AllArgsConstructor
+public class WbsParamClientImpl implements WbsParamClient{
+
+
+    private  final IWbsParamService iWbsParamService;
+    @Override
+    public void saveWbsParam(WbsParam wbsParam) {
+        iWbsParamService.getBaseMapper().insert(wbsParam);
+    }
+
+    @Override
+    public WbsParam getWbsParam(Long nodeId) {
+        return iWbsParamService.getBaseMapper().selectOne(Wrappers.lambdaQuery(WbsParam.class).eq(WbsParam::getNodeId, nodeId).eq(WbsParam::getType, 200).eq(WbsParam::getIsDeleted, 0).eq(WbsParam::getK,"FILE_TITLE"));
+    }
+}

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

@@ -144,6 +144,7 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
         LambdaUpdateWrapper<WbsTreeContract> wrappers = Wrappers.lambdaUpdate();
         if (StringUtils.isNotEmpty(node.getNodeName())) {
             wrappers.set(WbsTreeContract::getFullName, node.getNodeName());
+            wrappers.set(WbsTreeContract::getNodeName,node.getNodeName());
         }
 //        if (StringUtils.isNotEmpty(node.getPartitionCode())) {
             wrappers.set(WbsTreeContract::getPartitionCode, node.getPartitionCode());

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

@@ -8,6 +8,7 @@ import org.springblade.manager.entity.WbsTreeContract;
 import org.springblade.manager.vo.NameRuleVo;
 import org.springblade.manager.vo.NameRuleVo1;
 import org.springblade.manager.vo.WbsParamVo2;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.validation.constraints.NotNull;
 import java.util.List;
@@ -30,6 +31,7 @@ public interface IWbsParamService extends BaseService<WbsParam> {
 
     String createFileTitle(Long pkeyId);
 
+    R getNameRuleByPkeyId(Long pKeyId, Long projectId);
     /**
      * 根据题名规则生成文件题名 当前节点的实体类,参数规则
      * @param wtc

+ 95 - 50
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/NodeBaseInfoServiceImpl.java

@@ -75,15 +75,17 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
         if(wbsTreeContract!=null&&wbsTreeContract.getAncestors()!=null){
             String ancestors = wbsTreeContract.getAncestors();
             String[] nodeIds = ancestors.split(",");
-            // 使用MyBatis Plus的查询构建器
             QueryWrapper<WbsTreeContract> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("project_id",wbsTreeContract.getProjectId());
-            queryWrapper.eq("contract_id",wbsTreeContract.getContractId());
-            queryWrapper.in("p_key_id", Arrays.asList(nodeIds));
+            queryWrapper.eq("project_id", wbsTreeContract.getProjectId())
+                .eq("contract_id", wbsTreeContract.getContractId())
+                .ne("parent_id", 0)
+                .and(wrapper -> wrapper.in("p_key_id", Arrays.asList(nodeIds))
+                    .or()
+                    .in("id", Arrays.asList(nodeIds)))
+                .groupBy("p_key_id");
             List<WbsTreeContract> wbsTreeContracts = iWbsTreeContractService.getBaseMapper().selectList(queryWrapper);
             if(wbsTreeContracts.size()>0){
                 NodeBaseInfo info = new NodeBaseInfo();
-
                 for (WbsTreeContract contract : wbsTreeContracts) {
                     if(contract.getNodeType()==1){
                         info.setUnit(contract.getNodeName());
@@ -141,9 +143,9 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
                     &&StringUtil.equals(nodeBaseInfo.getProcesses(),info.getProcesses())){
                         return nodeBaseInfo;
                     }else {
-                        BeanUtils.copyProperties(info,nodeBaseInfo);
-                        baseMapper.updateById(nodeBaseInfo);
-                        return nodeBaseInfo;
+                        info.setId(nodeBaseInfo.getId());
+                        info.setNodeId(pKeyId);
+                        return info;
                     }
                 }
                 info.setId(SnowFlakeUtil.getId());
@@ -155,6 +157,8 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
         return null;
     }
 
+
+
     @Override
     public Object getNodeBaseInfoByPkeyId(Long pkeyId, Long nodeId, Integer autoType, BigDecimal min, BigDecimal max) {
         String result="";
@@ -218,6 +222,14 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
             //拿到参数库所有元素与参数库的元素比较
             String sql="select * from m_parameter_element where is_deleted =0";
             List<ParameterElement> ParameterElementList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(ParameterElement.class));
+
+            String nodeSql="Select * from m_node_base_info where node_id="+nodeId+" and is_deleted=0";
+            NodeBaseInfo nodeBaseInfo=new NodeBaseInfo();
+            try {
+                nodeBaseInfo = jdbcTemplate.queryForObject(nodeSql, new BeanPropertyRowMapper<>(NodeBaseInfo.class));
+            }catch (Exception e){
+                e.printStackTrace();
+            }
             List<WbsTreeContract> ancestorsNodes = iWbsTreeContractService.getBaseMapper().selectList(new QueryWrapper<WbsTreeContract>().in("p_key_id", Arrays.stream(wbsTreeContractNode.getAncestors().split(",")).toArray()).eq("contract_id", wbsTreeContractNode.getContractId()));
             for (ParameterElement parameterElement : ParameterElementList) {
                 Elements selects = doc.select("[placeholderxx='" + parameterElement.getElementName() + "']");
@@ -252,54 +264,87 @@ public class NodeBaseInfoServiceImpl extends BaseServiceImpl<NodeBaseInfoMapper,
                         StringBuilder result=new StringBuilder();
                         for (String type : paramTypes) {
                             if(type.equals("1")){
-                                String s=ancestorsNodes.stream()
-                                    .filter(m -> m.getNodeType() == 1&&m.getParentId()!=0)
-                                    .map(WbsTreeContract::getNodeName)
-                                    .findFirst()
-                                    .orElse("");
-                                result.append(s);
+                                if(nodeBaseInfo!=null&&!StringUtil.isEmpty(nodeBaseInfo.getUnit())){
+                                    result.append(nodeBaseInfo.getUnit());
+                                }else {
+                                    String s=ancestorsNodes.stream()
+                                        .filter(m -> m.getNodeType() == 1&&m.getParentId()!=0)
+                                        .map(WbsTreeContract::getNodeName)
+                                        .findFirst()
+                                        .orElse("");
+                                    result.append(s);
+                                }
                             } else if (type.equals("2")) {
-                                String s=ancestorsNodes.stream()
-                                    .filter(m -> m.getNodeType() == 18)
-                                    .map(WbsTreeContract::getNodeName)
-                                    .findFirst()
-                                    .orElse("");
-                                result.append(s);
+                                if(nodeBaseInfo!=null&&!StringUtil.isEmpty(nodeBaseInfo.getSubUnit())){
+                                    result.append(nodeBaseInfo.getSubUnit());
+                                }else {
+                                    String s=ancestorsNodes.stream()
+                                        .filter(m -> m.getNodeType() == 18)
+                                        .map(WbsTreeContract::getNodeName)
+                                        .findFirst()
+                                        .orElse("");
+                                    result.append(s);
+                                }
+
                             } else if (type.equals("3")) {
-                                String s=ancestorsNodes.stream()
-                                    .filter(m -> m.getNodeType() == 2)
-                                    .map(WbsTreeContract::getNodeName)
-                                    .findFirst()
-                                    .orElse("");
-                                result.append(s);
+                                if(nodeBaseInfo!=null&&!StringUtil.isEmpty(nodeBaseInfo.getDivision())){
+                                    result.append(nodeBaseInfo.getDivision());
+                                }else {
+                                    String s=ancestorsNodes.stream()
+                                        .filter(m -> m.getNodeType() == 2)
+                                        .map(WbsTreeContract::getNodeName)
+                                        .findFirst()
+                                        .orElse("");
+                                    result.append(s);
+                                }
+
                             }else if (type.equals("4")) {
-                                String s=ancestorsNodes.stream()
-                                    .filter(m -> m.getNodeType() == 3)
-                                    .map(WbsTreeContract::getNodeName)
-                                    .findFirst()
-                                    .orElse("");
-                                result.append(s);
+                                if(nodeBaseInfo!=null&&!StringUtil.isEmpty(nodeBaseInfo.getSubDivision())){
+                                    result.append(nodeBaseInfo.getSubDivision());
+                                }
+                                else{
+                                    String s=ancestorsNodes.stream()
+                                        .filter(m -> m.getNodeType() == 3)
+                                        .map(WbsTreeContract::getNodeName)
+                                        .findFirst()
+                                        .orElse("");
+                                    result.append(s);
+                                }
+
                             }else if (type.equals("5")) {
-                                String s=ancestorsNodes.stream()
-                                    .filter(m -> m.getNodeType() == 4)
-                                    .map(WbsTreeContract::getNodeName)
-                                    .findFirst()
-                                    .orElse("");
-                                result.append(s);
+                                if(nodeBaseInfo!=null&&!StringUtil.isEmpty(nodeBaseInfo.getItem())){
+                                    result.append(nodeBaseInfo.getItem());
+                                }else {
+                                    String s=ancestorsNodes.stream()
+                                        .filter(m -> m.getNodeType() == 4)
+                                        .map(WbsTreeContract::getNodeName)
+                                        .findFirst()
+                                        .orElse("");
+                                    result.append(s);
+                                }
                             }else if (type.equals("6")) {
-                                String s=ancestorsNodes.stream()
-                                    .filter(m -> m.getNodeType() == 5)
-                                    .map(WbsTreeContract::getNodeName)
-                                    .findFirst()
-                                    .orElse("");
-                                result.append(s);
+                                if(nodeBaseInfo!=null&&!StringUtil.isEmpty(nodeBaseInfo.getSubItem())){
+                                    result.append(nodeBaseInfo.getSubItem());
+                                }else {
+                                    String s=ancestorsNodes.stream()
+                                        .filter(m -> m.getNodeType() == 5)
+                                        .map(WbsTreeContract::getNodeName)
+                                        .findFirst()
+                                        .orElse("");
+                                    result.append(s);
+                                }
+
                             }else if (type.equals("7")) {
-                                String s=ancestorsNodes.stream()
-                                    .filter(m -> m.getNodeType() == 6)
-                                    .map(WbsTreeContract::getNodeName)
-                                    .findFirst()
-                                    .orElse("");
-                                result.append(s);
+                                if(nodeBaseInfo!=null&&!StringUtil.isEmpty(nodeBaseInfo.getProcesses())){
+                                    result.append(nodeBaseInfo.getProcesses());
+                                }else {
+                                    String s=ancestorsNodes.stream()
+                                        .filter(m -> m.getNodeType() == 6)
+                                        .map(WbsTreeContract::getNodeName)
+                                        .findFirst()
+                                        .orElse("");
+                                    result.append(s);
+                                }
                             }else if (type.equals("8")) {
                                 String  s= ancestorsNodes.stream()
                                     .map(WbsTreeContract::getPartitionCode) // 获取 partitionCode

+ 3 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -64,7 +64,7 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
                     //查询是否是底层节点
                     String sql="select template_type from m_contract_info where id="+wtc.getContractId();
                     Integer type= jdbcTemplate.queryForObject(sql, Integer.class);
-                //层节点优先使用底层节点配置
+                //层节点优先使用底层节点配置
                 if(type==2){
                     R nameRule = this.getNameRuleByPkeyId(wtc.getPKeyId(), Long.valueOf(wtc.getProjectId()));
                     if(nameRule.getData()!=null){
@@ -115,6 +115,8 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
                 WbsTreePrivate wtp = this.wtpId(wtc.getPKeyId());
                 if(wtp!=null){
                     if (Func.isNotEmpty(wp)) {
+                        RandomNumberHolder.setRandomTemplateType(2);
+                        RandomNumberHolder.setRandomWbsTreeContract(nodes);
                         return CustomFunction.tree(nodes.stream().map(w->StringUtils.isNotEmpty(w.getFullName())?w.getFullName():w.getNodeName()).collect(Collectors.toList()), wp).toString();
                     }else{
                         return wtp.getNodeName()+"找不到文件题名配置";

+ 6 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsTreeContractServiceImpl.java

@@ -10,10 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.collect.Lists;
-import com.mixsmart.utils.CustomFunction;
-import com.sun.org.apache.xpath.internal.operations.Bool;
 import lombok.AllArgsConstructor;
-import lombok.Data;
 import org.apache.commons.lang.StringUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
@@ -2385,6 +2382,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                     unit.setNodeType(1);
                     unit.setNodeName(dto.getUnitName());
                     unit.setFullName(dto.getUnitName());
+                    unit.setIsTypePrivatePid(null);
                     baseMapper.insert(unit);
                     insertList.add(unit);
                 }
@@ -2407,6 +2405,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                     subUnit.setNodeType(18);
                     subUnit.setNodeName(dto.getSubUnitName());
                     subUnit.setFullName(dto.getSubUnitName());
+                    subUnit.setIsTypePrivatePid(null);
                     baseMapper.insert(subUnit);
                     insertList.add(subUnit);
                 }
@@ -2447,6 +2446,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                                 division.setNodeType(2);
                                 division.setNodeName(dto.getDivisionName());
                                 division.setFullName(dto.getDivisionName());
+                                division.setIsTypePrivatePid(null);
                                 baseMapper.insert(division);
                                 insertList.add(division);
                                 break;
@@ -2494,6 +2494,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                                 subDivision.setNodeType(3);
                                 subDivision.setNodeName(dto.getSubDivisionName());
                                 subDivision.setFullName(dto.getSubDivisionName());
+                                subDivision.setIsTypePrivatePid(null);
                                 baseMapper.insert(subDivision);
                                 insertList.add(subDivision);
                                 break;
@@ -2545,6 +2546,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                                 item.setNodeType(4);
                                 item.setNodeName(dto.getItemName());
                                 item.setFullName(dto.getItemName());
+                                item.setIsTypePrivatePid(null);
                                 baseMapper.insert(item);
                                 insertList.add(item);
                                 break;
@@ -2599,6 +2601,7 @@ public class WbsTreeContractServiceImpl extends BaseServiceImpl<WbsTreeContractM
                                 subItem.setNodeType(5);
                                 subItem.setNodeName(dto.getSubItemName());
                                 subItem.setFullName(dto.getSubItemName());
+                                subItem.setIsTypePrivatePid(null);
                                 baseMapper.insert(subItem);
                                 insertList.add(subItem);
                                 break;