提交 c5b7a766 authored 作者: junjie's avatar junjie

feat(backend):仪表盘支持日期过滤;doris过滤 test

上级 42b15990
...@@ -9,7 +9,9 @@ import org.apache.commons.lang3.StringUtils; ...@@ -9,7 +9,9 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -255,6 +257,8 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -255,6 +257,8 @@ public class DorisQueryProvider extends QueryProvider {
return " IS NULL "; return " IS NULL ";
case "not_null": case "not_null":
return " IS NOT NULL "; return " IS NOT NULL ";
case "between":
return " BETWEEN ";
default: default:
return ""; return "";
} }
...@@ -285,6 +289,11 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -285,6 +289,11 @@ public class DorisQueryProvider extends QueryProvider {
filter.append("('").append(StringUtils.join(value, "','")).append("')"); filter.append("('").append(StringUtils.join(value, "','")).append("')");
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
filter.append("'%").append(value.get(0)).append("%'"); filter.append("'%").append(value.get(0)).append("%'");
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
filter.append("'").append(startTime).append("' AND '").append(endTime).append("'");
} else { } else {
filter.append("'").append(value.get(0)).append("'"); filter.append("'").append(value.get(0)).append("'");
} }
......
...@@ -9,7 +9,9 @@ import org.apache.commons.lang3.StringUtils; ...@@ -9,7 +9,9 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -262,6 +264,8 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -262,6 +264,8 @@ public class MysqlQueryProvider extends QueryProvider {
return " IS NULL "; return " IS NULL ";
case "not_null": case "not_null":
return " IS NOT NULL "; return " IS NOT NULL ";
case "between":
return " BETWEEN ";
default: default:
return ""; return "";
} }
...@@ -292,6 +296,11 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -292,6 +296,11 @@ public class MysqlQueryProvider extends QueryProvider {
filter.append("('").append(StringUtils.join(value, "','")).append("')"); filter.append("('").append(StringUtils.join(value, "','")).append("')");
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) { } else if (StringUtils.containsIgnoreCase(request.getOperator(), "like")) {
filter.append("'%").append(value.get(0)).append("%'"); filter.append("'%").append(value.get(0)).append("%'");
} else if (StringUtils.containsIgnoreCase(request.getOperator(), "between")) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(0))));
String endTime = simpleDateFormat.format(new Date(Long.parseLong(value.get(1))));
filter.append("'").append(startTime).append("' AND '").append(endTime).append("'");
} else { } else {
filter.append("'").append(value.get(0)).append("'"); filter.append("'").append(value.get(0)).append("'");
} }
......
...@@ -3,6 +3,7 @@ package io.dataease.service.dataset.impl.direct; ...@@ -3,6 +3,7 @@ package io.dataease.service.dataset.impl.direct;
import io.dataease.base.domain.DatasetTable; import io.dataease.base.domain.DatasetTable;
import io.dataease.base.domain.DatasetTableField; import io.dataease.base.domain.DatasetTableField;
import io.dataease.base.domain.Datasource; import io.dataease.base.domain.Datasource;
import io.dataease.commons.utils.CommonBeanFactory;
import io.dataease.datasource.provider.DatasourceProvider; import io.dataease.datasource.provider.DatasourceProvider;
import io.dataease.datasource.provider.ProviderFactory; import io.dataease.datasource.provider.ProviderFactory;
import io.dataease.datasource.request.DatasourceRequest; import io.dataease.datasource.request.DatasourceRequest;
...@@ -53,15 +54,26 @@ public class DirectFieldService implements DataSetFieldService { ...@@ -53,15 +54,26 @@ public class DirectFieldService implements DataSetFieldService {
if (ObjectUtils.isEmpty(datasetTable) || StringUtils.isEmpty(datasetTable.getName())) return null; if (ObjectUtils.isEmpty(datasetTable) || StringUtils.isEmpty(datasetTable.getName())) return null;
String tableName = datasetTable.getName(); String tableName = datasetTable.getName();
DatasourceRequest datasourceRequest = new DatasourceRequest();
DatasourceProvider datasourceProvider;
if (datasetTable.getMode() == 0) {
String dataSourceId = datasetTable.getDataSourceId(); String dataSourceId = datasetTable.getDataSourceId();
if (StringUtils.isEmpty(dataSourceId)) return null; if (StringUtils.isEmpty(dataSourceId)) return null;
Datasource ds = datasourceService.get(dataSourceId); Datasource ds = datasourceService.get(dataSourceId);
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType()); datasourceProvider = ProviderFactory.getProvider(ds.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
String querySQL = qp.createQuerySQL(tableName, Collections.singletonList(field));
datasourceRequest.setQuery(querySQL);
} else {
Datasource ds = (Datasource) CommonBeanFactory.getBean("DorisDatasource");
datasourceProvider = ProviderFactory.getProvider(ds.getType());
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
String querySQL = qp.createQuerySQL(tableName, Collections.singletonList(field)); String querySQL = qp.createQuerySQL(tableName, Collections.singletonList(field));
datasourceRequest.setQuery(querySQL); datasourceRequest.setQuery(querySQL);
}
try { try {
List<String[]> rows = datasourceProvider.getData(datasourceRequest); List<String[]> rows = datasourceProvider.getData(datasourceRequest);
List<Object> results = rows.stream().map(row -> row[0]).distinct().collect(Collectors.toList()); List<Object> results = rows.stream().map(row -> row[0]).distinct().collect(Collectors.toList());
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论