Browse Source

重置文件题名使用wbs树节点的值

cr 3 weeks ago
parent
commit
65bb79820f

+ 1 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/PreviewNodeNameDTO.java

@@ -4,6 +4,7 @@ import lombok.Data;
 
 @Data
 public class PreviewNodeNameDTO {
+    private Long id;
     private Long wbsId;
     private Long projectId;
 }

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/dto/PreviewNodeNameDTO1.java

@@ -4,6 +4,8 @@ import lombok.Data;
 
 @Data
 public class PreviewNodeNameDTO1 {
+    private Long id;
     private String wbsId;
     private String nameRule;
+    private Long projectId;
 }

+ 66 - 25
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -235,16 +235,7 @@ public class InformationWriteQueryController extends BladeController {
                 String sql="select * from m_wbs_tree_contract where p_key_id="+query.getWbsId()+" and is_deleted=0";
                 WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
                 if(dto.getType()==1){
-                    R<List<String>>  nameRuleList = wbsParamClient.getNameRuleByPkeyId(contract.getPKeyId(), Long.valueOf(contract.getProjectId()));
-                    String nameRule = "";
-                    if (nameRuleList != null && nameRuleList.getData() != null && !nameRuleList.getData().isEmpty()) {
-                        nameRule = String.join("-", nameRuleList.getData());
-                    }
-                    if(projectInfos.get(0)!=null&&projectInfos.get(0).getTemplateType()==2){
-                        result  = nodeBaseInfoServiceClient.getNameRuleByRule(nameRule, contract.getPKeyId()+"");
-                    }else {
-                        result=wbsParamClient.createFileTitle(contract);
-                    }
+                    result=wbsParamClient.createFileTitle(contract);
                 }else {
                     result=nodeNameMap.get(query.getId());
                     //同时修改工程划分节点命名规则
@@ -257,12 +248,16 @@ public class InformationWriteQueryController extends BladeController {
                         result="";
                     }
                     if(query.getClassify()!=null&&query.getClassify()==1&&StringUtils.isNotEmpty(sgSuffix)){
-                        result=result+sgSuffix;
+                        if(!result.contains(sgSuffix)){
+                            result=result+sgSuffix;
+                        }
                         if(!query.getName().equals(result)){
                             query.setName(result);
                         }
                     }else if(query.getClassify()!=null&&query.getClassify()==2&&StringUtils.isNotEmpty(jlSuffix)){
-                        result=result+jlSuffix;
+                        if(!result.contains(jlSuffix)){
+                            result=result+jlSuffix;
+                        }
                         if(!query.getName().equals(result)){
                             query.setName(result);
                         }
@@ -409,17 +404,37 @@ public class InformationWriteQueryController extends BladeController {
     })
     public R<List<PreviewNodeNameVO1>> previewNodeName(@RequestBody List<PreviewNodeNameDTO1>dtos){
         List<PreviewNodeNameVO1> list = new ArrayList<>();
+        String sql1="Select sg_suffix,jl_suffix,template_type from m_project_info where id="+dtos.get(0).getProjectId()+" and is_deleted=0";
+        List<ProjectInfo> projectInfos = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(ProjectInfo.class));
+        String sgSuffix="";
+        String jlSuffix="";
+        if(projectInfos.size()>0){
+            sgSuffix=projectInfos.get(0).getSgSuffix()==null?"":projectInfos.get(0).getSgSuffix();
+            jlSuffix=projectInfos.get(0).getJlSuffix()==null?"":projectInfos.get(0).getJlSuffix();
+        }
         for (PreviewNodeNameDTO1 dto1 : dtos) {
             if(StringUtils.isEmpty(dto1.getNameRule())){
                 throw new ServiceException("请输入题名规则");
             }
-           String result=nodeBaseInfoServiceClient.getNameRuleByRule(dto1.getNameRule(),dto1.getWbsId());
-//            String sql="select p_key_id,ancestors_p_id from m_wbs_tree_contract where p_key_id="+dto1.getWbsId()+" and is_deleted=0";
-//            WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
-//            String result="";
-//            if(contract!=null){
-//                result= createFileTitle(contract, dto1.getNameRule());
-//            }
+//           String result=nodeBaseInfoServiceClient.getNameRuleByRule(dto1.getNameRule(),dto1.getWbsId());
+            String sql="select p_key_id,ancestors_p_id,major_data_type,table_owner from m_wbs_tree_contract where p_key_id="+dto1.getWbsId()+" and is_deleted=0";
+            WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
+            String sql2="select IFNULL(classify,0) from u_information_query where id="+dto1.getId();
+            Integer classify = jdbcTemplate.queryForObject(sql2, Integer.class);
+            String result="";
+           if(contract!=null){
+                result= createFileTitle(contract, dto1.getNameRule());
+               if(contract!=null&&contract.getMajorDataType()!=null&&contract.getMajorDataType()==4){
+                   if(result==null){
+                       result="";
+                   }
+                   if(classify==1&&StringUtils.isNotEmpty(sgSuffix)){
+                       result=result+sgSuffix;
+                   }else if(classify==2&&StringUtils.isNotEmpty(jlSuffix)){
+                       result=result+jlSuffix;
+                   }
+               }
+            }
             list.add(new PreviewNodeNameVO1(dto1.getWbsId(),result.toString()));
         }
         return R.data(list);
@@ -431,11 +446,34 @@ public class InformationWriteQueryController extends BladeController {
         List<PreviewNodeNameVO>list=new ArrayList<>();
         for (PreviewNodeNameDTO dto : dtos) {
             List<String> nameRules = getNameRuleByPkeyId(dto.getWbsId(), dto.getProjectId());
-            String sql="select p_key_id,ancestors_p_id from m_wbs_tree_contract where p_key_id="+dto.getWbsId()+" and is_deleted=0";
+            String sql="select p_key_id,ancestors_p_id,major_data_type from m_wbs_tree_contract where p_key_id="+dto.getWbsId()+" and is_deleted=0";
             WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
+            String sql2="select IFNULL(classify,0) from u_information_query where id="+dto.getId();
+            Integer classify = jdbcTemplate.queryForObject(sql2, Integer.class);
             String result="";
             if(nameRules!=null){
-                result = nodeBaseInfoServiceClient.getNameRuleByRule(String.join("-", nameRules), contract.getPKeyId() + "");
+                result= createFileTitle(contract, String.join("-", nameRules));
+                //result = nodeBaseInfoServiceClient.getNameRuleByRule(String.join("-", nameRules), contract.getPKeyId() + "");
+                if(contract!=null){
+                    String sql1="Select sg_suffix,jl_suffix,template_type from m_project_info where id="+dtos.get(0).getProjectId()+" and is_deleted=0";
+                    List<ProjectInfo> projectInfos = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(ProjectInfo.class));
+                    String sgSuffix="";
+                    String jlSuffix="";
+                    if(projectInfos.size()>0){
+                        sgSuffix=projectInfos.get(0).getSgSuffix()==null?"":projectInfos.get(0).getSgSuffix();
+                        jlSuffix=projectInfos.get(0).getJlSuffix()==null?"":projectInfos.get(0).getJlSuffix();
+                    }
+                    if(contract!=null&&contract.getMajorDataType()!=null&&contract.getMajorDataType()==4){
+                        if(result==null){
+                            result="";
+                        }
+                        if(classify==1&&StringUtils.isNotEmpty(sgSuffix)){
+                            result=result+sgSuffix;
+                        }else if(classify==2&&StringUtils.isNotEmpty(jlSuffix)){
+                            result=result+jlSuffix;
+                        }
+                    }
+                }
             }
             list.add(new PreviewNodeNameVO(dto.getWbsId(),result,nameRules));
         }
@@ -4123,11 +4161,11 @@ public R<Boolean> saveContractTreeNode(@RequestBody AddContractTreeNodeVO vo) {
                 WbsTreeContract newData = new WbsTreeContract();
                 BeanUtils.copyProperties(half, newData);
 
-            //重塑pKeyId、id和parentId
-            newData.setPKeyId(OldPKeyIdToNewPKeyIdMap.get(half.getPKeyId()));
-            if (new Integer("1").equals(half.getType())) {
+              //重塑pKeyId、id和parentId
+              newData.setPKeyId(OldPKeyIdToNewPKeyIdMap.get(half.getPKeyId()));
+              if (new Integer("1").equals(half.getType())) {
                 newData.setId(OldIdToNewIdMap.containsKey(half.getId()) ? OldIdToNewIdMap.get(half.getId()) : SnowFlakeUtil.getId());
-            }
+              }
 
                 //设置父级id
                 boolean var = true;
@@ -4423,6 +4461,9 @@ public void updateTextDictInfos(List<WbsTreeContract> nowTabs, List<Long> oldTab
                 nowTab.setExcelId(tab.getExcelId());
                 nowTab.setIsTypePrivatePid(tab.getPKeyId());
                 nowTab.setInitTableName(tab.getInitTableName());
+                if(nowTab.getHtmlUrl()==null||nowTab.getHtmlUrl().equals("null")){
+                    nowTab.setHtmlUrl("");
+                }
                 String updateSql = "update m_wbs_tree_contract set html_url = '" + nowTab.getHtmlUrl() + "',excel_id = " + nowTab.getExcelId() + ",init_table_name = '" + nowTab.getInitTableName() + "',is_type_private_pid = " + nowTab.getIsTypePrivatePid() + " where p_key_id = " + nowTab.getPKeyId();
                 resultSQL.add(updateSql);
             }

+ 42 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/NodeBaseInfoController.java

@@ -19,6 +19,7 @@ package org.springblade.manager.controller;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.shaded.com.google.protobuf.ServiceException;
 import com.alibaba.nacos.shaded.io.opencensus.metrics.LongGauge;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.gson.Gson;
@@ -52,6 +53,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  *  控制器
@@ -171,8 +173,46 @@ public class NodeBaseInfoController extends BladeController {
     @GetMapping("/getNameRuleByRule")
     @ApiOperationSupport(order = 32)
     @ApiOperation(value = "节点配置根据选择的文件题名规则获取文件题名", notes = "传入规则和节点pkeyId")
-    public R getNameRuleByRule(@RequestParam String nameRule,@RequestParam Long pkeyId){
-        return R.data( nodeBaseInfoService.getNameRuleByRule(nameRule,pkeyId));
+    public R getNameRuleByRule(@RequestParam String nameRule,@RequestParam Long pkeyId) throws ServiceException {
+            String sql="select * from m_wbs_tree_contract where p_key_id="+pkeyId;
+            WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
+            if(contract==null){
+                throw new ServiceException("节点不存在");
+            }
+            String ancestorsPId = contract.getAncestorsPId();
+            if (ancestorsPId.startsWith("0,")) {
+                ancestorsPId = ancestorsPId.substring(2);
+            }
+            ancestorsPId=ancestorsPId+","+contract.getPKeyId();
+            String sql1="select  REPLACE(REPLACE(node_name, CHAR(10), ''), CHAR(13), '') as node_name,node_type from m_wbs_tree_contract where p_key_id in ("+ancestorsPId+") and is_deleted=0";
+            List<WbsTreeContract> nodeNames = jdbcTemplate.query(sql1, new BeanPropertyRowMapper<>(WbsTreeContract.class));
+             nameRule = nameRule.trim().replaceAll("(?i:c)", "");
+            List<String> list = Arrays.asList(nameRule.split("[^.\\d]"));
+            List<Integer> index = list.stream().map(Integer::parseInt).collect(Collectors.toList());
+            Map<Integer, String> map = nodeNames.stream()
+                    .collect(Collectors.toMap(
+                            WbsTreeContract::getNodeType,
+                            WbsTreeContract::getNodeName,
+                            (existing, replacement) -> replacement // 如果键重复,保留后者
+                    ));
+            StringBuilder result = new StringBuilder("");
+            for (Integer i : index) {
+                if(i==0){
+                    if(map.containsKey(1)){
+                        result.append(map.get(1));
+                    }
+                }
+                else if(i==1){
+                    if(map.containsKey(18)){
+                        result.append(map.get(18));
+                    }
+                }else {
+                    if(map.containsKey(i)){
+                        result.append(map.get(i));
+                    }
+                }
+            }
+        return R.data(result.toString());
     }
 
     public R synPDFInfo(String contractId, String nodeId, String classify, String projectId,Map<Long,Map<String,Object>>dataMap) {