|
@@ -2,6 +2,7 @@ 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;
|
|
@@ -20,6 +21,7 @@ public class DateQueryBuilder implements IQueryBuilder {
|
|
|
public static final int MONTH = 7;
|
|
|
public static final int DAYONE = 8;
|
|
|
public static final int DAY = 10;
|
|
|
+ public static final String EQ = "=";
|
|
|
|
|
|
|
|
|
@Override
|
|
@@ -34,11 +36,31 @@ public class DateQueryBuilder implements IQueryBuilder {
|
|
|
String yearTime = String.valueOf(calendar.getTime().getTime());
|
|
|
calendar.add(Calendar.YEAR, 1);
|
|
|
String yearNextTime = String.valueOf(calendar.getTime().getTime());
|
|
|
- query = co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders
|
|
|
- .range(range -> range.field(field).from(yearTime.substring(0,10)).to(yearNextTime.substring(0,10)));
|
|
|
+ switch (operator) {
|
|
|
+ case NumberQueryBuilder.LT:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).lt(JsonData.of(yearTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ case NumberQueryBuilder.LTE:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).lte(JsonData.of(yearTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ case NumberQueryBuilder.GT:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).gt(JsonData.of(yearTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ case NumberQueryBuilder.GTE:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).gte(JsonData.of(yearTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).gte(JsonData.of(yearTime.substring(0, 10))).lte(JsonData.of(yearNextTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ }
|
|
|
} else if (value.length() == MONTH || value.length() == MONTHONE) {
|
|
|
Date month = new Date();
|
|
|
- if (value.contains("_")) {
|
|
|
+ if (value.contains("-")) {
|
|
|
SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM");
|
|
|
month = format2.parse(value);
|
|
|
} else if (value.contains("/")) {
|
|
@@ -52,11 +74,31 @@ public class DateQueryBuilder implements IQueryBuilder {
|
|
|
String monthTime = String.valueOf(calendar.getTime().getTime());
|
|
|
calendar.add(Calendar.MONTH, 1);
|
|
|
String monthNextTime = String.valueOf(calendar.getTime().getTime());
|
|
|
- query = co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders
|
|
|
- .range(range -> range.field(field).from(monthTime.substring(0,10)).to(monthNextTime.substring(0,10)));
|
|
|
+ switch (operator) {
|
|
|
+ case NumberQueryBuilder.LT:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).lt(JsonData.of(monthTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ case NumberQueryBuilder.LTE:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).lte(JsonData.of(monthTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ case NumberQueryBuilder.GT:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).gt(JsonData.of(monthTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ case NumberQueryBuilder.GTE:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).gte(JsonData.of(monthTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).gte(JsonData.of(monthTime.substring(0, 10))).lte(JsonData.of(monthNextTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ }
|
|
|
} else if (value.length() == DAY || value.length() == DAYONE) {
|
|
|
Date day = new Date();
|
|
|
- if (value.contains("_")) {
|
|
|
+ if (value.contains("-")) {
|
|
|
SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
day = format2.parse(value);
|
|
|
} else if (value.contains("/")) {
|
|
@@ -66,9 +108,28 @@ public class DateQueryBuilder implements IQueryBuilder {
|
|
|
SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
|
|
|
day = format1.parse(value);
|
|
|
}
|
|
|
- SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
String dayTime = String.valueOf(day.getTime());
|
|
|
- query = QueryBuilders.match(dayQuery -> dayQuery.field(field).query(dayTime.substring(0, 10)));
|
|
|
+ switch (operator) {
|
|
|
+ case NumberQueryBuilder.LT:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).lt(JsonData.of(dayTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ case NumberQueryBuilder.LTE:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).lte(JsonData.of(dayTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ case NumberQueryBuilder.GT:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).gt(JsonData.of(dayTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ case NumberQueryBuilder.GTE:
|
|
|
+ query = QueryBuilders
|
|
|
+ .range(range -> range.field(field).gte(JsonData.of(dayTime.substring(0, 10))));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ query = QueryBuilders.match(dayQuery -> dayQuery.field(field).query(dayTime.substring(0, 10)));
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return query;
|