zero před 1 rokem
rodič
revize
30a148ca74

+ 3 - 0
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/DateQueryBuilder.java

@@ -134,6 +134,9 @@ public class DateQueryBuilder implements IQueryBuilder {
                                 .range(range -> range.field(field).gte(JsonData.of(dayTime)).lte(JsonData.of(nextDayTime)));
                         break;
                 }
+            } else {
+                query = QueryBuilders
+                        .range(range -> range.field(field).gte(JsonData.of(1)).lte(JsonData.of(2)));
             }
         }
         return query;

+ 185 - 0
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/PrioritiesNestedQueryBuilder.java

@@ -0,0 +1,185 @@
+package cn.cslg.pas.factorys.EsBuilderFactory;
+
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
+import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders;
+import co.elastic.clients.json.JsonData;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+
+@Component
+public class PrioritiesNestedQueryBuilder implements IQueryBuilder{
+    private String field = "";
+    private String value = "";
+    private String operator = "";
+    public String path = "";
+    public static final int YEAR = 4;
+    public static final int MONTHONE = 6;
+    public static final int MONTH = 7;
+    public static final int DAYONE = 8;
+    public static final int DAY = 10;
+    public static final String EQ = "=";
+
+    @Override
+    public Query creteQuery() throws ParseException {
+        Query query = null;
+        if (value != null && !"".equals(value)) {
+            Calendar calendar = Calendar.getInstance();
+            if (value.length() == YEAR) {
+                SimpleDateFormat format = new SimpleDateFormat("yyyy");
+                Date year = format.parse(value);
+                calendar.setTime(year);
+                String yearTime = String.valueOf(calendar.getTime().getTime());
+                calendar.add(Calendar.YEAR, 1);
+                String yearNextTime = String.valueOf(calendar.getTime().getTime());
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(yearTime)));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(yearTime)));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(yearTime)));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(yearTime)));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(yearTime)).lte(JsonData.of(yearNextTime)));
+                        break;
+                }
+            } else if (value.length() == MONTH || value.length() == MONTHONE) {
+                Date month = new Date();
+                if (value.contains("-")) {
+                    SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM");
+                    month = format2.parse(value);
+                } else if (value.contains("/")) {
+                    SimpleDateFormat format3 = new SimpleDateFormat("yyyy/MM");
+                    month = format3.parse(value);
+                } else {
+                    SimpleDateFormat format1 = new SimpleDateFormat("yyyyMM");
+                    month = format1.parse(value);
+                }
+                calendar.setTime(month);
+                String monthTime = String.valueOf(calendar.getTime().getTime());
+                calendar.add(Calendar.MONTH, 1);
+                String monthNextTime = String.valueOf(calendar.getTime().getTime());
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(monthTime)));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(monthTime)));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(monthTime)));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(monthTime)));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(monthTime)).lte(JsonData.of(monthNextTime)));
+                        break;
+                }
+            } else if (value.length() == DAY || value.length() == DAYONE) {
+                Date day = new Date();
+                if (value.contains("-")) {
+                    SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
+                    day = format2.parse(value);
+                } else if (value.contains("/")) {
+                    SimpleDateFormat format3 = new SimpleDateFormat("yyyy/MM/dd");
+                    day = format3.parse(value);
+                } else {
+                    SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
+                    day = format1.parse(value);
+                }
+                calendar.setTime(day);
+                String dayTime = String.valueOf(day.getTime());
+                calendar.add(Calendar.DAY_OF_MONTH, 1);
+                String nextDayTime = String.valueOf(calendar.getTime().getTime());
+                switch (operator) {
+                    case NumberQueryBuilder.LT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lt(JsonData.of(dayTime)));
+                        break;
+                    case NumberQueryBuilder.LTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).lte(JsonData.of(dayTime)));
+                        break;
+                    case NumberQueryBuilder.GT:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gt(JsonData.of(dayTime)));
+                        break;
+                    case NumberQueryBuilder.GTE:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(dayTime)));
+                        break;
+                    default:
+                        query = QueryBuilders
+                                .range(range -> range.field(field).gte(JsonData.of(dayTime)).lte(JsonData.of(nextDayTime)));
+                        break;
+                }
+            } else {
+                query = QueryBuilders
+                        .range(range -> range.field(field).gte(JsonData.of(1)).lte(JsonData.of(2)));
+            }
+        }
+        Query finalQuery = query;
+        Query nestedQuery = QueryBuilders.nested(z -> z.path(path).query(finalQuery));
+        return nestedQuery;
+    }
+
+    @Override
+    public String getField() {
+        return field;
+    }
+
+    @Override
+    public void setField(String field) {
+        this.field = field;
+    }
+
+    @Override
+    public String getValue() {
+        return value;
+    }
+
+    @Override
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Override
+    public String getOperator() {
+        return operator;
+    }
+
+    @Override
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+
+    @Override
+    public String getPath() {
+        return path;
+    }
+
+    @Override
+    public void setPath(String path) {
+        this.path = path;
+    }
+}

+ 1 - 1
src/main/resources/jsons/patent.json

@@ -876,7 +876,7 @@
     "value": "priorityDate",
     "field": "PRD",
     "esField": "priorities.prioritydate",
-    "esClass": "nestedPersonQueryBuilder",
+    "esClass": "prioritiesNestedQueryBuilder",
     "ifSearch": "true",
     "ifGroup": "true",
     "ifShow": "true",