|
@@ -541,7 +541,35 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
|
|
|
|
List<String> mergeList = new ArrayList<>();
|
|
List<String> mergeList = new ArrayList<>();
|
|
if (StringUtils.isNotEmpty(condition)) {
|
|
if (StringUtils.isNotEmpty(condition)) {
|
|
- total = this.loadConditionMergeList(totalAgg,mergeList,condition,operate,total,pageNum.intValue(),pageSize.intValue());
|
|
|
|
|
|
+// total = this.loadConditionMergeList(totalAgg,mergeList,condition,operate,total,pageNum.intValue(),pageSize.intValue());
|
|
|
|
+ Aggregate terms = totalAgg.nested().aggregations().get("terms");
|
|
|
|
+ List<StringTermsBucket> termsBucketList = terms.sterms().buckets().array();
|
|
|
|
+ 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);
|
|
|
|
+ total = total > mergeList.size() ? mergeList.size() : total;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } 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.toLowerCase(Locale.ROOT))))
|
|
|
|
+ .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 {
|
|
} else {
|
|
loadMergeList(type, response, mergeList);
|
|
loadMergeList(type, response, mergeList);
|
|
}
|
|
}
|
|
@@ -623,38 +651,6 @@ public class MergePersonService extends ServiceImpl<MergePersonMapper, MergePers
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- public long loadConditionMergeList(Aggregate totalAgg, List<String> mergeList, String condition,
|
|
|
|
- String operate, long total, Integer pageNum, Integer pageSize) {
|
|
|
|
- Aggregate terms = totalAgg.nested().aggregations().get("terms");
|
|
|
|
- List<StringTermsBucket> termsBucketList = terms.sterms().buckets().array();
|
|
|
|
- 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.toLowerCase(Locale.ROOT))))
|
|
|
|
- .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);
|
|
|
|
- }
|
|
|
|
- return total;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
public Query loadQueryByType(Integer type,Integer projectId) {
|
|
public Query loadQueryByType(Integer type,Integer projectId) {
|
|
Map<Integer, Query> map = new HashMap<>();
|
|
Map<Integer, Query> map = new HashMap<>();
|
|
Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.project_id").value(projectId));
|
|
Query q1 = QueryBuilders.term(i -> i.field("merge_applicant.project_id").value(projectId));
|