feat: There is no way the,
This commit is contained in:
@@ -267,6 +267,7 @@ public class SeniorSearchInfoEO extends BasePage {
|
||||
private String lawsLabel;
|
||||
private String lawsRemark;
|
||||
private String CYSDLAWS;
|
||||
private String NYLXCLASS;
|
||||
|
||||
|
||||
|
||||
|
||||
+83
-21
@@ -7,7 +7,9 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.beanutils.BeanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.elasticsearch.action.search.SearchRequestBuilder;
|
||||
import org.elasticsearch.action.search.SearchResponse;
|
||||
import org.elasticsearch.action.search.SearchType;
|
||||
@@ -32,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.lang.reflect.Field;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
@@ -386,6 +389,12 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
collectAttrMap.put("CYSDLAWS",array);
|
||||
}
|
||||
|
||||
if(searchInfoEO.getNYLXCLASS() != null && StringUtils.isNotBlank(searchInfoEO.getNYLXCLASS())){
|
||||
List<String> fieldList = Arrays.asList(searchInfoEO.getNYLXCLASS() .split(",")).stream().map(s -> (s.trim())).collect(Collectors.toList());
|
||||
JSONArray array= JSONArray.parseArray(JSON.toJSONString(fieldList));
|
||||
collectAttrMap.put("NYLXCLASS",array);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
List<String> fieldList = getStringField(searchInfoEO);
|
||||
@@ -503,11 +512,11 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
if(list.size() > 1){
|
||||
BoolQueryBuilder boolQueryBuilderShould = new BoolQueryBuilder();
|
||||
list.forEach(s -> {
|
||||
boolQueryBuilderShould.should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+s+" "+"*"));
|
||||
boolQueryBuilderShould.should(QueryBuilders.termQuery("standSort.keyword", s));
|
||||
});
|
||||
boolQueryBuilder.must(boolQueryBuilderShould);
|
||||
}else {
|
||||
boolQueryBuilder.must(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getStandSort()+" "+"*"));
|
||||
boolQueryBuilder.must(QueryBuilders.termQuery("standSort.keyword", searchInfoEO.getStandSort()));
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotBlank(searchInfoEO.getStandNumber())) {
|
||||
@@ -776,22 +785,36 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
// 循环统计各种类型数据
|
||||
String[] seniortype;
|
||||
if("stand".equals(searchInfoEO.getSelectIndex())) {
|
||||
String[] seniortypeStand = {"standSort", "statecode","CYSD","ZRLX","CLLX","CBCD","textStatus","textStatusName"};
|
||||
String[] seniortypeStand = {"standSort", "numbershow","statecode","CYSD","ZRLX","CLLX","CBCD","textStatus","textStatusName","NYLXCLASS"};
|
||||
seniortype = seniortypeStand.clone();
|
||||
} else if("laws".equals(searchInfoEO.getSelectIndex())){
|
||||
String[] seniortypeLaws = {"lawsSyqy","lawsSycx","CYSDLAWS"};
|
||||
seniortype = seniortypeLaws.clone();
|
||||
} else if ("bussstand".equals(searchInfoEO.getSelectIndex())) {
|
||||
String[] seniortypeBuss = {"textStatusBuss","QCDW"};
|
||||
String[] seniortypeBuss = {"standSort", "numbershow", "statecode","CYSD","ZRLX","CLLX","CBCD","textStatus","textStatusName","NYLXCLASS"};
|
||||
seniortype = seniortypeBuss.clone();
|
||||
} else {
|
||||
String[] seniortypeMsg = {"module"};
|
||||
seniortype = seniortypeMsg.clone();
|
||||
}
|
||||
String standType = searchInfoEO.getStandType();
|
||||
String[] standVerify = {"GB","GB/T","QC/T","JT","JB","GA","GJB","HJ"};
|
||||
String[] standEnVerify = {"ECE","EU","EC","EEC","ISO","IEC","GTR","CFR",
|
||||
"JASO","JIS","GSO","GOST","ΓOCT","TP","SASO","UAE","CONTRAN","DENATRAN","ABNT NBR","NBR","INMETRO","CONAMA","Normative Instruction","ADR"};
|
||||
String[] bussStandVerify = {"Q/FT A","Q/FT B","Q/FT E","Q/FT F","Q/FT G","Q/FT M","Q/FT Q","Q/FT R","Q/FT S","Q/FT T","Q/FT V","Q/FT X","Q/FT Y","Q/FT Z","Q/QCBFC"};
|
||||
List<String> list = new ArrayList<>();
|
||||
if(standType.equals("INLAND")){
|
||||
list = Stream.of(standVerify).collect(Collectors.toList());
|
||||
}else if(standType.equals("bussstand")){
|
||||
list = Stream.of(bussStandVerify).collect(Collectors.toList());
|
||||
}else if(standType.equals("FOREIGN")){
|
||||
list = Stream.of(standEnVerify).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
for (int i = 0; i < seniortype.length; i++) {
|
||||
//分组依靠关键字terms
|
||||
TermsAggregationBuilder aggregationBuilders = AggregationBuilders.terms("by_" + seniortype[i]).field(seniortype[i] + ".keyword").size(1000);
|
||||
TermsAggregationBuilder aggregationBuilders = AggregationBuilders.terms("by_" + seniortype[i]).field(seniortype[i] + ".keyword").size(100000);
|
||||
searchRequestBuilder.addAggregation(aggregationBuilders);
|
||||
}
|
||||
// 获取查询到的结果
|
||||
@@ -808,27 +831,17 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
Map<String, Object> submap = new HashMap<>();
|
||||
for (StringTerms.Bucket bucket : stResult.getBuckets()) {
|
||||
// 多选处理,当前全部允许多选
|
||||
String keyname = bucket.getKeyAsString();
|
||||
String[] keynamelist = keyname.split(",");
|
||||
String keyName = bucket.getKeyAsString();
|
||||
String[] keyNameList = keyName.split(",");
|
||||
// 对于属性允许多选,此处做出处理
|
||||
if(keynamelist.length>0){
|
||||
for (String itemkeyname: keynamelist){
|
||||
if(keyNameList.length>0){
|
||||
for (String itemKeyName: keyNameList){
|
||||
// put 之前判断是否已存在该key ,如果不存在,直接放入值,如果存在,需要进行一个累加
|
||||
if(submap.containsKey(itemkeyname)){
|
||||
submap.put(itemkeyname.trim(), (long)submap.get(itemkeyname)+ bucket.getDocCount());
|
||||
}
|
||||
else {
|
||||
submap.put(itemkeyname.trim(), bucket.getDocCount());
|
||||
}
|
||||
keyNameFilter(standType, list, submap, bucket, itemKeyName);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(submap.containsKey(keyname)){
|
||||
submap.put(keyname.trim(), (long)submap.get(keyname)+ bucket.getDocCount());
|
||||
}
|
||||
else {
|
||||
submap.put(keyname.trim(), bucket.getDocCount());
|
||||
}
|
||||
keyNameFilter(standType, list, submap, bucket, keyName);
|
||||
}
|
||||
}
|
||||
map.put(seniortype[i], submap);
|
||||
@@ -839,11 +852,60 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
||||
}
|
||||
|
||||
}
|
||||
if(standType.equals("bussstand")){
|
||||
map.forEach((s, o) -> {
|
||||
if(s.equals("numbershow")){
|
||||
map.put("standSort",o);
|
||||
}
|
||||
});
|
||||
}
|
||||
result.get(0).put("groupdata", map);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static Map<String, Object> objectToMap(Object obj){
|
||||
if(obj == null){
|
||||
return null;
|
||||
}
|
||||
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
|
||||
Field[] declaredFields = obj.getClass().getDeclaredFields();
|
||||
try {
|
||||
for (Field field : declaredFields) {
|
||||
field.setAccessible(true);
|
||||
map.put(field.getName(), field.get(obj));
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.getMessage();
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
private void keyNameFilter(String standType, List<String> list, Map<String, Object> submap, StringTerms.Bucket bucket, String keyname) {
|
||||
if(standType.equals("bussstand")){
|
||||
if(!list.isEmpty()){
|
||||
String finalKeyName = keyname;
|
||||
List<String> list1 = list.stream().filter(string-> (finalKeyName.contains(string))).collect(Collectors.toList());
|
||||
if(!list1.isEmpty()){
|
||||
if(submap.containsKey(list1.get(0))){
|
||||
submap.put(list1.get(0).trim(), (long)submap.get(list1.get(0).trim())+ bucket.getDocCount());
|
||||
}else {
|
||||
submap.put(list1.get(0).trim(), bucket.getDocCount());
|
||||
}
|
||||
}
|
||||
}
|
||||
}else {
|
||||
if(submap.containsKey(keyname)){
|
||||
submap.put(keyname.trim(), (long)submap.get(keyname)+ bucket.getDocCount());
|
||||
}else {
|
||||
submap.put(keyname.trim(), bucket.getDocCount());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> SearchResponseToList(SearchResponse searchResponse) {
|
||||
List<Map<String, Object>> sourceList = new ArrayList<Map<String, Object>>();
|
||||
|
||||
Reference in New Issue
Block a user