소스 검색

文件题名按资料类型分类

cr 2 일 전
부모
커밋
9b040d40f3

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/dto/NameRuleDto.java

@@ -13,5 +13,6 @@ public class NameRuleDto {
     private String nodeId;
     private Long projectId;
     private Integer type;
+    private String remark;
 
 }

+ 2 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/NameRuleVo.java

@@ -15,6 +15,8 @@ public class NameRuleVo {
     private String nameVaule;
     // 1全部节点 2部分节点
     private Integer type;
+    //资料类型
+    private String remark;
     //文件题名范围
     private List<NameRuleVo1> list=new ArrayList<>();
 

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

@@ -964,6 +964,7 @@ public class WbsTreePrivateController extends BladeController {
                 vo.setNameVaule(entry.getValue().get(0).getV());
                 vo.setNameRule(getNameRuleV1(entry.getValue().get(0).getV()));
                 vo.setType(entry.getValue().get(0).getNameType());
+                vo.setRemark(entry.getValue().get(0).getRemark());
                 List<NameRuleVo1>vo1s=new ArrayList<>();
                 for (WbsParamVo2 param : entry.getValue()) {
                     vo1s.add(new NameRuleVo1(param.getNodeId(),param.getNodeName()));
@@ -1034,6 +1035,7 @@ public class WbsTreePrivateController extends BladeController {
                 param.setProjectId(dto.getProjectId());
                 param.setNameId(SnowFlakeUtil.getId());
                 param.setNameType(dto.getType());
+                param.setRemark(dto.getRemark());
                 //如果nameID不为空,先删除在保存
                 if(dto.getNameId()!=null){
                     iWbsParamService.getBaseMapper().delete(new QueryWrapper<WbsParam>().eq("name_id",dto.getNameId()));

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

@@ -24,7 +24,8 @@
             a.node_id,
             a.name_id,
             a.name_type,
-            (SELECT node_name FROM m_wbs_tree_private WHERE id = a.node_id LIMIT 1) AS nodeName
+            (SELECT node_name FROM m_wbs_tree_private WHERE id = a.node_id LIMIT 1) AS nodeName,
+            a.remark
         FROM m_wbs_param a
         WHERE a.project_id = #{projectId}
           AND a.is_deleted = 0

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

@@ -1375,7 +1375,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 //                    sqlInfo = sqlInfo + keyStr + ") VALUES (" + valStr + ")";
 
                     WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-                            .eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId, tableInfo.getContractId()));
+                            .eq(WbsTreeContract::getPKeyId, wbsTreeContract.getPId()).eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId()));
                     if (wbsTreeContractByP != null) {
                         //处理文件提名
                         String fileName = this.wbsParamService.createFileTitle(wbsTreeContractByP);

+ 101 - 5
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -79,13 +79,16 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
                     RandomNumberHolder.setRandomTemplateType(1);
                     WbsTreePrivate wtp = this.wtpId(wtc.getPKeyId());
                     if(wtp!=null){
-                        /*优先取私有*/
-                        WbsParam wp = this.getOne(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId, wtp.getPKeyId()).eq(WbsParam::getK, FILE_TITLE).last(" limit 1"));
+                        //优先使用文件题名全局配置里面的规则
+                        WbsParam wp=this.getPrivateNameRuleByPkeyId(wtc);
                         if (wp == null) {
-                            WbsTreePrivate publicWtp = this.getOriginWtp(wtp.getPKeyId());
-                            wp = this.getOne(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId, publicWtp.getId()).eq(WbsParam::getK, FILE_TITLE).last(" limit 1 "));
+                            wp = this.getOne(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId, wtp.getPKeyId()).eq(WbsParam::getK, FILE_TITLE).last(" limit 1"));
                             if(wp==null){
-                                wp = this.getOne(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId, publicWtp.getTreePId()).eq(WbsParam::getK, FILE_TITLE).last(" limit 1 "));
+                                WbsTreePrivate publicWtp = this.getOriginWtp(wtp.getPKeyId());
+                                wp = this.getOne(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId, publicWtp.getId()).eq(WbsParam::getK, FILE_TITLE).last(" limit 1 "));
+                                if(wp==null){
+                                    wp = this.getOne(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getNodeId, publicWtp.getTreePId()).eq(WbsParam::getK, FILE_TITLE).last(" limit 1 "));
+                                }
                             }
                         }
                         if (Func.isNotEmpty(wp)) {
@@ -106,6 +109,9 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
         }
         return "找不到节点";
     }
+
+
+
     //根据选择的文件题名规则,返回文件题名;
     @Override
     public String createFileTitle1(WbsTreeContract wtc,String wp) {
@@ -270,6 +276,96 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
         return R.success("暂无数据");
     }
 
