瀏覽代碼

重置文件题名

cr 1 周之前
父節點
當前提交
db68821023

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

@@ -22,5 +22,7 @@ public class FlushQueryNameDTO {
     	private Long id;
     	@ApiModelProperty(value = "修改后文件题名")
     	private String nodeName;
+        @ApiModelProperty(value = "修改规则")
+        private String nameRule;
     }
 }

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

@@ -0,0 +1,9 @@
+package org.springblade.business.dto;
+
+import lombok.Data;
+
+@Data
+public class PreviewNodeNameDTO {
+    private Long wbsId;
+    private Long projectId;
+}

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

@@ -0,0 +1,9 @@
+package org.springblade.business.dto;
+
+import lombok.Data;
+
+@Data
+public class PreviewNodeNameDTO1 {
+    private String wbsId;
+    private String nameRule;
+}

+ 16 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/PreviewNodeNameVO.java

@@ -0,0 +1,16 @@
+package org.springblade.business.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PreviewNodeNameVO {
+    private Long wbsId;
+    private String newNodeName;
+    private List<String> rule;
+}

+ 13 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/PreviewNodeNameVO1.java

@@ -0,0 +1,13 @@
+package org.springblade.business.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PreviewNodeNameVO1 {
+    private String wbsId;
+    private String newNodeName;
+}

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreeContractClient.java

@@ -202,4 +202,7 @@ public interface WbsTreeContractClient {
 
     @GetMapping(API_PREFIX + "/get-ekey")
     EKeyDto getEKey(@RequestParam String contractId, @RequestParam Long pKeyId, @RequestParam String wbsId);
+
+    @GetMapping(API_PREFIX + "/saveNameRuleByPkeyId")
+    void saveNameRuleByPkeyId(@RequestParam Long  pKeyId, @RequestParam String s,  @RequestParam Long projectId);
 }

+ 119 - 9
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -29,6 +29,8 @@ import org.springblade.business.dto.ImportTreeDto;
 import org.springblade.business.dto.WbsTreeContractStatisticsDTO;
 import org.springblade.business.dto.FlushQueryNameDTO;
 import org.springblade.business.dto.FlushQueryNameDTO;
+import org.springblade.business.dto.PreviewNodeNameDTO;
+import org.springblade.business.dto.PreviewNodeNameDTO1;
 import org.springblade.business.entity.*;
 import org.springblade.business.feign.MessageWarningClient;
 import org.springblade.business.feign.OperationLogClient;
@@ -59,6 +61,7 @@ import org.springblade.manager.dto.RangeInfo;
 import org.springblade.manager.dto.RangeJson;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.feign.*;
+import org.springblade.manager.vo.NameRuleVo;
 import org.springblade.manager.vo.WbsTreeContractTreeVOS;
 import org.springblade.manager.vo.WbsTreeContractVO8;
 import org.springblade.manager.vo.WbsTreePrivateAddVO;
