Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

lwhhszx 1 год назад
Родитель
Сommit
8b826a0b14

+ 116 - 7
src/main/java/cn/cslg/pas/factorys/EsCountAnalyseBuilderFactory/ChildNestedAnalyseBuilder.java

@@ -4,13 +4,15 @@ import co.elastic.clients.elasticsearch._types.aggregations.*;
 import co.elastic.clients.elasticsearch._types.query_dsl.Query;
 import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
-public class ChildNestedAnalyseBuilder {
+@Component
+public class ChildNestedAnalyseBuilder implements IEsCountAnalysisBuilder{
     public String field = "";
     public String valueOne = "";
     public String valueTwo = "";
@@ -46,13 +48,120 @@ public class ChildNestedAnalyseBuilder {
                     put("terms_agg", finalTerms);
                 }}).build();
 
-        Aggregation agg = new Aggregation.Builder().children(new ChildrenAggregation.Builder()
-                .type(path).build())
-                .aggregations(new HashMap() {{
-                    put("childAgg", aggregation);
-                }}).build();
-
+        Aggregation agg = null;
+        if (path.equals("merge_applicant")) {
+            agg = new Aggregation.Builder().children(new ChildrenAggregation.Builder()
+                    .type("merge_applicat").build())
+                    .aggregations(new HashMap() {{
+                        put("childAgg", aggregation);
+                    }}).build();
+        } else {
+            agg = new Aggregation.Builder().children(new ChildrenAggregation.Builder()
+                    .type(path).build())
+                    .aggregations(new HashMap() {{
+                        put("childAgg", aggregation);
+                    }}).build();
+        }
         return agg;
     }
 
+    @Override
+    public String getField() {
+        return field;
+    }
+
+    @Override
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    @Override
+    public String getValueOne() {
+        return valueOne;
+    }
+
+    @Override
+    public void setValueOne(String valueOne) {
+        this.valueOne = valueOne;
+    }
+
+    @Override
+    public String getValueTwo() {
+        return valueTwo;
+    }
+
+    @Override
+    public void setValueTwo(String valueTwo) {
+        this.valueTwo = valueTwo;
+    }
+
+    @Override
+    public Integer getTopN() {
+        return topN;
+    }
+
+    @Override
+    public void setTopN(Integer topN) {
+        this.topN = topN;
+    }
+
+    @Override
+    public String getPath() {
+        return path;
+    }
+
+    @Override
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    @Override
+    public Boolean getIfHaveChild() {
+        return ifHaveChild;
+    }
+
+    @Override
+    public void setIfHaveChild(Boolean ifHaveChild) {
+        this.ifHaveChild = ifHaveChild;
+    }
+
+    @Override
+    public String getFieldType() {
+        return fieldType;
+    }
+
+    @Override
+    public void setFieldType(String fieldType) {
+        this.fieldType = fieldType;
+    }
+
+    @Override
+    public String getFieldId() {
+        return fieldId;
+    }
+
+    @Override
+    public void setFieldId(String fieldId) {
+        this.fieldId = fieldId;
+    }
+
+    @Override
+    public String getFormat() {
+        return format;
+    }
+
+    @Override
+    public void setFormat(String format) {
+        this.format = format;
+    }
+
+    @Override
+    public List<String> getValues() {
+        return values;
+    }
+
+    @Override
+    public void setValues(List<String> values) {
+        this.values = values;
+    }
 }

+ 20 - 1
src/main/java/cn/cslg/pas/service/business/es/EsCountService.java

@@ -38,10 +38,11 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class EsCountService {
     private final List<String> childList = Arrays.asList("field");
-    private final List<String> nestedList = Arrays.asList("PA", "IN", "PE", "SAT", "MAT", "SRH", "MRH", "MIN","PRCO");
+    private final List<String> nestedList = Arrays.asList("PA", "IN", "PE", "SAT", "SRH","PRCO");
     private final List<String> dateList = Arrays.asList("PD", "AD", "GD");
     private final List<String> numberList = Arrays.asList("QPN", "QDPN", "SFN", "IFN", "PFN");
     private final List<String> nestDateList = Arrays.asList("PRD");
+    private final List<String> nestChildList = Arrays.asList("MAT","MRH","MIN");
 
 
     private final ElasticsearchClient client;
@@ -244,6 +245,15 @@ public class EsCountService {
                                 this.getDateAnalysisDTOS(termsAgg, field, topN, detailDTOS, esCountDTO, firstName, map, values);
                             });
                         }
+                    } else if (nestChildList.contains(field)) {
+                        filtersBuckets.forEach(filtersBucket -> {
+                            Aggregate filtersAgg = filtersBucket.aggregations().get("filters_agg");
+                            Aggregate childAgg = filtersAgg.children().aggregations().get("childAgg");
+                            this.getNestedCountDTOS(childAgg, field, topN, detailDTOS, esCountDTO, firstName, map, values);
+                            if (!CollectionUtils.isEmpty(values)) {
+                                esCountDTO.setAllNumber(childAgg.nested().docCount());
+                            }
+                        });
                     } else if (childList.contains(field)) {
                         if (CollectionUtils.isEmpty(values)) {
                             Integer finalFieldType = fieldType;
@@ -289,6 +299,15 @@ public class EsCountService {
                     if (!CollectionUtils.isEmpty(values)) {
                         esCountDTO.setAllNumber(agg.nested().docCount());
                     }
+                } else if (nestDateList.contains(field)) {
+                    Aggregate termsAgg = agg.nested().aggregations().get("terms_agg");
+                    this.getDateCountDTOS(termsAgg, field, topN, format, detailDTOS, esCountDTO);
+                } else if (nestChildList.contains(field)) {
+                    Aggregate childAgg = agg.children().aggregations().get("childAgg");
+                    this.getNestedCountDTOS(childAgg, field, topN, detailDTOS, esCountDTO, firstName, map, values);
+                    if (!CollectionUtils.isEmpty(values)) {
+                        esCountDTO.setAllNumber(childAgg.nested().docCount());
+                    }
                 } else if (childList.contains(field)) {
                     if (CollectionUtils.isEmpty(values)) {
                         this.getChildCountDTOS(agg, field, fieldType, topN, detailDTOS, esCountDTO);

+ 3 - 3
src/main/resources/jsons/esCountAnalysis.json

@@ -197,7 +197,7 @@
     "value": "mergeApplicant",
     "field": "MAT",
     "esField": "merge_applicant.name.raw",
-    "esClass": "nestedCountAnalysisBuilder",
+    "esClass": "childNestedAnalyseBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",
@@ -233,7 +233,7 @@
     "value": "mergeRightHolder",
     "field": "MRH",
     "esField": "merge_right_holder.name.raw",
-    "esClass": "nestedCountAnalysisBuilder",
+    "esClass": "childNestedAnalyseBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",
@@ -257,7 +257,7 @@
     "value": "mergeRightHolder",
     "field": "MIN",
     "esField": "merge_inventor.name.raw",
-    "esClass": "nestedCountAnalysisBuilder",
+    "esClass": "childNestedAnalyseBuilder",
     "ifSearch": "false",
     "ifGroup": "false",
     "ifShow": "true",