fix: 解决企标处理标准体系字段空指针问题

This commit is contained in:
wxyclub
2023-11-26 13:59:22 +08:00
parent fe843d08f7
commit 04a3dc14e5
2 changed files with 11 additions and 153 deletions
@@ -3,10 +3,12 @@
# 数据库配置
#=============================================
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://121.36.69.172:3307/foton_slrs_20230522?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.url = jdbc:mysql://121.36.69.172:3307/foton_slrs_20230719?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username = root
spring.datasource.password = hzwlsoft.com
#spring.datasource.url = jdbc:mysql://10.10.10.44:3306/foton_slrs?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false
#spring.datasource.username = root
#spring.datasource.password = hzwlsoft.com
#==============================================
@@ -7,12 +7,9 @@ import com.adc.da.search.util.InitStandAttrSearchUtil;
import com.adc.da.sys.dao.DicTypeEODao;
import com.adc.da.sys.entity.DicTypeEO;
import com.adc.da.sys.sarMenuStandard.service.ISarMenuStandardService;
import com.adc.da.sys.sarResource.entity.SysTsResource;
import com.adc.da.sys.sarResource.service.ISysTsResourceService;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.search.SearchRequestBuilder;
@@ -58,9 +55,6 @@ public class SearchCenterServiceImpl implements SearchCenterService {
@Resource
private ISarMenuStandardService sarMenuStandardService;
@Resource
private ISysTsResourceService tsResourceService;
@Autowired
private TransportClient transportClient;
@@ -231,7 +225,6 @@ public class SearchCenterServiceImpl implements SearchCenterService {
String sortField1 = "";
String sortField2 = "";
String sortField3 = "";
String sortField4 = "";
if("laws".equals(searchInfoEO.getSelectIndex())){
sortField1 = "lawsNumber";
sortField2 = "lawsYear";
@@ -241,83 +234,16 @@ public class SearchCenterServiceImpl implements SearchCenterService {
sortField2 = "standYear";
sortField3 = "standSort.keyword";
}
if("laws".equals(searchInfoEO.getSelectIndex())){
sortField1 = "lawsNumber";
sortField2 = "lawsYear";
sortField3 = "lawsType.keyword";
} else if("bussstand".equals(searchInfoEO.getSelectIndex())) {
// sortField1 = "put_time_data";
sortField1 = "standNumber";
sortField2 = "standYear";
sortField3 = "standSort.keyword";
} else if ("stand".equals(searchInfoEO.getSelectIndex())) {
sortField1 = "SSRQName";
// sortField2 = "standNumber";
// sortField3 = "standYear";
// sortField4 = "standSort.keyword";
} else {
sortField1 = "standNumber";
sortField2 = "standYear";
sortField3 = "standSort.keyword";
}
// 国内海外查询标准体系字段由id变为文字
// if (StringUtils.isNotBlank(searchInfoEO.getStandSystem())) {
// ArrayList<String> menuIdList = new ArrayList<>();
// Collections.addAll(menuIdList,searchInfoEO.getStandSystem().split(","));
// LambdaQueryWrapper<SarMenuStandard> wrapper = new LambdaQueryWrapper<>();
// wrapper.in(SarMenuStandard::getId,menuIdList);
// wrapper.select(SarMenuStandard::getMenuName);
// List<SarMenuStandard> sarMenuStandardList = sarMenuStandardService.list(wrapper);
// menuNameList = sarMenuStandardList.stream().map(SarMenuStandard::getMenuName).collect(Collectors.toList());
// }
// 处理菜单名称
List<String> menuNameList = new ArrayList<>();
if (StringUtils.isNotBlank(searchInfoEO.getStandSystem())) {
ArrayList<String> menuIdList = new ArrayList<>();
Collections.addAll(menuIdList, searchInfoEO.getStandSystem().split(","));
LambdaQueryWrapper<SysTsResource> wrapper = new LambdaQueryWrapper<>();
wrapper.in(SysTsResource::getId, menuIdList);
wrapper.select(SysTsResource::getMenuName);
List<SysTsResource> tsResourceList = tsResourceService.list(wrapper);
List<String> tempList = tsResourceList.stream().map(SysTsResource::getMenuName).collect(Collectors.toList());
if ("bussstand".equals(searchInfoEO.getSelectIndex())) {
// 和ES中的类别对应
for (String menuName : tempList) {
menuNameList.add(getReplaceStandSortStr(menuName));
}
} else if ("stand".equals(searchInfoEO.getSelectIndex())) {
if (StringUtils.isNotBlank(searchInfoEO.getStandSystem())) {
// 使用正则表达式提取括号内的内容
Pattern pattern = Pattern.compile("([^()]+)");
for (String menuName : tempList) {
Matcher matcher = pattern.matcher(menuName);
if (matcher.find()) {
String contentInBrackets = matcher.group(1);
menuNameList.add(contentInBrackets);
} else {
menuNameList.add(menuName);
}
}
}
}
}
searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex())
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
if ("stand".equals(searchInfoEO.getSelectIndex())) {
searchRequestBuilder.addSort(sortField1,SortOrder.DESC);
} else {
searchRequestBuilder.addSort(new ScoreSortBuilder().order(SortOrder.DESC))
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.addSort(new ScoreSortBuilder().order(SortOrder.DESC))
.addSort("standSortOrder", SortOrder.ASC)
.addSort(sortField1, SortOrder.ASC)
.addSort(sortField2, SortOrder.DESC)
.addSort(sortField3, SortOrder.ASC)
.addSort("issue_time_data", SortOrder.DESC);
}
searchRequestBuilder.setFrom((searchInfoEO.getPage()-1) * searchInfoEO.getPageSize())
.addSort("issue_time_data", SortOrder.DESC)
.setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize())
.setSize(searchInfoEO.getPageSize());
if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){
@@ -411,9 +337,9 @@ public class SearchCenterServiceImpl implements SearchCenterService {
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*"));
}
}
// if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) {
// boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*"));
// }
if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) {
boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*"));
}
if (StringUtils.isNotBlank(searchInfoEO.getLawsSyqy())) {
boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsSyqy.keyword", "*"+searchInfoEO.getLawsSyqy()+"*"));
@@ -424,38 +350,10 @@ public class SearchCenterServiceImpl implements SearchCenterService {
}
boolQueryBuilder.must(boolQueryShould);
}else {
// if (!menuNameList.isEmpty()) {
// menuNameList.forEach(each -> {
// if ("stand".equals(searchInfoEO.getSelectIndex())) {
// boolQueryBuilder.must(QueryBuilders.matchQuery("standSystem","*"+each+"*"));
// }else if ("bussstand".equals(searchInfoEO.getSelectIndex())) {
// boolQueryBuilder.must(QueryBuilders.matchQuery("TXLBBUSS",each));
// }
// });
// }
if (!menuNameList.isEmpty()) {
menuNameList.forEach(each -> boolQueryBuilder.must(QueryBuilders.matchQuery("standSort","*"+each+"*")));
}
if ("stand".equals(searchInfoEO.getSelectIndex()) && StringUtils.isNotBlank(searchInfoEO.getStandType())) {
boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*"));
}
boolQueryBuilder.must(boolQueryShould);
}
if (StringUtils.isNotBlank(searchInfoEO.getTextStatusBuss())) {
if (searchInfoEO.getSelectIndex().equals("bussstand")) {
if ("现行有效".equals(searchInfoEO.getTextStatusBuss())) {
boolQueryBuilder.must(QueryBuilders.termQuery("textStatusBuss", "9z741h2m3j")).boost(1009f);
}
}
}
if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) {
if (searchInfoEO.getSelectIndex().equals("stand")) {
if ("现行有效".equals(searchInfoEO.getTextStatus())) {
boolQueryBuilder.must(QueryBuilders.termQuery("textStatus", "vsaga7nwub")).boost(1009f);
}
}
}
searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true);
@@ -2283,48 +2181,6 @@ public class SearchCenterServiceImpl implements SearchCenterService {
log.info(response.getHits().toString());
}
public String getReplaceStandSortStr(String standSort){
switch (standSort){
case "A类标准(技术条件)":
return "Q/FT A";
case "B类标准(技术基础)":
return "Q/FT B";
case "C类标准(产品标准)":
return "Q/FT C";
case "E类标准(发动机)":
return "Q/FT E";
case " F类标准(仿真分析)":
return "Q/FT F";
case "G类标准":
return "Q/FT G";
case "M类标准(工程机械)":
return "Q/FT M";
case "P类标准(工艺工装)":
return "Q/FT P";
case "Q类标准(质量评审)":
return "Q/FT Q";
case "T类标准(试验标准)":
return "Q/FT T";
case "R类标准(设计规范)":
return "Q/FT R";
case "V类标准(评价标准)":
return "Q/FT V";
case "X类标准(出口车)":
return "Q/FT X";
case "Z类标准(指导性技术文件)":
return "Q/FT Z";
case "S类标准(产品试制标准)":
return "Q/FT S";
case "Y类标准(标杆研究标准)":
return "Q/FT Y";
case "参考标准":
return "FT";
default:
return "其他企业标准";
}
}
}