forked from github/dataease
fix: 处理日期、时间过滤
This commit is contained in:
parent
f16cb738d1
commit
ad2ce8cd88
@ -8,7 +8,9 @@ import io.dataease.plugins.common.base.domain.Datasource;
|
|||||||
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
|
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
|
||||||
import io.dataease.plugins.common.constants.DeTypeConstants;
|
import io.dataease.plugins.common.constants.DeTypeConstants;
|
||||||
import io.dataease.plugins.common.constants.datasource.DorisConstants;
|
import io.dataease.plugins.common.constants.datasource.DorisConstants;
|
||||||
|
import io.dataease.plugins.common.constants.datasource.MySQLConstants;
|
||||||
import io.dataease.plugins.common.constants.datasource.SQLConstants;
|
import io.dataease.plugins.common.constants.datasource.SQLConstants;
|
||||||
|
import io.dataease.plugins.common.constants.engine.MysqlConstants;
|
||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
|
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
|
||||||
import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO;
|
import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO;
|
||||||
@ -1074,11 +1076,20 @@ public class DorisQueryProvider extends QueryProvider {
|
|||||||
if (field.getDeType() == 1) {
|
if (field.getDeType() == 1) {
|
||||||
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
|
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
|
||||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
|
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
|
||||||
whereName = String.format(DorisConstants.DATE_FORMAT, originName, format);
|
String date = String.format(MySQLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
if(request.getOperator().equals("between")){
|
||||||
|
whereName = date;
|
||||||
|
}else {
|
||||||
|
whereName = String.format(MySQLConstants.DATE_FORMAT, date, format);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
||||||
String cast = String.format(DorisConstants.CAST, originName, DorisConstants.DEFAULT_INT_FORMAT) + "/1000";
|
if(request.getOperator().equals("between")){
|
||||||
whereName = String.format(DorisConstants.FROM_UNIXTIME, cast, format);
|
whereName = originName;
|
||||||
|
}else {
|
||||||
|
String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000";
|
||||||
|
whereName = String.format(DorisConstants.FROM_UNIXTIME, cast, format);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (field.getDeType() == 0) {
|
} else if (field.getDeType() == 0) {
|
||||||
whereName = String.format(DorisConstants.CAST, originName, DorisConstants.VARCHAR);
|
whereName = String.format(DorisConstants.CAST, originName, DorisConstants.VARCHAR);
|
||||||
@ -1115,7 +1126,7 @@ public class DorisQueryProvider extends QueryProvider {
|
|||||||
whereName = "upper(" + whereName + ")";
|
whereName = "upper(" + whereName + ")";
|
||||||
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
|
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
|
||||||
if (request.getDatasetTableField().getDeType() == 1) {
|
if (request.getDatasetTableField().getDeType() == 1) {
|
||||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
||||||
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
|
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
|
||||||
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
|
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
|
||||||
whereValue = String.format(DorisConstants.WHERE_BETWEEN, startTime, endTime);
|
whereValue = String.format(DorisConstants.WHERE_BETWEEN, startTime, endTime);
|
||||||
|
@ -7,6 +7,8 @@ import io.dataease.plugins.common.base.domain.DatasetTableFieldExample;
|
|||||||
import io.dataease.plugins.common.base.domain.Datasource;
|
import io.dataease.plugins.common.base.domain.Datasource;
|
||||||
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
|
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
|
||||||
import io.dataease.plugins.common.constants.DeTypeConstants;
|
import io.dataease.plugins.common.constants.DeTypeConstants;
|
||||||
|
import io.dataease.plugins.common.constants.datasource.DorisConstants;
|
||||||
|
import io.dataease.plugins.common.constants.datasource.MySQLConstants;
|
||||||
import io.dataease.plugins.common.constants.datasource.SQLConstants;
|
import io.dataease.plugins.common.constants.datasource.SQLConstants;
|
||||||
import io.dataease.plugins.common.constants.engine.MysqlConstants;
|
import io.dataease.plugins.common.constants.engine.MysqlConstants;
|
||||||
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
|
||||||
@ -1061,10 +1063,20 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
if (field.getDeType() == 1) {
|
if (field.getDeType() == 1) {
|
||||||
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
|
String format = transDateFormat(request.getDateStyle(), request.getDatePattern());
|
||||||
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
|
if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) {
|
||||||
whereName = String.format(MysqlConstants.DATE_FORMAT, originName, format);
|
String date = String.format(MySQLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT);
|
||||||
|
if(request.getOperator().equals("between")){
|
||||||
|
whereName = date;
|
||||||
|
}else {
|
||||||
|
whereName = String.format(MySQLConstants.DATE_FORMAT, date, format);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) {
|
||||||
whereName = originName;
|
if(request.getOperator().equals("between")){
|
||||||
|
whereName = originName;
|
||||||
|
}else {
|
||||||
|
String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000";
|
||||||
|
whereName = String.format(DorisConstants.FROM_UNIXTIME, cast, format);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (field.getDeType() == 0 && field.getDeExtractType() == 0) {
|
} else if (field.getDeType() == 0 && field.getDeExtractType() == 0) {
|
||||||
whereName = String.format(MysqlConstants.CAST, originName, MysqlConstants.CHAR);
|
whereName = String.format(MysqlConstants.CAST, originName, MysqlConstants.CHAR);
|
||||||
|
Loading…
Reference in New Issue
Block a user