|
@@ -29,6 +29,8 @@ import org.springblade.business.dto.CustomAddContractNodeDTO;
|
|
|
import org.springblade.business.dto.ImportTreeDto;
|
|
|
import org.springblade.business.dto.WbsTreeContractStatisticsDTO;
|
|
|
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;
|
|
@@ -209,6 +212,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="";
|
|
@@ -228,6 +233,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)){
|
|
@@ -255,6 +264,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.getNameVaule())){
|
|
|
+ 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 "";
|
|
@@ -295,19 +383,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){
|
|
|
- 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));
|
|
|
+ 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));
|
|
|
+ }
|
|
|
+ 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);
|
|
|
}
|
|
|
|
|
|
/**
|