Commit a4ab1642 authored by tianyiming's avatar tianyiming

refactor: 优化查询条件和模糊查询字段

parent e9fa9973
......@@ -253,21 +253,14 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if (v instanceof JSONArray) {
if (!((JSONArray) v).contains("all") && ((JSONArray) v).size() > 0) {
String field = k;
if (k.equals("newPost") || k.equals("subPost") || k.equals("unitType")) {
boolMust.must(existsQuery(field));
EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
((JSONArray) v).forEach(item -> {
if (k.equals("unitType") && item.equals("企业")) {
item = "使用单位";
}
enhancedDynamicQueryBuilder.add(QueryBuilders.wildcardQuery(field + ".keyword", "*" + item + "*"), or);
});
boolMust.should(enhancedDynamicQueryBuilder.build()).minimumShouldMatch(1);
} else if (k.equals("equipType")) {
if (k.equals("newPost") || k.equals("subPost") || k.equals("equipType")) {
boolMust.must(existsQuery(field));
EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
((JSONArray) v).forEach(item -> enhancedDynamicQueryBuilder.add(QueryBuilders.wildcardQuery(field, "*" + item + "*"), or));
boolMust.should(enhancedDynamicQueryBuilder.build()).minimumShouldMatch(1);
} else if (k.equals("unitType")) {
boolMust.must(existsQuery(field));
((JSONArray) v).forEach(item -> boolMust.should(QueryBuilders.wildcardQuery(field + ".keyword", "*" + (item.equals("企业") ? "使用单位" : item) + "*")).minimumShouldMatch(1));
} else if (k.equals("education")) {
boolMust.must(existsQuery(field));
TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field, (JSONArray) v);
......@@ -508,6 +501,9 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if (!ObjectUtils.isEmpty(filter.get("filterParams"))) {
filterParams = JSONObject.parseObject(JSONObject.toJSONString(filter.get("filterParams")));
String filterType = filter.getString("filterType");
if(filterParams.containsKey("unitType") && !filterParams.getString("unitType").equals("all")){
filterParams.remove("unitCategory");
}
//快捷筛选和自定义筛选解析筛选规则不一致
if (filterType.equals("advanced")) {
filterParams.forEach((k, v) -> {
......@@ -516,14 +512,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
String field = k;
if (k.equals("regulatoryLabels") || k.equals("equipCategory") || k.equals("unitType")) {
boolMust.must(existsQuery(field));
EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
((JSONArray) v).forEach(item -> {
if (k.equals("unitType") && item.equals("企业")) {
item = "使用单位";
}
enhancedDynamicQueryBuilder.add(QueryBuilders.wildcardQuery(field + ".keyword", "*" + item + "*"), or);
});
boolMust.should(enhancedDynamicQueryBuilder.build()).minimumShouldMatch(1);
((JSONArray) v).forEach(item -> boolMust.should(QueryBuilders.wildcardQuery(field + ".keyword", "*" + (item.equals("企业") ? "使用单位" : item) + "*")).minimumShouldMatch(1));
} else if (k.equals("industrySupervisor") || k.equals("operatingStatus")) {
boolMust.must(existsQuery(field));
TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field + ".keyword", ((JSONArray) v).get(0));
......@@ -575,6 +564,9 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
String fuzzyValue = String.valueOf(v);
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.should(QueryBuilders.wildcardQuery("useUnit.keyword", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("address.keyword", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("superviseOrgName.keyword", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("contactUser.keyword", "*" + fuzzyValue + "*"));
queryBuilder.minimumShouldMatch(1);
boolMust.must(queryBuilder);
} else if (k.equals("unitCategory")) {
......@@ -721,9 +713,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
} else if (item.equals("near")) {
// 临期:小于等于当前日期加上30天
queryBuilder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(finalField).gte(LocalDate.now().format(formatter)).lte(LocalDate.now().plusDays(30).format(formatter))), or);
} else {
} else if (item.equals("normal")) {
// 正常:大于当前日期加上30天
queryBuilder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(finalField).gt(LocalDate.now().plusDays(30).format(formatter))), or);
} else {
queryBuilder.add(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(finalField)), or);
}
});
boolMust.must(queryBuilder.build());
......@@ -732,7 +726,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
JSONArray dates = (JSONArray) v;
String startDate = dates.getString(0);
String endDate = dates.getString(1);
boolMust.filter(QueryBuilders.rangeQuery(field).gte(startDate).lte(endDate));
if (k.equals("USE_DATE") || k.equals("issueDate")) {
boolMust.filter(QueryBuilders.rangeQuery(field).gte(startDate).lt(endDate));
} else {
boolMust.filter(QueryBuilders.rangeQuery(field).gte(startDate).lte(endDate));
}
} else if (k.equals("EQU_LIST") || k.equals("EQU_CATEGORY") || k.equals("EQU_DEFINE") || k.equals("EQU_STATE") || k.equals("DATA_QUALITY_SCORE")) {
if (k.equals("EQU_LIST")) {
field = "EQU_LIST_CODE";
......@@ -787,6 +785,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
queryBuilder.should(QueryBuilders.wildcardQuery("EQU_CATEGORY", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("EQU_DEFINE", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("PRODUCT_NAME", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("USE_ORG_CODE", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("USE_UNIT_NAME", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("SAFETY_MANAGER", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("ORG_BRANCH_NAME", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("MAINTAIN_UNIT_NAME", "*" + fuzzyValue + "*"));
queryBuilder.minimumShouldMatch(1);
boolMust.must(queryBuilder);
} else if (k.equals("WHETHER_VEHICLE_CYLINDER")) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment