Commit a2c7d00a authored by tianyiming's avatar tianyiming

fix: 修正综合统计分析服务中unitCategory和unitType的查询逻辑

parent 01d6caa2
...@@ -253,20 +253,21 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -253,20 +253,21 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if (v instanceof JSONArray) { if (v instanceof JSONArray) {
if (!((JSONArray) v).contains("all") && ((JSONArray) v).size() > 0) { if (!((JSONArray) v).contains("all") && ((JSONArray) v).size() > 0) {
String field = k; String field = k;
if (k.equals("unitCategory")) { if (k.equals("newPost") || k.equals("subPost") || k.equals("unitType")) {
if (!ObjectUtils.isEmpty(v) && ((JSONArray) v).size() == 1) { boolMust.must(existsQuery(field));
String category = ((JSONArray) v).get(0).toString(); EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
JSONArray unitTypeByType = UnitTypeNewEnum.getUnitTypeByType(category);
List<String> list = unitTypeByType.stream().map(e -> JSONObject.parseObject(JSONObject.toJSONString(e)).get("value").toString()).collect(Collectors.toList());
list.forEach(item -> boolMust.should(QueryBuilders.wildcardQuery("unitType.keyword", "*" + item + "*")).minimumShouldMatch(1));
}
} else if (k.equals("newPost") || k.equals("subPost") || k.equals("unitType")) {
((JSONArray) v).forEach(item -> { ((JSONArray) v).forEach(item -> {
boolMust.must(QueryBuilders.wildcardQuery(field + ".keyword", "*" + 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")) { } else if (k.equals("equipType")) {
boolMust.must(existsQuery(field)); boolMust.must(existsQuery(field));
((JSONArray) v).forEach(item -> boolMust.must(QueryBuilders.wildcardQuery(field, "*" + item + "*"))); 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("education")) { } else if (k.equals("education")) {
boolMust.must(existsQuery(field)); boolMust.must(existsQuery(field));
TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field, (JSONArray) v); TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field, (JSONArray) v);
...@@ -372,6 +373,13 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -372,6 +373,13 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
queryBuilder.should(QueryBuilders.wildcardQuery("name", "*" + fuzzyValue + "*")); queryBuilder.should(QueryBuilders.wildcardQuery("name", "*" + fuzzyValue + "*"));
queryBuilder.minimumShouldMatch(1); queryBuilder.minimumShouldMatch(1);
boolMust.must(queryBuilder); boolMust.must(queryBuilder);
} else if (k.equals("unitCategory")) {
if (!ObjectUtils.isEmpty(v) && !"".equals(v)) {
String category = v.toString();
JSONArray unitTypeByType = UnitTypeNewEnum.getUnitTypeByType(category);
List<String> list = unitTypeByType.stream().map(e -> JSONObject.parseObject(JSONObject.toJSONString(e)).get("value").toString()).collect(Collectors.toList());
list.forEach(item -> boolMust.should(QueryBuilders.wildcardQuery("unitType.keyword", "*" + (item.equals("企业") ? "使用单位" : item) + "*")).minimumShouldMatch(1));
}
} }
} }
}); });
......
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