@@ -205,6 +208,8 @@ public class InformationWriteQueryController extends BladeController {
         List<Long> idList = dto.getList().stream().map(FlushQueryNameDTO.MapValue::getId).collect(Collectors.toList());
         Map<Long, String> nodeNameMap = dto.getList().stream()
                 .collect(Collectors.toMap(FlushQueryNameDTO.MapValue::getId, FlushQueryNameDTO.MapValue::getNodeName));
+        Map<Long, String> paramMap = dto.getList().stream()
+                .collect(Collectors.toMap(FlushQueryNameDTO.MapValue::getId, FlushQueryNameDTO.MapValue::getNameRule));
         List<InformationQuery> queryList = this.informationQueryService.list(Wrappers.<InformationQuery>lambdaQuery()
             .select(InformationQuery::getId, InformationQuery::getName,InformationQuery::getProjectId,InformationQuery::getClassify,InformationQuery::getStatus,InformationQuery::getWbsId).in(InformationQuery::getId, idList));
         String sgSuffix="";
@@ -224,6 +229,10 @@ public class InformationWriteQueryController extends BladeController {
                     result=wbsParamClient.createFileTitle(contract);
                 }else {
                     result=nodeNameMap.get(query.getId());
+                    //同时修改工程划分节点命名规则
+                    if(contract!=null){
+                        wbsTreeContractClient.saveNameRuleByPkeyId(contract.getPKeyId(),paramMap.get(query.getId()),Long.parseLong(contract.getProjectId()));
+                    }
                 }
                 if(contract!=null&&contract.getMajorDataType()!=null&&contract.getMajorDataType()==4){
                     if(query.getClassify()!=null&&query.getClassify()==1&&StringUtils.isNotEmpty(sgSuffix)){
@@ -251,6 +260,85 @@ public class InformationWriteQueryController extends BladeController {
         return R.status(this.informationQueryService.updateBatchById(queryList));
     }
 
+    public List<String> getNameRuleByPkeyId(Long pKeyId, Long projectId) {
+        NameRuleVo vo = new NameRuleVo();
+        String sql2="select * from m_wbs_param where node_id="+pKeyId+" and type=200"+" and is_deleted=0 and k='FILE_TITLE'";
+        List<WbsParam> wbsParams = jdbcTemplate.query(sql2, new BeanPropertyRowMapper<>(WbsParam.class));
+        WbsParam wbsParam = null;
+        if (!wbsParams.isEmpty()) {
+            wbsParam = wbsParams.get(0);
+        }
+        if(wbsParam!=null){
+            vo.setNameId(wbsParam.getNameId());
+            vo.setNameVaule(wbsParam.getV());
+        }
+        if(vo!=null&&StringUtils.isNotEmpty(vo.getNameRule())){
+            List<String> list = Arrays.asList(vo.getNameVaule().split("-"));
+            return list;
+        }else {
+            //合同段没有 在查项目级的
+            //如果是导入划分树 就不会引用项目级的
+            String sql="select * from m_wbs_tree_contract where p_key_id="+pKeyId;
+            WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
+            if(contract.getIsTypePrivatePid()==null){
+                return null;
+            }
+            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 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="+projectId+"  AND parent_id!=0 AND p_key_id IN (" + join + ")";
+            List<WbsTreePrivate> nodeList = jdbcTemplate.query(sql11, new BeanPropertyRowMapper<>(WbsTreePrivate.class));
+            //List<WbsTreePrivate> nodeList = wbsTreePrivateService.getBaseMapper().selectList(new LambdaQueryWrapper<>(WbsTreePrivate.class).select(WbsTreePrivate::getId).eq(WbsTreePrivate::getNodeType, 1).ne(WbsTreePrivate::getParentId, 0).in(WbsTreePrivate::getPKeyId, list2));
+            //那点祖级节点的Id
+            List<Long> list3 = nodeList.stream().map(o -> o.getId()).collect(Collectors.toList());
+            if(list3.size()<0){
+                return null;
+            }
+            //查出这个项目所有的文件题名配置
+            String wbsParamsql="select * from m_wbs_param where project_id="+projectId+" and k='FILE_TITLE' and is_deleted=0";
+            List<WbsParam> wbsParamList=jdbcTemplate.query(wbsParamsql, new BeanPropertyRowMapper<>(WbsParam.class));
+            List<WbsParam> result=new ArrayList<>();
+            if(wbsParamList.size()>0){
+                //筛选出包含当前单位工程节点的
+                for (WbsParam param : wbsParamList) {
+                    //祖级节点里有文件题名配置就加进去
+                    if(list3.contains(param.getNodeId())){
+                        result.add(param);
+                    }
+                    //如果是全局的也加进去
+                    if(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){
+                        WbsParam param = collect1.get(0);
+                        return 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 Arrays.asList(param.getV().split("-"));
+                    }
+                }
+            }
+
+        }
+        return null;
+    }
+
     private String createFileTitle(WbsTreeContract contract, String param) {
         if(contract==null){
             return "";
@@ -291,22 +379,44 @@ public class InformationWriteQueryController extends BladeController {
         return result.toString();
     }
 
-    @GetMapping("/previewNodeName")
+    @PostMapping("/previewNodeName")
     @ApiOperation(value = "预览节点名称")
     @ApiImplicitParams(value = {
             @ApiImplicitParam(name = "wbsId", value = "资料查询wbsId", required = true),
             @ApiImplicitParam(name = "param", value = "题名规则", required = true)
     })
-    public R<String> previewNodeName(@RequestParam String wbsId,@RequestParam String param){
-        if(StringUtils.isEmpty(param)){
-            throw new ServiceException("请输入题名规则");
+    public R<List<PreviewNodeNameVO1>> previewNodeName(@RequestBody List<PreviewNodeNameDTO1>dtos){
+        List<PreviewNodeNameVO1> list = new ArrayList<>();
+        for (PreviewNodeNameDTO1 dto1 : dtos) {
+            if(StringUtils.isEmpty(dto1.getNameRule())){
+                throw new ServiceException("请输入题名规则");
+            }
+            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());
+            }
+            list.add(new PreviewNodeNameVO1(dto1.getWbsId(),result));
         }
-        String sql="select p_key_id,ancestors_p_id from m_wbs_tree_contract where p_key_id="+wbsId+" and is_deleted=0";
-        WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
-        if(contract!=null){
-            return R.data(createFileTitle(contract,param));
+        return R.data(list);
+    }
+
+    @PostMapping("/getNameRuleList")
+    @ApiOperation(value = "获取题名规则列表")
+    public R<List<PreviewNodeNameVO>> getNameRuleList(@RequestBody List<PreviewNodeNameDTO>dtos){
+        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";
+            WbsTreeContract contract = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(WbsTreeContract.class));
+            String result="";
+            if(nameRules!=null){
+                result= createFileTitle(contract, String.join("-", nameRules));
+            }
+            list.add(new PreviewNodeNameVO(dto.getWbsId(),result,nameRules));
         }
-        return R.success("暂无数据");
+        return R.data(list);
     }
 
     /**

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

@@ -12,6 +12,7 @@ import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.core.tool.node.ForestNodeMerger;
 import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.manager.controller.WbsTreeContractController;
 import org.springblade.manager.entity.*;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ContractRelationJlyz;
@@ -47,6 +48,8 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
 
     private final JdbcTemplate jdbcTemplate;
 
+    private final WbsTreeContractController wbsTreeContractController;
+
     @Override
     public List<WbsTreeContract> getTables(String contractId, Long id, String wbsId) {
         return wbsTreeContractMapper.getTables(contractId, id, wbsId);
@@ -491,5 +494,10 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
         return wbsTreeContractService.getEKey(contractId,pKeyId,wbsId);
     }
 
+    @Override
+    public void saveNameRuleByPkeyId(Long pKeyId, String s, Long projectId) {
+        wbsTreeContractController.saveContractNameRule(s,pKeyId,projectId);
+    }
+
 
 }