+    private WbsParam getPrivateNameRuleByPkeyId(WbsTreeContract wtc) {
+        WbsParam wp=null;
+        List<WbsParam> wbsParams = baseMapper.selectList(Wrappers.<WbsParam>lambdaQuery().eq(WbsParam::getProjectId, wtc.getProjectId()).eq(WbsParam::getK, FILE_TITLE));
+        String sql1="select * from m_wbs_tree_private where p_key_id="+wtc.getIsTypePrivatePid();
+        WbsTreePrivate wbsTreePrivate = jdbcTemplate.queryForObject(sql1,new BeanPropertyRowMapper<>(WbsTreePrivate.class));
+        if(wbsTreePrivate==null){
+            return null;
+        }
+        //拿到引用项目级节点的祖级节点
+        String ancestor=wbsTreePrivate.getAncestorsPId()+","+wbsTreePrivate.getPKeyId();
+        String[] ancestors = ancestor.split(",");
+        List<Long> list2 = Arrays.stream(ancestors)
+                .map(Long::parseLong)
+                .collect(Collectors.toList());
+        String join = String.join(",", list2.stream().map(String::valueOf).collect(Collectors.toList()));
+        String sql11 = "SELECT * FROM m_wbs_tree_private WHERE node_type=1  AND project_id="+wtc.getProjectId()+"  AND parent_id!=0 AND p_key_id IN (" + join + ")";
+        List<WbsTreePrivate> nodeList = jdbcTemplate.query(sql11, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
+        //祖级节点的Id
+        List<Long> list3 = nodeList.stream().map(o -> o.getId()).collect(Collectors.toList());
+        List<WbsParam> result=new ArrayList<>();
+        if(list3.size()<0){
+            return null;
+        }
+        if(!wbsParams.isEmpty()){
+            for (WbsParam param : wbsParams) {
+                //祖级节点里有文件题名配置就加进去
+                if(list3.contains(param.getNodeId())){
+                    result.add(param);
+                }
+                //如果是所有的也加进去
+                if(param.getNameType()!=null&&param.getNameType()==1){
+                    result.add(param);
+                }
+            }
+            if(result.size()>0){
+                //如果有部分节点优先部分
+                List<WbsParam> collect1 = result.stream().filter(o -> o.getNameType() == 2).collect(Collectors.toList());
+                if(collect1.size()>0){
+                    //如果节点的资料类型不为null
+                    if(wtc.getMajorDataType()!=null){
+                        //如果与配置的文件题名资料类型一致
+                        List<WbsParam> data = collect1.stream().filter(o -> StringUtils.isNotEmpty(o.getRemark()) && o.getRemark().contains(wtc.getMajorDataType() + "")).collect(Collectors.toList());
+                        if(data.size()>0){
+                            return data.get(0);
+                        }else {
+                            //与配置的文件题名类型不一致,就使用全部类型的文件题名规则
+                            List<WbsParam> data1 = collect1.stream().filter(o -> o.getRemark() != null && o.getRemark().equals("0")).collect(Collectors.toList());
+                            if(data1.size()>0){
+                                return data1.get(0);
+                            }
+                        }
+                    }else {
+                        //如果节点的资料类型为null
+                        List<WbsParam> data1 = collect1.stream().filter(o -> o.getRemark() != null && o.getRemark().equals("0")).collect(Collectors.toList());
+                        //使用全部类型的文件题名规则
+                        if(data1.size()>0){
+                            return data1.get(0);
+                        }
+                    }
+                }
+                //没有部分节点用所有节点
+                List<WbsParam> collect2 = result.stream().filter(o -> o.getNameType() == 1).collect(Collectors.toList());
+                if(collect2.size()>0){
+                    //如果节点的资料类型不为null
+                    if(wtc.getMajorDataType()!=null){
+                        //如果与配置的文件题名资料类型一致
+                        List<WbsParam> data = collect2.stream().filter(o -> StringUtils.isNotEmpty(o.getRemark()) && o.getRemark().contains(wtc.getMajorDataType() + "")).collect(Collectors.toList());
+                        if(data.size()>0){
+                            return data.get(0);
+                        }else {
+                            //与配置的文件题名类型不一致,就使用全部类型的文件题名规则
+                            List<WbsParam> data1 = collect2.stream().filter(o -> o.getRemark() != null && o.getRemark().equals("0")).collect(Collectors.toList());
+                            if(data1.size()>0){
+                                return data1.get(0);
+                            }
+                        }
+                    }else {
+                        //如果节点的资料类型为null
+                        List<WbsParam> data1 = collect2.stream().filter(o -> o.getRemark() != null && o.getRemark().equals("0")).collect(Collectors.toList());
+                        //使用全部类型的文件题名规则
+                        if(data1.size()>0){
+                            return data1.get(0);
+                        }
+                    }
+                }
+            }
+        }
+        return wp;
+    }
+
 
     @Override
     public List<WbsTreeContract> tracing(@NotNull Long pkeyId){