|
@@ -506,9 +506,12 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
SearchRequest.Builder builder = new SearchRequest.Builder();
|
|
|
//设置查询索引
|
|
|
builder.index("patent");
|
|
|
+ String operate = "";
|
|
|
if (StringUtils.isNotEmpty(condition)) {
|
|
|
//1. 解析检索条件
|
|
|
treeNode tree = expressManager.getInstance().Parse(condition, false);
|
|
|
+ operateNode operateNode = (operateNode) tree;
|
|
|
+ operate = operateNode.getoperate().getShowName();
|
|
|
//3. 从es中检索数据
|
|
|
Query q = formatQueryService.EsQueryToQuery((operateNode) tree, "patent", projectId);
|
|
|
builder.query(q);
|
|
@@ -658,15 +661,33 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
|
|
|
List<String> mergeList = new ArrayList<>();
|
|
|
if (StringUtils.isNotEmpty(condition)) {
|
|
|
- List<String> expresses = getConditionExpress(condition);
|
|
|
Aggregate terms = totalAgg.nested().aggregations().get("terms");
|
|
|
List<StringTermsBucket> termsBucketList = terms.sterms().buckets().array();
|
|
|
- List<String> merges = termsBucketList.stream().map(StringTermsBucket::key).map(FieldValue::stringValue)
|
|
|
- .filter(value -> expresses.stream().anyMatch(express -> value.contains(express)))
|
|
|
- .collect(Collectors.toList());
|
|
|
- total = total > merges.size() ? merges.size() : total;
|
|
|
- merges = merges.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
|
|
|
- mergeList.addAll(merges);
|
|
|
+ if (condition.contains("AND") && operate.equals("AND")) {
|
|
|
+ String[] parts = condition.split(" AND ");
|
|
|
+ for (String part : parts) {
|
|
|
+ List<String> expresses = getConditionExpress(part);
|
|
|
+ List<String> merges = termsBucketList.stream().map(StringTermsBucket::key).map(FieldValue::stringValue)
|
|
|
+ .filter(value -> expresses.stream().anyMatch(express -> value.contains(express)))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ total = total > merges.size() ? merges.size() : total;
|
|
|
+ merges = merges.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(mergeList)) {
|
|
|
+ mergeList.addAll(merges);
|
|
|
+ } else {
|
|
|
+ merges.retainAll(mergeList);
|
|
|
+ mergeList = new ArrayList<>(merges);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ List<String> expresses = getConditionExpress(condition);
|
|
|
+ List<String> merges = termsBucketList.stream().map(StringTermsBucket::key).map(FieldValue::stringValue)
|
|
|
+ .filter(value -> expresses.stream().anyMatch(express -> value.contains(express)))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ total = total > merges.size() ? merges.size() : total;
|
|
|
+ merges = merges.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
|
|
|
+ mergeList.addAll(merges);
|
|
|
+ }
|
|
|
} else {
|
|
|
if (type == 0) {
|
|
|
Aggregate agg = response.aggregations().get("Agg");
|