feat: 参数管理

This commit is contained in:
taojinlong 2022-06-16 14:04:39 +08:00
parent 9637bef109
commit 4b5788b63c
43 changed files with 586 additions and 202 deletions

View File

@ -336,6 +336,12 @@
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId> <artifactId>commons-pool2</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.4</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -11,6 +11,8 @@ import io.dataease.controller.request.dataset.DataSetTableRequest;
import io.dataease.controller.response.DataSetDetail; import io.dataease.controller.response.DataSetDetail;
import io.dataease.dto.dataset.DataSetTableDTO; import io.dataease.dto.dataset.DataSetTableDTO;
import io.dataease.dto.dataset.ExcelFileData; import io.dataease.dto.dataset.ExcelFileData;
import io.dataease.dto.dataset.SqlVariableDetails;
import io.dataease.plugins.common.base.domain.ChartView;
import io.dataease.plugins.common.base.domain.DatasetTable; import io.dataease.plugins.common.base.domain.DatasetTable;
import io.dataease.plugins.common.base.domain.DatasetTableField; import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.base.domain.DatasetTableIncrementalConfig; import io.dataease.plugins.common.base.domain.DatasetTableIncrementalConfig;
@ -203,4 +205,10 @@ public class DataSetTableController {
public Map<String, Object> unionPreview(@RequestBody DataSetTableRequest dataSetTableRequest) throws Exception { public Map<String, Object> unionPreview(@RequestBody DataSetTableRequest dataSetTableRequest) throws Exception {
return dataSetTableService.getUnionPreview(dataSetTableRequest); return dataSetTableService.getUnionPreview(dataSetTableRequest);
} }
@ApiOperation("根据仪表板视图ID查询数据集变量")
@PostMapping("/paramsWithIds")
List<SqlVariableDetails> paramsWithIds(@RequestBody List<String> viewIds){
return dataSetTableService.paramsWithIds(viewIds);
};
} }

View File

@ -167,15 +167,6 @@ public class DataSetTableFieldController {
} }
List<Object> list = results.stream().distinct().collect(Collectors.toList()); List<Object> list = results.stream().distinct().collect(Collectors.toList());
/*ArrayList<Object> list = results.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(t -> {
if (ObjectUtils.isEmpty(t))
return "";
return t.toString();
}))),
ArrayList::new));*/
return list; return list;
} }

View File

@ -43,7 +43,6 @@ public class DataSetTableTaskController {
return dataSetTableTaskService.save(dataSetTaskRequest); return dataSetTableTaskService.save(dataSetTaskRequest);
} }
//TODO
@ApiOperation("删除") @ApiOperation("删除")
@PostMapping("delete/{id}") @PostMapping("delete/{id}")
public void delete(@PathVariable String id) { public void delete(@PathVariable String id) {

View File

@ -0,0 +1,13 @@
package io.dataease.dto.dataset;
import lombok.Data;
@Data
public class SqlVariableDetails {
private String variableName;
private String alias;
private String type;
private String details;
private String defaultValue;
}

View File

@ -3,7 +3,7 @@
<mapper namespace="io.dataease.ext.ExtDataSetTableMapper"> <mapper namespace="io.dataease.ext.ExtDataSetTableMapper">
<resultMap id="BaseResultMapDTO" type="io.dataease.dto.dataset.DataSetTableDTO" <resultMap id="BaseResultMapDTO" type="io.dataease.dto.dataset.DataSetTableDTO"
extends="io.dataease.plugins.common.base.mapper.DatasetTableMapper.ResultMapWithBLOBs"> extends="io.dataease.plugins.common.base.mapper.DatasetTableMapper.BaseResultMap">
<result column="privileges" property="privileges"/> <result column="privileges" property="privileges"/>
</resultMap> </resultMap>

View File

@ -33,7 +33,7 @@ public class DatasetCheckListener implements ApplicationListener<ApplicationRead
// 项目启动查找是否有'自定义数据集' // 项目启动查找是否有'自定义数据集'
DatasetTableExample datasetTableExample = new DatasetTableExample(); DatasetTableExample datasetTableExample = new DatasetTableExample();
datasetTableExample.createCriteria().andTypeEqualTo("custom"); datasetTableExample.createCriteria().andTypeEqualTo("custom");
List<DatasetTable> datasetTables = datasetTableMapper.selectByExampleWithBLOBs(datasetTableExample); List<DatasetTable> datasetTables = datasetTableMapper.selectByExample(datasetTableExample);
CacheUtils.put(CACHE_NAME, CACHE_KEY, CollectionUtils.isEmpty(datasetTables), null, null); CacheUtils.put(CACHE_NAME, CACHE_KEY, CollectionUtils.isEmpty(datasetTables), null, null);
} }
} }

View File

@ -10,7 +10,7 @@ import io.dataease.controller.request.datasource.es.RequestWithCursor;
import io.dataease.dto.datasource.EsConfiguration; import io.dataease.dto.datasource.EsConfiguration;
import io.dataease.exception.DataEaseException; import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator; import io.dataease.i18n.Translator;
import io.dataease.plugins.common.constants.EsSqlLConstants; import io.dataease.plugins.common.constants.datasource.EsSqlLConstants;
import io.dataease.plugins.common.dto.datasource.TableDesc; import io.dataease.plugins.common.dto.datasource.TableDesc;
import io.dataease.plugins.common.dto.datasource.TableField; import io.dataease.plugins.common.dto.datasource.TableField;
import io.dataease.plugins.common.request.datasource.DatasourceRequest; import io.dataease.plugins.common.request.datasource.DatasourceRequest;

View File

@ -5,8 +5,8 @@ import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.base.domain.DatasetTableFieldExample; 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.DorisConstants; import io.dataease.plugins.common.constants.datasource.DorisConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants;
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;
@ -31,7 +31,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
/** /**
* @Author gin * @Author gin

View File

@ -5,8 +5,8 @@ import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.base.domain.DatasetTableFieldExample; 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.datasource.SQLConstants;
import io.dataease.plugins.common.constants.engine.MysqlConstants; import io.dataease.plugins.common.constants.engine.MysqlConstants;
import io.dataease.plugins.common.constants.SQLConstants;
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;
@ -31,7 +31,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
/** /**
* @Author gin * @Author gin

View File

@ -5,10 +5,10 @@ import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.base.domain.DatasetTableFieldExample; 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.CKConstants; import io.dataease.plugins.common.constants.datasource.CKConstants;
import io.dataease.plugins.common.constants.Db2Constants; import io.dataease.plugins.common.constants.datasource.Db2Constants;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants;
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;
@ -33,7 +33,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
/** /**
* @Author gin * @Author gin

View File

@ -7,10 +7,9 @@ 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.dto.datasource.Db2Configuration; import io.dataease.dto.datasource.Db2Configuration;
import io.dataease.plugins.common.constants.Db2Constants; import io.dataease.plugins.common.constants.datasource.Db2Constants;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.constants.EsSqlLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants;
import io.dataease.plugins.common.constants.SQLConstants;
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;
@ -35,7 +34,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
@Service("db2QueryProvider") @Service("db2QueryProvider")
public class Db2QueryProvider extends QueryProvider { public class Db2QueryProvider extends QueryProvider {

View File

@ -6,9 +6,9 @@ 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.EsSqlLConstants; import io.dataease.plugins.common.constants.datasource.EsSqlLConstants;
import io.dataease.plugins.common.constants.HiveConstants; import io.dataease.plugins.common.constants.datasource.HiveConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants;
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;
@ -33,7 +33,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
@Service("esQueryProvider") @Service("esQueryProvider")
public class EsQueryProvider extends QueryProvider { public class EsQueryProvider extends QueryProvider {

View File

@ -6,9 +6,9 @@ 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.HiveConstants; import io.dataease.plugins.common.constants.datasource.HiveConstants;
import io.dataease.plugins.common.constants.ImpalaConstants; import io.dataease.plugins.common.constants.datasource.ImpalaConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants;
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;
@ -33,7 +33,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
/** /**
* @Author gin * @Author gin

View File

@ -6,9 +6,9 @@ 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.ImpalaConstants; import io.dataease.plugins.common.constants.datasource.ImpalaConstants;
import io.dataease.plugins.common.constants.MongoConstants; import io.dataease.plugins.common.constants.datasource.MongoConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants;
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;
@ -33,7 +33,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
@Service("impalaQueryProvider") @Service("impalaQueryProvider")

View File

@ -6,9 +6,9 @@ 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.MongoConstants; import io.dataease.plugins.common.constants.datasource.MongoConstants;
import io.dataease.plugins.common.constants.MySQLConstants; import io.dataease.plugins.common.constants.datasource.MySQLConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants;
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;
@ -33,7 +33,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
/** /**
* @Author gin * @Author gin

View File

@ -5,9 +5,9 @@ import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.base.domain.DatasetTableFieldExample; 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.MySQLConstants; import io.dataease.plugins.common.constants.datasource.MySQLConstants;
import io.dataease.plugins.common.constants.engine.MysqlConstants; import io.dataease.plugins.common.constants.engine.MysqlConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants;
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;
@ -32,7 +32,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
/** /**
* @Author gin * @Author gin

View File

@ -7,9 +7,9 @@ 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.dto.datasource.OracleConfiguration; import io.dataease.dto.datasource.OracleConfiguration;
import io.dataease.plugins.common.constants.MySQLConstants; import io.dataease.plugins.common.constants.datasource.MySQLConstants;
import io.dataease.plugins.common.constants.OracleConstants; import io.dataease.plugins.common.constants.datasource.OracleConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants;
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;
@ -35,7 +35,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
/** /**
* @Author gin * @Author gin

View File

@ -7,6 +7,9 @@ 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.*; import io.dataease.plugins.common.constants.*;
import io.dataease.plugins.common.constants.datasource.PgConstants;
import io.dataease.plugins.common.constants.datasource.SQLConstants;
import io.dataease.plugins.common.constants.datasource.SqlServerSQLConstants;
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;
@ -32,7 +35,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
@Service("pgQueryProvider") @Service("pgQueryProvider")

View File

@ -7,6 +7,10 @@ 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.*; import io.dataease.plugins.common.constants.*;
import io.dataease.plugins.common.constants.datasource.PgConstants;
import io.dataease.plugins.common.constants.datasource.RedshiftConstants;
import io.dataease.plugins.common.constants.datasource.SQLConstants;
import io.dataease.plugins.common.constants.datasource.SqlServerSQLConstants;
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;
@ -32,7 +36,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
/** /**

View File

@ -7,9 +7,9 @@ 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.ImpalaConstants; import io.dataease.plugins.common.constants.datasource.ImpalaConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants;
import io.dataease.plugins.common.constants.SqlServerSQLConstants; import io.dataease.plugins.common.constants.datasource.SqlServerSQLConstants;
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;
@ -35,7 +35,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
@Service("sqlServerQueryProvider") @Service("sqlServerQueryProvider")
public class SqlserverQueryProvider extends QueryProvider { public class SqlserverQueryProvider extends QueryProvider {

View File

@ -27,6 +27,7 @@ import io.dataease.plugins.common.base.domain.*;
import io.dataease.plugins.common.base.mapper.ChartViewCacheMapper; import io.dataease.plugins.common.base.mapper.ChartViewCacheMapper;
import io.dataease.plugins.common.base.mapper.ChartViewMapper; import io.dataease.plugins.common.base.mapper.ChartViewMapper;
import io.dataease.plugins.common.base.mapper.PanelViewMapper; import io.dataease.plugins.common.base.mapper.PanelViewMapper;
import io.dataease.plugins.common.constants.DatasetType;
import io.dataease.plugins.common.dto.chart.ChartFieldCompareDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCompareDTO;
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;
@ -435,7 +436,7 @@ public class ChartViewService {
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
DataTableInfoDTO dataTableInfoDTO = gson.fromJson(table.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dataTableInfoDTO = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
if (StringUtils.equalsIgnoreCase(table.getType(), "db")) { if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.DB.name())) {
datasourceRequest.setTable(dataTableInfoDTO.getTable()); datasourceRequest.setTable(dataTableInfoDTO.getTable());
if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) { if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
datasourceRequest.setQuery(qp.getSQLSummary(dataTableInfoDTO.getTable(), yAxis, fieldCustomFilter, extFilterList, view, ds)); datasourceRequest.setQuery(qp.getSQLSummary(dataTableInfoDTO.getTable(), yAxis, fieldCustomFilter, extFilterList, view, ds));
@ -448,19 +449,23 @@ public class ChartViewService {
} else { } else {
datasourceRequest.setQuery(qp.getSQL(dataTableInfoDTO.getTable(), xAxis, yAxis, fieldCustomFilter, extFilterList, ds, view)); datasourceRequest.setQuery(qp.getSQL(dataTableInfoDTO.getTable(), xAxis, yAxis, fieldCustomFilter, extFilterList, ds, view));
} }
} else if (StringUtils.equalsIgnoreCase(table.getType(), "sql")) { } else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.SQL.name())) {
if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) { String sql = dataTableInfoDTO.getSql();
datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(dataTableInfoDTO.getSql(), yAxis, fieldCustomFilter, extFilterList, view)); if (CollectionUtils.isNotEmpty(requestList.getFilter())) {
} else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { sql = handleVariable(sql, requestList);
datasourceRequest.setQuery(qp.getSQLAsTmpStack(dataTableInfoDTO.getSql(), xAxis, yAxis, fieldCustomFilter, extFilterList, extStack, view));
} else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) {
datasourceRequest.setQuery(qp.getSQLAsTmpScatter(dataTableInfoDTO.getSql(), xAxis, yAxis, fieldCustomFilter, extFilterList, extBubble, view));
} else if (StringUtils.equalsIgnoreCase("table-info", view.getType())) {
datasourceRequest.setQuery(qp.getSQLAsTmpTableInfo(dataTableInfoDTO.getSql(), xAxis, fieldCustomFilter, extFilterList, ds, view));
} else {
datasourceRequest.setQuery(qp.getSQLAsTmp(dataTableInfoDTO.getSql(), xAxis, yAxis, fieldCustomFilter, extFilterList, view));
} }
} else if (StringUtils.equalsIgnoreCase(table.getType(), "custom")) { if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, extFilterList, view));
} else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) {
datasourceRequest.setQuery(qp.getSQLAsTmpStack(sql, xAxis, yAxis, fieldCustomFilter, extFilterList, extStack, view));
} else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) {
datasourceRequest.setQuery(qp.getSQLAsTmpScatter(sql, xAxis, yAxis, fieldCustomFilter, extFilterList, extBubble, view));
} else if (StringUtils.equalsIgnoreCase("table-info", view.getType())) {
datasourceRequest.setQuery(qp.getSQLAsTmpTableInfo(sql, xAxis, fieldCustomFilter, extFilterList, ds, view));
} else {
datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, extFilterList, view));
}
} else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.CUSTOM.name())) {
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId()); List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
String sql = dataSetTableService.getCustomSQLDatasource(dt, list, ds); String sql = dataSetTableService.getCustomSQLDatasource(dt, list, ds);
@ -475,7 +480,7 @@ public class ChartViewService {
} else { } else {
datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, extFilterList, view)); datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, extFilterList, view));
} }
} else if (StringUtils.equalsIgnoreCase(table.getType(), "union")) { } else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.UNION.name())) {
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
Map<String, Object> sqlMap = dataSetTableService.getUnionSQLDatasource(dt, ds); Map<String, Object> sqlMap = dataSetTableService.getUnionSQLDatasource(dt, ds);
String sql = (String) sqlMap.get("sql"); String sql = (String) sqlMap.get("sql");
@ -494,9 +499,6 @@ public class ChartViewService {
} }
data = datasourceProvider.getData(datasourceRequest); data = datasourceProvider.getData(datasourceRequest);
} else if (table.getMode() == 1) {// 抽取 } else if (table.getMode() == 1) {// 抽取
// 连接doris构建doris数据源查询
// Datasource ds = engineService.getDeEngine();
// DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
String tableName = "ds_" + table.getId().replaceAll("-", "_"); String tableName = "ds_" + table.getId().replaceAll("-", "_");
datasourceRequest.setTable(tableName); datasourceRequest.setTable(tableName);
@ -807,7 +809,7 @@ public class ChartViewService {
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
DataTableInfoDTO dataTableInfoDTO = gson.fromJson(table.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dataTableInfoDTO = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
if (StringUtils.equalsIgnoreCase(table.getType(), "db")) { if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.DB.name())) {
datasourceRequest.setTable(dataTableInfoDTO.getTable()); datasourceRequest.setTable(dataTableInfoDTO.getTable());
if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) { if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
datasourceRequest.setQuery(qp.getSQLSummary(dataTableInfoDTO.getTable(), yAxis, fieldCustomFilter, extFilterList, view, ds)); datasourceRequest.setQuery(qp.getSQLSummary(dataTableInfoDTO.getTable(), yAxis, fieldCustomFilter, extFilterList, view, ds));
@ -820,19 +822,25 @@ public class ChartViewService {
} else { } else {
datasourceRequest.setQuery(qp.getSQL(dataTableInfoDTO.getTable(), xAxis, yAxis, fieldCustomFilter, extFilterList, ds, view)); datasourceRequest.setQuery(qp.getSQL(dataTableInfoDTO.getTable(), xAxis, yAxis, fieldCustomFilter, extFilterList, ds, view));
} }
} else if (StringUtils.equalsIgnoreCase(table.getType(), "sql")) { } else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.SQL.name())) {
if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) { String sql = dataTableInfoDTO.getSql();
datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(dataTableInfoDTO.getSql(), yAxis, fieldCustomFilter, extFilterList, view)); if (CollectionUtils.isNotEmpty(requestList.getFilter())) {
} else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) { sql = handleVariable(sql, requestList);
datasourceRequest.setQuery(qp.getSQLAsTmpStack(dataTableInfoDTO.getSql(), xAxis, yAxis, fieldCustomFilter, extFilterList, extStack, view));
} else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) {
datasourceRequest.setQuery(qp.getSQLAsTmpScatter(dataTableInfoDTO.getSql(), xAxis, yAxis, fieldCustomFilter, extFilterList, extBubble, view));
} else if (StringUtils.equalsIgnoreCase("table-info", view.getType())) {
datasourceRequest.setQuery(qp.getSQLAsTmpTableInfo(dataTableInfoDTO.getSql(), xAxis, fieldCustomFilter, extFilterList, ds, view));
} else {
datasourceRequest.setQuery(qp.getSQLAsTmp(dataTableInfoDTO.getSql(), xAxis, yAxis, fieldCustomFilter, extFilterList, view));
} }
} else if (StringUtils.equalsIgnoreCase(table.getType(), "custom")) {
if (StringUtils.equalsIgnoreCase("text", view.getType()) || StringUtils.equalsIgnoreCase("gauge", view.getType()) || StringUtils.equalsIgnoreCase("liquid", view.getType())) {
datasourceRequest.setQuery(qp.getSQLSummaryAsTmp(sql, yAxis, fieldCustomFilter, extFilterList, view));
} else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) {
datasourceRequest.setQuery(qp.getSQLAsTmpStack(sql, xAxis, yAxis, fieldCustomFilter, extFilterList, extStack, view));
} else if (StringUtils.containsIgnoreCase(view.getType(), "scatter")) {
datasourceRequest.setQuery(qp.getSQLAsTmpScatter(sql, xAxis, yAxis, fieldCustomFilter, extFilterList, extBubble, view));
} else if (StringUtils.equalsIgnoreCase("table-info", view.getType())) {
datasourceRequest.setQuery(qp.getSQLAsTmpTableInfo(sql, xAxis, fieldCustomFilter, extFilterList, ds, view));
} else {
datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, extFilterList, view));
}
System.out.println(datasourceRequest.getQuery());
} else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.CUSTOM.name())) {
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId()); List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
String sql = dataSetTableService.getCustomSQLDatasource(dt, list, ds); String sql = dataSetTableService.getCustomSQLDatasource(dt, list, ds);
@ -847,7 +855,7 @@ public class ChartViewService {
} else { } else {
datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, extFilterList, view)); datasourceRequest.setQuery(qp.getSQLAsTmp(sql, xAxis, yAxis, fieldCustomFilter, extFilterList, view));
} }
} else if (StringUtils.equalsIgnoreCase(table.getType(), "union")) { } else if (StringUtils.equalsIgnoreCase(table.getType(), DatasetType.UNION.name())) {
DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dt = gson.fromJson(table.getInfo(), DataTableInfoDTO.class);
Map<String, Object> sqlMap = dataSetTableService.getUnionSQLDatasource(dt, ds); Map<String, Object> sqlMap = dataSetTableService.getUnionSQLDatasource(dt, ds);
String sql = (String) sqlMap.get("sql"); String sql = (String) sqlMap.get("sql");
@ -1490,4 +1498,22 @@ public class ChartViewService {
chartViewMapper.updateByPrimaryKeySelective(chartView); chartViewMapper.updateByPrimaryKeySelective(chartView);
} }
private String handleVariable(String sql, ChartExtRequest requestList){
for (ChartExtFilterRequest chartExtFilterRequest : requestList.getFilter()) {
chartExtFilterRequest.getParameters();
if(CollectionUtils.isEmpty(chartExtFilterRequest.getValue())){
continue;
}
if(chartExtFilterRequest.getValue().size() > 1){
for (String parameter : chartExtFilterRequest.getParameters()) {
sql = sql.replace("${" + parameter + "}", String.join(",", chartExtFilterRequest.getValue()));
}
}else {
for (String parameter : chartExtFilterRequest.getParameters()) {
sql = sql.replace("${" + parameter + "}", chartExtFilterRequest.getValue().get(0));
}
}
}
return sql;
}
} }

View File

@ -3,12 +3,14 @@ package io.dataease.service.chart;
import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.ReflectUtil;
import com.google.gson.Gson; import com.google.gson.Gson;
import io.dataease.commons.model.PluginViewSetImpl; import io.dataease.commons.model.PluginViewSetImpl;
import io.dataease.commons.utils.TableUtils;
import io.dataease.dto.dataset.DataSetTableUnionDTO; import io.dataease.dto.dataset.DataSetTableUnionDTO;
import io.dataease.dto.dataset.DataTableInfoDTO; import io.dataease.dto.dataset.DataTableInfoDTO;
import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs; import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs;
import io.dataease.plugins.common.base.domain.DatasetTableField; import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.DatasetType;
import io.dataease.plugins.common.constants.datasource.SQLConstants;
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;
import io.dataease.plugins.common.dto.sqlObj.SQLObj; import io.dataease.plugins.common.dto.sqlObj.SQLObj;
@ -30,7 +32,7 @@ import java.lang.reflect.Method;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.dataease.plugins.common.constants.SQLConstants.TABLE_ALIAS_PREFIX; import static io.dataease.plugins.common.constants.datasource.SQLConstants.TABLE_ALIAS_PREFIX;
@Service @Service
public class ViewPluginBaseServiceImpl implements ViewPluginBaseService { public class ViewPluginBaseServiceImpl implements ViewPluginBaseService {
@ -97,24 +99,22 @@ public class ViewPluginBaseServiceImpl implements ViewPluginBaseService {
String tableName = null; String tableName = null;
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(pluginViewSet.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(pluginViewSet.getInfo(), DataTableInfoDTO.class);
if (ObjectUtils.isNotEmpty(pluginViewSet.getMode()) && 1 == pluginViewSet.getMode()) { if (ObjectUtils.isNotEmpty(pluginViewSet.getMode()) && 1 == pluginViewSet.getMode()) {
tableName = TableUtils.tableName(pluginViewSet.getTabelId());
tableName = "ds_" + pluginViewSet.getTabelId().replaceAll("-", "_");
}else { }else {
switch (pluginViewSet.getType()) { switch (DatasetType.valueOf(pluginViewSet.getType())) {
case "db": case DB:
tableName = dataTableInfoDTO.getTable(); tableName = dataTableInfoDTO.getTable();
break; break;
case "sql": case SQL:
tableName = dataTableInfoDTO.getSql(); tableName = dataSetTableService.handleVariableDefaultValue(dataTableInfoDTO.getSql(), pluginViewSet.getSqlVariableDetails());
break; break;
case "custom": case CUSTOM:
List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId()); List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId());
Datasource ds = new Datasource(); Datasource ds = new Datasource();
ds.setType(pluginViewSet.getDsType()); ds.setType(pluginViewSet.getDsType());
tableName = dataSetTableService.getCustomSQLDatasource(dataTableInfoDTO, list, ds); tableName = dataSetTableService.getCustomSQLDatasource(dataTableInfoDTO, list, ds);
break; break;
case "union": case UNION:
Datasource datasource = new Datasource(); Datasource datasource = new Datasource();
datasource.setType(pluginViewSet.getDsType()); datasource.setType(pluginViewSet.getDsType());
Map<String, Object> sqlMap = dataSetTableService.getUnionSQLDatasource(dataTableInfoDTO, datasource); Map<String, Object> sqlMap = dataSetTableService.getUnionSQLDatasource(dataTableInfoDTO, datasource);
@ -129,19 +129,12 @@ public class ViewPluginBaseServiceImpl implements ViewPluginBaseService {
String tabelName = (tableName.startsWith("(") && tableName.endsWith(")")) ? tableName : String.format(keyword, tableName); String tabelName = (tableName.startsWith("(") && tableName.endsWith(")")) ? tableName : String.format(keyword, tableName);
String tabelAlias = String.format(TABLE_ALIAS_PREFIX, 0); String tabelAlias = String.format(TABLE_ALIAS_PREFIX, 0);
PluginViewSQL tableObj = PluginViewSQL.builder().tableName(tabelName).tableAlias(tabelAlias).build(); PluginViewSQL tableObj = PluginViewSQL.builder().tableName(tabelName).tableAlias(tabelAlias).build();
QueryProvider queryProvider = ProviderFactory.getQueryProvider(pluginViewSet.getDsType()); QueryProvider queryProvider = ProviderFactory.getQueryProvider(pluginViewSet.getDsType());
SQLObj sqlObj = SQLObj.builder().tableName(tabelName).tableAlias(tabelAlias).build(); SQLObj sqlObj = SQLObj.builder().tableName(tabelName).tableAlias(tabelAlias).build();
PluginViewSetImpl child = (PluginViewSetImpl)pluginViewSet; PluginViewSetImpl child = (PluginViewSetImpl)pluginViewSet;
queryProvider.setSchema(sqlObj, child.getDs()); queryProvider.setSchema(sqlObj, child.getDs());
// String methodName = "setSchema";
// execProviderMethod(queryProvider, methodName, sqlObj, child.getDs());
tableObj.setTableName(sqlObj.getTableName()); tableObj.setTableName(sqlObj.getTableName());
tableObj.setTableAlias(sqlObj.getTableAlias()); tableObj.setTableAlias(sqlObj.getTableAlias());
return tableObj; return tableObj;
} }

View File

@ -4,6 +4,7 @@ import com.google.gson.Gson;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import io.dataease.auth.annotation.DeCleaner; import io.dataease.auth.annotation.DeCleaner;
import io.dataease.auth.api.dto.CurrentUserDto; import io.dataease.auth.api.dto.CurrentUserDto;
import io.dataease.dto.SysLogDTO; import io.dataease.dto.SysLogDTO;
@ -26,6 +27,7 @@ import io.dataease.i18n.Translator;
import io.dataease.listener.util.CacheUtils; import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.common.base.domain.*; import io.dataease.plugins.common.base.domain.*;
import io.dataease.plugins.common.base.mapper.*; import io.dataease.plugins.common.base.mapper.*;
import io.dataease.plugins.common.constants.DatasetType;
import io.dataease.plugins.common.constants.DatasourceTypes; import io.dataease.plugins.common.constants.DatasourceTypes;
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.plugins.common.dto.datasource.TableField; import io.dataease.plugins.common.dto.datasource.TableField;
@ -38,6 +40,19 @@ import io.dataease.provider.datasource.JdbcProvider;
import io.dataease.provider.DDLProvider; import io.dataease.provider.DDLProvider;
import io.dataease.service.engine.EngineService; import io.dataease.service.engine.EngineService;
import io.dataease.service.sys.SysAuthService; import io.dataease.service.sys.SysAuthService;
import net.sf.jsqlparser.expression.BinaryExpression;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.Parenthesis;
import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
import net.sf.jsqlparser.expression.operators.relational.ExpressionList;
import net.sf.jsqlparser.expression.operators.relational.InExpression;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SubSelect;
import net.sf.jsqlparser.util.deparser.ExpressionDeParser;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -62,6 +77,7 @@ import javax.annotation.Resource;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.io.StringReader;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.text.NumberFormat; import java.text.NumberFormat;
@ -112,10 +128,15 @@ public class DataSetTableService {
private EngineService engineService; private EngineService engineService;
@Resource @Resource
private SysAuthService sysAuthService; private SysAuthService sysAuthService;
@Resource
private ChartViewMapper chartViewMapper;
private static boolean isUpdatingDatasetTableStatus = false; private static boolean isUpdatingDatasetTableStatus = false;
private static final String lastUpdateTime = "${__last_update_time__}"; private static final String lastUpdateTime = "${__last_update_time__}";
private static final String currentUpdateTime = "${__current_update_time__}"; private static final String currentUpdateTime = "${__current_update_time__}";
private static final String regex = "\\$\\{(.*?)\\}";
private static final String SubstitutedParams = "DATAEASE_PATAMS_BI";
private static final String SubstitutedSql = " 'BI' = 'BI' ";
@Value("${upload.file.path}") @Value("${upload.file.path}")
private String path; private String path;
@ -268,7 +289,7 @@ public class DataSetTableService {
@DeCleaner(value = DePermissionType.DATASET, key = "sceneId") @DeCleaner(value = DePermissionType.DATASET, key = "sceneId")
public DatasetTable save(DataSetTableRequest datasetTable) throws Exception { public DatasetTable save(DataSetTableRequest datasetTable) throws Exception {
checkName(datasetTable); checkName(datasetTable);
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.name())) {
DataSetTableRequest dataSetTableRequest = new DataSetTableRequest(); DataSetTableRequest dataSetTableRequest = new DataSetTableRequest();
BeanUtils.copyBean(dataSetTableRequest, datasetTable); BeanUtils.copyBean(dataSetTableRequest, datasetTable);
getSQLPreview(dataSetTableRequest); getSQLPreview(dataSetTableRequest);
@ -295,9 +316,9 @@ public class DataSetTableService {
if (datasetTable.getIsRename() == null || !datasetTable.getIsRename()) { if (datasetTable.getIsRename() == null || !datasetTable.getIsRename()) {
// 更新数据和字段 // 更新数据和字段
if (update == 1) { if (update == 1) {
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql") if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.name())
|| StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom") || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.name())
|| StringUtils.equalsIgnoreCase(datasetTable.getType(), "union")) { || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.UNION.name())) {
saveTableField(datasetTable); saveTableField(datasetTable);
} }
DeLogUtils.save(SysLogConstants.OPERATE_TYPE.MODIFY, SysLogConstants.SOURCE_TYPE.DATASET, datasetTable.getId(), datasetTable.getSceneId(), null, null); DeLogUtils.save(SysLogConstants.OPERATE_TYPE.MODIFY, SysLogConstants.SOURCE_TYPE.DATASET, datasetTable.getId(), datasetTable.getSceneId(), null, null);
@ -339,8 +360,8 @@ public class DataSetTableService {
DatasourceRequest datasourceRequest = new DatasourceRequest(); DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(dorisDatasource); datasourceRequest.setDatasource(dorisDatasource);
DDLProvider ddlProvider = ProviderFactory.getDDLProvider(dorisDatasource.getType()); DDLProvider ddlProvider = ProviderFactory.getDDLProvider(dorisDatasource.getType());
if (StringUtils.equalsIgnoreCase("custom", table.getType()) if (StringUtils.equalsIgnoreCase(DatasetType.CUSTOM.name(), table.getType())
|| StringUtils.equalsIgnoreCase("union", table.getType())) { || StringUtils.equalsIgnoreCase(DatasetType.UNION.name(), table.getType())) {
datasourceRequest.setQuery(ddlProvider.dropView(dorisTableName)); datasourceRequest.setQuery(ddlProvider.dropView(dorisTableName));
jdbcProvider.exec(datasourceRequest); jdbcProvider.exec(datasourceRequest);
datasourceRequest.setQuery(ddlProvider.dropView(TableUtils.tmpName(dorisTableName))); datasourceRequest.setQuery(ddlProvider.dropView(TableUtils.tmpName(dorisTableName)));
@ -362,7 +383,7 @@ public class DataSetTableService {
public List<DatasetTable> list(List<String> datasetIds) { public List<DatasetTable> list(List<String> datasetIds) {
DatasetTableExample example = new DatasetTableExample(); DatasetTableExample example = new DatasetTableExample();
example.createCriteria().andIdIn(datasetIds); example.createCriteria().andIdIn(datasetIds);
return datasetTableMapper.selectByExampleWithBLOBs(example); return datasetTableMapper.selectByExample(example);
} }
public List<DataSetTableDTO> listAndGroup(DataSetTableRequest dataSetTableRequest) { public List<DataSetTableDTO> listAndGroup(DataSetTableRequest dataSetTableRequest) {
@ -542,7 +563,7 @@ public class DataSetTableService {
if (page == Integer.parseInt(dataSetTableRequest.getRow()) / pageSize + 1) { if (page == Integer.parseInt(dataSetTableRequest.getRow()) / pageSize + 1) {
realSize = Integer.parseInt(dataSetTableRequest.getRow()) % pageSize; realSize = Integer.parseInt(dataSetTableRequest.getRow()) % pageSize;
} }
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db") || StringUtils.equalsIgnoreCase(datasetTable.getType(), "api")) { if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.DB.name()) || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.API.name())) {
if (datasetTable.getMode() == 0) { if (datasetTable.getMode() == 0) {
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId()); Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
if (ObjectUtils.isEmpty(ds)) { if (ObjectUtils.isEmpty(ds)) {
@ -617,7 +638,7 @@ public class DataSetTableService {
} }
} }
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.name())) {
if (datasetTable.getMode() == 0) { if (datasetTable.getMode() == 0) {
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId()); Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
if (ObjectUtils.isEmpty(ds)) { if (ObjectUtils.isEmpty(ds)) {
@ -630,7 +651,7 @@ public class DataSetTableService {
DatasourceRequest datasourceRequest = new DatasourceRequest(); DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
String sql = dataTableInfoDTO.getSql(); String sql = handleVariableDefaultValue(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(), datasetTable.getSqlVariableDetails());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery( datasourceRequest.setQuery(
qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, customFilter)); qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, customFilter));
@ -882,6 +903,86 @@ public class DataSetTableService {
return map; return map;
} }
public List<SqlVariableDetails> paramsWithIds(List<String> viewIds) {
if (CollectionUtils.isEmpty(viewIds)) {
return new ArrayList<>();
}
ChartViewExample chartViewExample = new ChartViewExample();
chartViewExample.createCriteria().andIdIn(viewIds);
List<String> datasetIds = chartViewMapper.selectByExample(chartViewExample).stream().map(ChartView::getTableId).collect(Collectors.toList());
if (CollectionUtils.isEmpty(datasetIds)) {
return new ArrayList<>();
}
DatasetTableExample datasetTableExample = new DatasetTableExample();
datasetTableExample.createCriteria().andIdIn(datasetIds);
List<DatasetTable> datasetTables = datasetTableMapper.selectByExample(datasetTableExample);
if (CollectionUtils.isEmpty(datasetTables)) {
return new ArrayList<>();
}
List<SqlVariableDetails> sqlVariableDetails = new ArrayList<>();
datasetTables.forEach(datasetTable -> {
if (StringUtils.isNotEmpty(datasetTable.getSqlVariableDetails())) {
sqlVariableDetails.addAll(new Gson().fromJson(datasetTable.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {
}.getType()));
}
});
return sqlVariableDetails;
}
public String handleVariableDefaultValue(String sql, String sqlVariableDetails) {
if (StringUtils.isEmpty(sql)) {
DataEaseException.throwException(Translator.get("i18n_sql_not_empty"));
}
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(sql);
while (matcher.find()) {
boolean customValue = false;
// if (CollectionUtils.isNotEmpty(customSqlVariableDetails)) {
// for (SqlVariableDetails customSqlVariableDetail : customSqlVariableDetails) {
// if (matcher.group().substring(2, matcher.group().length() - 1).equalsIgnoreCase(customSqlVariableDetail.getVariableName())) {
// sql = sql.replace(matcher.group(), customSqlVariableDetail.getDefaultValue());
// customValue = true;
// break;
// }
// }
// }
if (!customValue) {
SqlVariableDetails defaultsSqlVariableDetail = null;
List<SqlVariableDetails> defaultsSqlVariableDetails = new Gson().fromJson(sqlVariableDetails, new TypeToken<List<SqlVariableDetails>>() {
}.getType());
for (SqlVariableDetails sqlVariableDetail : defaultsSqlVariableDetails) {
if (matcher.group().substring(2, matcher.group().length() - 1).equalsIgnoreCase(sqlVariableDetail.getVariableName())) {
defaultsSqlVariableDetail = sqlVariableDetail;
break;
}
}
if (defaultsSqlVariableDetail == null || StringUtils.isEmpty(defaultsSqlVariableDetail.getDefaultValue())) {
throw new RuntimeException(matcher.group().substring(2, matcher.group().length() - 1) + "没有默认值!");
}
sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue());
}
}
return sql;
}
private String removeVariables(String sql) throws Exception {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(sql);
while (matcher.find()) {
sql = sql.replace(matcher.group(), SubstitutedParams);
}
CCJSqlParserUtil.parse(sql, parser -> parser.withSquareBracketQuotation(true));
Statement statement = CCJSqlParserUtil.parse(sql);
Select select = (Select) statement;
Expression expr = ((PlainSelect) select.getSelectBody()).getWhere();
StringBuilder stringBuilder = new StringBuilder();
expr.accept(getExpressionDeParser(stringBuilder));
return stringBuilder.toString();
}
public Map<String, Object> getSQLPreview(DataSetTableRequest dataSetTableRequest) throws Exception { public Map<String, Object> getSQLPreview(DataSetTableRequest dataSetTableRequest) throws Exception {
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId()); Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
if (ds == null) { if (ds == null) {
@ -890,8 +991,7 @@ public class DataSetTableService {
Provider datasourceProvider = ProviderFactory.getProvider(ds.getType()); Provider datasourceProvider = ProviderFactory.getProvider(ds.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest(); DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
String sql = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql(); String sql = handleVariableDefaultValue(new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql(), dataSetTableRequest.getSqlVariableDetails());
if (StringUtils.isEmpty(sql)) { if (StringUtils.isEmpty(sql)) {
DataEaseException.throwException(Translator.get("i18n_sql_not_empty")); DataEaseException.throwException(Translator.get("i18n_sql_not_empty"));
} }
@ -1533,7 +1633,7 @@ public class DataSetTableService {
public void saveTableField(DatasetTable datasetTable) throws Exception { public void saveTableField(DatasetTable datasetTable) throws Exception {
Datasource ds = datasourceMapper.selectByPrimaryKey(datasetTable.getDataSourceId()); Datasource ds = datasourceMapper.selectByPrimaryKey(datasetTable.getDataSourceId());
if (ObjectUtils.isEmpty(ds) && !datasetTable.getType().equalsIgnoreCase("union")) { if (ObjectUtils.isEmpty(ds) && !datasetTable.getType().equalsIgnoreCase(DatasetType.UNION.name())) {
throw new RuntimeException(Translator.get("i18n_datasource_delete")); throw new RuntimeException(Translator.get("i18n_datasource_delete"));
} }
DataSetTableRequest dataSetTableRequest = new DataSetTableRequest(); DataSetTableRequest dataSetTableRequest = new DataSetTableRequest();
@ -1541,20 +1641,20 @@ public class DataSetTableService {
List<TableField> fields = new ArrayList<>(); List<TableField> fields = new ArrayList<>();
long syncTime = System.currentTimeMillis(); long syncTime = System.currentTimeMillis();
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db") || StringUtils.equalsIgnoreCase(datasetTable.getType(), "api")) { if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.DB.name()) || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.API.name())) {
fields = getFields(datasetTable); fields = getFields(datasetTable);
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.name())) {
Provider datasourceProvider = ProviderFactory.getProvider(ds.getType()); Provider datasourceProvider = ProviderFactory.getProvider(ds.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest(); DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
String sqlAsTable = qp.createSQLPreview( String sql = handleVariableDefaultValue(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(), datasetTable.getSqlVariableDetails());
new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql(), null); String sqlAsTable = qp.createSQLPreview(sql, null);
datasourceRequest.setQuery(sqlAsTable); datasourceRequest.setQuery(sqlAsTable);
fields = datasourceProvider.fetchResultField(datasourceRequest); fields = datasourceProvider.fetchResultField(datasourceRequest);
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.EXCEL.name())) {
fields = dataSetTableRequest.getFields(); fields = dataSetTableRequest.getFields();
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.name())) {
if (datasetTable.getMode() == 1) { if (datasetTable.getMode() == 1) {
// save field // save field
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(),
@ -2382,4 +2482,110 @@ public class DataSetTableService {
public int updateByExampleSelective(DatasetTable record, DatasetTableExample example) { public int updateByExampleSelective(DatasetTable record, DatasetTableExample example) {
return datasetTableMapper.updateByExampleSelective(record, example); return datasetTableMapper.updateByExampleSelective(record, example);
} }
private ExpressionDeParser getExpressionDeParser(StringBuilder stringBuilder) {
ExpressionDeParser expressionDeParser = new ExpressionDeParser(null, stringBuilder) {
@Override
public void visit(Parenthesis parenthesis) {
getBuffer().append("(");
parenthesis.getExpression().accept(this);
getBuffer().append(")");
}
@Override
public void visit(OrExpression orExpression) {
visitBinaryExpr(orExpression, "OR");
}
@Override
public void visit(AndExpression andExpression) {
visitBinaryExpr(andExpression, "AND");
}
@Override
public void visit(ExpressionList expressionList) {
for (Expression expression : expressionList.getExpressions()) {
expression.accept(this);
}
}
@Override
public void visit(InExpression inExpression) {
inExpression.getLeftExpression().accept(this);
if (inExpression.isNot()) {
getBuffer().append(" " + "NOT IN" + " ");
} else {
getBuffer().append(" " + "IN" + " ");
}
getBuffer().append("(");
if (inExpression.getRightItemsList() != null) {
inExpression.getRightItemsList().accept(this);
}
if (inExpression.getRightExpression() != null) {
inExpression.getRightExpression().accept(this);
}
getBuffer().append(")");
}
@Override
public void visit(SubSelect subSelect) {
StringBuilder stringBuilder = new StringBuilder();
Expression in = ((PlainSelect) subSelect.getSelectBody()).getWhere();
if (in instanceof BinaryExpression && hasVarible(in.toString())) {
stringBuilder.append(SubstitutedSql);
} else {
in.accept(getExpressionDeParser(stringBuilder));
}
try {
Expression where = CCJSqlParserUtil.parseCondExpression(stringBuilder.toString());
((PlainSelect) subSelect.getSelectBody()).setWhere(where);
getBuffer().append(subSelect.getSelectBody());
} catch (Exception e) {
e.printStackTrace();
}
}
private boolean hasVarible(String sql) {
return sql.contains(SubstitutedParams);
}
private void visitBinaryExpr(BinaryExpression expr, String operator) {
boolean hasBinaryExpression = false;
try {
BinaryExpression leftBinaryExpression = (BinaryExpression) expr.getLeftExpression();
hasBinaryExpression = leftBinaryExpression.getLeftExpression() instanceof BinaryExpression;
} catch (Exception e) {
}
if (expr.getLeftExpression() instanceof BinaryExpression && !hasBinaryExpression && hasVarible(expr.getLeftExpression().toString())) {
getBuffer().append(SubstitutedSql);
} else {
expr.getLeftExpression().accept(this);
}
getBuffer().append(" " + operator + " ");
hasBinaryExpression = false;
try {
BinaryExpression rightBinaryExpression = (BinaryExpression) expr.getRightExpression();
hasBinaryExpression = rightBinaryExpression.getRightExpression() instanceof BinaryExpression;
} catch (Exception e) {
}
if (expr.getRightExpression() instanceof BinaryExpression && !hasBinaryExpression && hasVarible(expr.getRightExpression().toString())) {
getBuffer().append(SubstitutedSql);
} else if (expr.getRightExpression() instanceof InExpression && !hasBinaryExpression && hasVarible(expr.getRightExpression().toString())) {
getBuffer().append(SubstitutedSql);
} else {
expr.getRightExpression().accept(this);
}
}
};
return expressionDeParser;
}
} }

View File

@ -8,6 +8,7 @@ import io.dataease.commons.model.AuthURD;
import io.dataease.commons.utils.*; import io.dataease.commons.utils.*;
import io.dataease.controller.request.datasource.ApiDefinition; import io.dataease.controller.request.datasource.ApiDefinition;
import io.dataease.plugins.common.base.domain.*; import io.dataease.plugins.common.base.domain.*;
import io.dataease.plugins.common.constants.DatasetType;
import io.dataease.plugins.common.constants.DatasourceTypes; import io.dataease.plugins.common.constants.DatasourceTypes;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.dto.datasource.TableField; import io.dataease.plugins.common.dto.datasource.TableField;
@ -1012,13 +1013,13 @@ public class ExtractDataService {
} }
private String getSelectSQL(String extractType, DatasetTable datasetTable, Datasource datasource, List<DatasetTableField> datasetTableFields, String selectSQL) { private String getSelectSQL(String extractType, DatasetTable datasetTable, Datasource datasource, List<DatasetTableField> datasetTableFields, String selectSQL) {
if (extractType.equalsIgnoreCase("all_scope") && datasetTable.getType().equalsIgnoreCase("db")) { if (extractType.equalsIgnoreCase("all_scope") && datasetTable.getType().equalsIgnoreCase(DatasetType.DB.name())) {
String tableName = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable(); String tableName = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable();
QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType());
selectSQL = qp.createRawQuerySQL(tableName, datasetTableFields, datasource); selectSQL = qp.createRawQuerySQL(tableName, datasetTableFields, datasource);
} }
if (extractType.equalsIgnoreCase("all_scope") && datasetTable.getType().equalsIgnoreCase("sql")) { if (extractType.equalsIgnoreCase("all_scope") && datasetTable.getType().equalsIgnoreCase(DatasetType.SQL.name())) {
selectSQL = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql(); selectSQL = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getSql();
QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(datasource.getType());
selectSQL = qp.createRawQuerySQLAsTmp(selectSQL, datasetTableFields); selectSQL = qp.createRawQuerySQLAsTmp(selectSQL, datasetTableFields);
@ -1032,7 +1033,7 @@ public class ExtractDataService {
private StepMeta inputStep(TransMeta transMeta, String selectSQL) { private StepMeta inputStep(TransMeta transMeta, String selectSQL) {
TableInputMeta tableInput = new TableInputMeta(); TableInputMeta tableInput = new TableInputMeta();
DatabaseMeta database = transMeta.findDatabase("db"); DatabaseMeta database = transMeta.findDatabase(DatasetType.DB.name());
tableInput.setDatabaseMeta(database); tableInput.setDatabaseMeta(database);
tableInput.setSQL(selectSQL); tableInput.setSQL(selectSQL);
StepMeta fromStep = new StepMeta("TableInput", "Data Input", tableInput); StepMeta fromStep = new StepMeta("TableInput", "Data Input", tableInput);

View File

@ -11,6 +11,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.commons.constants.ColumnPermissionConstants; import io.dataease.commons.constants.ColumnPermissionConstants;
import io.dataease.i18n.Translator; import io.dataease.i18n.Translator;
import io.dataease.plugins.common.constants.DatasetType;
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.plugins.common.dto.datasource.DeSortField; import io.dataease.plugins.common.dto.datasource.DeSortField;
import io.dataease.plugins.common.request.datasource.DatasourceRequest; import io.dataease.plugins.common.request.datasource.DatasourceRequest;
@ -133,17 +134,21 @@ public class DirectFieldService implements DataSetFieldService {
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) { if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.DB.toString())) {
datasourceRequest.setTable(dataTableInfoDTO.getTable()); datasourceRequest.setTable(dataTableInfoDTO.getTable());
datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), permissionFields, true, ds, customFilter, deSortFields)); datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), permissionFields, true, ds, customFilter, deSortFields));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.toString())) {
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), permissionFields, true, customFilter, deSortFields)); String sql = dataTableInfoDTO.getSql();
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) { if (rowAndColumnMgm) {
sql = "";
}
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, true, customFilter, deSortFields));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.toString())) {
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
List<DataSetTableUnionDTO> listUnion = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId()); List<DataSetTableUnionDTO> listUnion = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
String sql = dataSetTableService.getCustomSQLDatasource(dt, listUnion, ds); String sql = dataSetTableService.getCustomSQLDatasource(dt, listUnion, ds);
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, true, customFilter, deSortFields)); datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, true, customFilter, deSortFields));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "union")) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.UNION.toString())) {
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
String sql = (String) dataSetTableService.getUnionSQLDatasource(dt, ds).get("sql"); String sql = (String) dataSetTableService.getUnionSQLDatasource(dt, ds).get("sql");
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, true, customFilter, deSortFields)); datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, true, customFilter, deSortFields));
@ -159,7 +164,7 @@ public class DirectFieldService implements DataSetFieldService {
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery(qp.createQuerySQL(tableName, permissionFields, true, null, customFilter)); datasourceRequest.setQuery(qp.createQuerySQL(tableName, permissionFields, true, null, customFilter));
} }
System.out.println(datasourceRequest.getQuery());
List<String[]> rows = datasourceProvider.getData(datasourceRequest); List<String[]> rows = datasourceProvider.getData(datasourceRequest);
if (!needMapping) { if (!needMapping) {
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());

View File

@ -30,6 +30,7 @@ import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.*; import io.dataease.plugins.common.base.domain.*;
import io.dataease.plugins.common.base.mapper.DatasetTableMapper; import io.dataease.plugins.common.base.mapper.DatasetTableMapper;
import io.dataease.plugins.common.base.mapper.DatasourceMapper; import io.dataease.plugins.common.base.mapper.DatasourceMapper;
import io.dataease.plugins.common.constants.DatasetType;
import io.dataease.plugins.common.constants.DatasourceCalculationMode; import io.dataease.plugins.common.constants.DatasourceCalculationMode;
import io.dataease.plugins.common.constants.DatasourceTypes; import io.dataease.plugins.common.constants.DatasourceTypes;
import io.dataease.plugins.common.dto.datasource.DataSourceType; import io.dataease.plugins.common.dto.datasource.DataSourceType;
@ -325,7 +326,7 @@ public class DatasourceService {
Provider datasourceProvider = ProviderFactory.getProvider(ds.getType()); Provider datasourceProvider = ProviderFactory.getProvider(ds.getType());
DatasourceRequest datasourceRequest = new DatasourceRequest(); DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
if (!ds.getType().equalsIgnoreCase("api")) { if (!ds.getType().equalsIgnoreCase(DatasetType.API.name())) {
datasourceProvider.checkStatus(datasourceRequest); datasourceProvider.checkStatus(datasourceRequest);
} }
@ -333,8 +334,8 @@ public class DatasourceService {
// 获取当前数据源下的dbapi类型数据集 // 获取当前数据源下的dbapi类型数据集
DatasetTableExample datasetTableExample = new DatasetTableExample(); DatasetTableExample datasetTableExample = new DatasetTableExample();
datasetTableExample.createCriteria().andTypeIn(Arrays.asList("db", "api")).andDataSourceIdEqualTo(ds.getId()); datasetTableExample.createCriteria().andTypeIn(Arrays.asList(DatasetType.DB.name(), DatasetType.API.name())).andDataSourceIdEqualTo(ds.getId());
List<DatasetTable> datasetTables = datasetTableMapper.selectByExampleWithBLOBs(datasetTableExample); List<DatasetTable> datasetTables = datasetTableMapper.selectByExample(datasetTableExample);
List<DBTableDTO> list = new ArrayList<>(); List<DBTableDTO> list = new ArrayList<>();
for (TableDesc tableDesc : tables) { for (TableDesc tableDesc : tables) {
DBTableDTO dbTableDTO = new DBTableDTO(); DBTableDTO dbTableDTO = new DBTableDTO();

View File

@ -105,6 +105,9 @@ public class DriverService {
public void deleteDriverFile(String driverFileId) throws Exception{ public void deleteDriverFile(String driverFileId) throws Exception{
DeDriverDetails deDriverDetails = deDriverDetailsMapper.selectByPrimaryKey(driverFileId); DeDriverDetails deDriverDetails = deDriverDetailsMapper.selectByPrimaryKey(driverFileId);
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(deDriverDetails.getDeDriverId()); DeDriver deDriver = deDriverMapper.selectByPrimaryKey(deDriverDetails.getDeDriverId());
if(deDriver == null){
throw new Exception("未找到驱动");
}
DeFileUtils.deleteFile(DRIVER_PATH + deDriverDetails.getDeDriverId() + "/" + deDriverDetails.getFileName()); DeFileUtils.deleteFile(DRIVER_PATH + deDriverDetails.getDeDriverId() + "/" + deDriverDetails.getFileName());
SysLogDTO sysLogDTO = DeLogUtils.buildLog(SysLogConstants.OPERATE_TYPE.DELETE, SysLogConstants.SOURCE_TYPE.DRIVER_FILE, deDriverDetails.getId(), deDriverDetails.getDeDriverId(), null, null); SysLogDTO sysLogDTO = DeLogUtils.buildLog(SysLogConstants.OPERATE_TYPE.DELETE, SysLogConstants.SOURCE_TYPE.DRIVER_FILE, deDriverDetails.getId(), deDriverDetails.getDeDriverId(), null, null);
DeLogUtils.save(sysLogDTO); DeLogUtils.save(sysLogDTO);
@ -114,6 +117,10 @@ public class DriverService {
} }
public DeDriverDetails saveJar(MultipartFile file, String driverId) throws Exception { public DeDriverDetails saveJar(MultipartFile file, String driverId) throws Exception {
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(driverId);
if(deDriver == null){
throw new Exception("未找到驱动");
}
String filename = file.getOriginalFilename(); String filename = file.getOriginalFilename();
String dirPath = DRIVER_PATH + driverId + "/"; String dirPath = DRIVER_PATH + driverId + "/";
String filePath = dirPath + filename; String filePath = dirPath + filename;
@ -138,7 +145,6 @@ public class DriverService {
deDriverDetailsMapper.insert(deDriverDetails); deDriverDetailsMapper.insert(deDriverDetails);
SysLogDTO sysLogDTO = DeLogUtils.buildLog(SysLogConstants.OPERATE_TYPE.UPLOADFILE, SysLogConstants.SOURCE_TYPE.DRIVER_FILE, deDriverDetails.getId(), driverId, null, null); SysLogDTO sysLogDTO = DeLogUtils.buildLog(SysLogConstants.OPERATE_TYPE.UPLOADFILE, SysLogConstants.SOURCE_TYPE.DRIVER_FILE, deDriverDetails.getId(), driverId, null, null);
DeLogUtils.save(sysLogDTO); DeLogUtils.save(sysLogDTO);
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(driverId);
DefaultJdbcProvider defaultJdbcProvider = (DefaultJdbcProvider)ProviderFactory.getProvider(deDriver.getType()); DefaultJdbcProvider defaultJdbcProvider = (DefaultJdbcProvider)ProviderFactory.getProvider(deDriver.getType());
defaultJdbcProvider.reloadCustomJdbcClassLoader(deDriver); defaultJdbcProvider.reloadCustomJdbcClassLoader(deDriver);
return deDriverDetails; return deDriverDetails;

View File

@ -20,16 +20,6 @@ CREATE TABLE `chart_view_field`
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
DROP TABLE IF EXISTS `sql_variable`;
CREATE TABLE `sql_variable` ALTER TABLE `dataset_table`
( ADD COLUMN `sql_variable_details` LONGTEXT NULL AFTER `last_update_time`;
`id` varchar(50) NOT NULL COMMENT 'ID',
`table_id` varchar(50) NOT NULL COMMENT '数据集ID',
`variable_name` varchar(255) NOT NULL COMMENT '名称',
`alias` varchar(255) NOT NULL COMMENT '别名',
`type` varchar(50) NOT NULL COMMENT '类型',
`details` longtext DEFAULT NULL COMMENT '明细',
`default_value` longtext DEFAULT NULL COMMENT '默认值',
`required` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否必填',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;

View File

@ -17,6 +17,15 @@ export function viewsWithIds(data) {
}) })
} }
export function paramsWithIds(data) {
return request({
url: '/dataset/table/paramsWithIds',
method: 'post',
loading: true,
data
})
}
export function findOne(id) { export function findOne(id) {
return request({ return request({
url: '/api/panelView/findOne/' + id, url: '/api/panelView/findOne/' + id,

View File

@ -215,6 +215,7 @@ export default {
}, },
setCondition() { setCondition() {
console.log(this.element)
const param = { const param = {
component: this.element, component: this.element,
value: this.formatFilterValue(), value: this.formatFilterValue(),

View File

@ -5,12 +5,13 @@
* viewIds 过滤视图范围 * viewIds 过滤视图范围
*/ */
export class Condition { export class Condition {
constructor(componentId, fieldId, operator, value, viewIds, isTree) { constructor(componentId, fieldId, operator, value, viewIds, parameters, isTree) {
this.componentId = componentId this.componentId = componentId
this.fieldId = fieldId this.fieldId = fieldId
this.operator = operator || 'eq' this.operator = operator || 'eq'
this.value = value this.value = value
this.viewIds = viewIds this.viewIds = viewIds
this.parameters = parameters
this.isTree = isTree || false this.isTree = isTree || false
} }
} }

View File

@ -11,6 +11,7 @@ const dialogPanel = {
attrs: { attrs: {
placeholder: 'deinputsearch.placeholder', placeholder: 'deinputsearch.placeholder',
viewIds: [], viewIds: [],
parameters: [],
fieldId: '', fieldId: '',
dragItems: [] dragItems: []

View File

@ -13,6 +13,7 @@ const dialogPanel = {
multiple: false, multiple: false,
placeholder: 'detextgridselect.placeholder', placeholder: 'detextgridselect.placeholder',
viewIds: [], viewIds: [],
parameters: [],
datas: [], datas: [],
key: 'id', key: 'id',
label: 'text', label: 'text',

View File

@ -12,6 +12,7 @@ const dialogPanel = {
multiple: false, multiple: false,
placeholder: 'detextselect.placeholder', placeholder: 'detextselect.placeholder',
viewIds: [], viewIds: [],
parameters: [],
datas: [], datas: [],
key: 'id', key: 'id',
label: 'text', label: 'text',

View File

@ -12,6 +12,7 @@ const dialogPanel = {
multiple: false, multiple: false,
placeholder: 'detextselectTree.placeholder', placeholder: 'detextselectTree.placeholder',
viewIds: [], viewIds: [],
parameters: [],
datas: [], datas: [],
key: 'id', key: 'id',
label: 'text', label: 'text',

View File

@ -1577,6 +1577,7 @@ export default {
data_list: '数据列表', data_list: '数据列表',
component_list: '组件列表', component_list: '组件列表',
custom_scope: '自定义控制范围', custom_scope: '自定义控制范围',
binding_parameters: '绑定参数',
multiple_choice: '多选', multiple_choice: '多选',
single_choice: '单选', single_choice: '单选',
field: '字段', field: '字段',

View File

@ -237,7 +237,11 @@ const data = {
}) })
}, },
addViewFilter(state, data) { addViewFilter(state, data) {
console.log('data ')
console.log(data)
const condition = formatCondition(data) const condition = formatCondition(data)
console.log('condition ')
console.log(condition)
const vValid = valueValid(condition) const vValid = valueValid(condition)
// 1.根据componentId过滤 // 1.根据componentId过滤
const filterComponentId = condition.componentId const filterComponentId = condition.componentId
@ -247,6 +251,8 @@ const data = {
for (let index = 0; index < state.componentData.length; index++) { for (let index = 0; index < state.componentData.length; index++) {
const element = state.componentData[index] const element = state.componentData[index]
console.log('element: ')
console.log(element)
if (element.type && element.type === 'de-tabs') { if (element.type && element.type === 'de-tabs') {
for (let idx = 0; idx < element.options.tabList.length; idx++) { for (let idx = 0; idx < element.options.tabList.length; idx++) {
const ele = element.options.tabList[idx].content const ele = element.options.tabList[idx].content
@ -271,6 +277,7 @@ const data = {
if (!element.type || element.type !== 'view') continue if (!element.type || element.type !== 'view') continue
const currentFilters = element.filters || [] const currentFilters = element.filters || []
const vidMatch = viewIdMatch(condition.viewIds, element.propValue.viewId) const vidMatch = viewIdMatch(condition.viewIds, element.propValue.viewId)
console.log(vidMatch)
let j = currentFilters.length let j = currentFilters.length
while (j--) { while (j--) {

View File

@ -30,6 +30,7 @@ export const formatCondition = obj => {
let fieldId = component.options.attrs.fieldId let fieldId = component.options.attrs.fieldId
const viewIds = component.options.attrs.viewIds const viewIds = component.options.attrs.viewIds
const parameters = component.options.attrs.parameters
if (isTree && !component.options.attrs.multiple && value && value.length) { if (isTree && !component.options.attrs.multiple && value && value.length) {
// 单选树 // 单选树
const val = value[0] const val = value[0]
@ -40,7 +41,7 @@ export const formatCondition = obj => {
} }
} }
} }
const condition = new Condition(component.id, fieldId, operator, value, viewIds, isTree) const condition = new Condition(component.id, fieldId, operator, value, viewIds, parameters, isTree)
return condition return condition
} }

View File

@ -134,9 +134,6 @@
{{ field.remarks }} {{ field.remarks }}
</span> </span>
</span> </span>
<!-- <span v-else style="font-size: 12px;">-->
<!-- {{ field.remarks }}-->
<!-- </span>-->
</template> </template>
</ux-table-column> </ux-table-column>
</ux-grid> </ux-grid>

View File

@ -16,6 +16,7 @@
</el-row> </el-row>
<el-divider/> <el-divider/>
<el-row> <el-row>
<el-col :span="16">
<el-form :inline="true"> <el-form :inline="true">
<el-form-item class="form-item"> <el-form-item class="form-item">
<el-select v-model="dataSource" filterable :placeholder="$t('dataset.pls_slc_data_source')" size="mini" <el-select v-model="dataSource" filterable :placeholder="$t('dataset.pls_slc_data_source')" size="mini"
@ -46,7 +47,12 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-button v-if="mode === '1'" type="text" size="mini" style="float: left;" @click="variableMgm"> {{ $t('sql_variable.variable_mgm') }}</el-button> </el-col>
<el-col :span="8">
<el-button v-if="mode === '0'" type="text" size="mini" style="float: right;" @click="variableMgm">
{{ $t('sql_variable.variable_mgm') }}
</el-button>
</el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col style="min-width: 200px;"> <el-col style="min-width: 200px;">
@ -96,17 +102,39 @@
</el-card> </el-card>
</el-row> </el-row>
<el-dialog :title="dialogTitle" :visible="showVariableMgm" :before-close="closeVariableMgm" width="60%" class="dialog-css" append-to-body> <el-dialog :title="dialogTitle" :visible="showVariableMgm" :before-close="closeVariableMgm" width="60%"
class="dialog-css" append-to-body>
<!-- <fu-table :data="VariableList">--> <el-table :data="variablesTmp" style="width: 80%">
<!-- <el-table-column prop="authTargetName" :label="$t('dataset.row_permission.name')"/>--> <el-table-column prop="variableName" label="名称" width="180">
<!-- <el-table-column prop="authTargetName" :label="$t('dataset.row_permission.name')"/>--> </el-table-column>
<!-- <el-table-column prop="authTargetName" :label="$t('dataset.row_permission.name')"/>--> <el-table-column label="类型" width="180">
<!-- </fu-table>--> <template slot-scope="scope">
<!-- <div slot="footer" class="dialog-footer">--> <el-select v-model="scope.row.type" size="mini" style="display: inline-block;width: 120px;">
<!-- <el-button size="mini" @click="closeVariableMgm">{{ $t('dataset.cancel') }}</el-button>--> <el-option
<!-- <el-button type="primary" size="mini" @click="saveVariable()">{{ $t('dataset.confirm') }}</el-button>--> v-for="item in fieldOptions"
<!-- </div>--> :key="item.value"
:label="item.label"
:value="item.value">
<span style="float: left">
<svg-icon v-if="item.value === 'TEXT'" icon-class="field_text" class="field-icon-text" />
<svg-icon v-if="item.value === 'DATETIME'" icon-class="field_time" class="field-icon-time" />
<svg-icon v-if="item.value === 'LONG' || item.value === 'DOUBLE'" icon-class="field_value" class="field-icon-value" />
</span>
<span style="float: left; color: #8492a6; font-size: 12px">{{ item.label }}</span>
</el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="defaultValue" label="默认值">
<template slot-scope="scope">
<input type="text" v-model="scope.row.defaultValue" />
</template>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="closeVariableMgm">{{ $t('dataset.cancel') }}</el-button>
<el-button type="primary" size="mini" @click="saveVariable()">{{ $t('dataset.confirm') }}</el-button>
</div>
</el-dialog> </el-dialog>
</el-row> </el-row>
@ -179,7 +207,13 @@ export default {
showVariableMgm: false, showVariableMgm: false,
dialogTitle: '', dialogTitle: '',
variables: [], variables: [],
variablesTmp: [] variablesTmp: [],
fieldOptions: [
{ label: this.$t('dataset.text'), value: 'TEXT' },
{ label: this.$t('dataset.time'), value: 'DATETIME' },
{ label: this.$t('dataset.value'), value: 'LONG' },
{ label: this.$t('dataset.value') + '(' + this.$t('dataset.float') + ')', value: 'DOUBLE' }
],
} }
}, },
computed: { computed: {
@ -253,6 +287,7 @@ export default {
this.dataSource = table.dataSourceId this.dataSource = table.dataSourceId
this.mode = table.mode + '' this.mode = table.mode + ''
this.sql = JSON.parse(table.info.replace(/\n/g, '\\n').replace(/\r/g, '\\r')).sql this.sql = JSON.parse(table.info.replace(/\n/g, '\\n').replace(/\r/g, '\\r')).sql
this.variables= JSON.parse(table.sqlVariableDetails)
this.getSQLPreview() this.getSQLPreview()
}) })
@ -271,7 +306,7 @@ export default {
post('/dataset/table/sqlPreview', { post('/dataset/table/sqlPreview', {
dataSourceId: this.dataSource, dataSourceId: this.dataSource,
type: 'sql', type: 'sql',
// info: '{"sql":"' + this.sql + '"}', sqlVariableDetails: JSON.stringify(this.variables),
info: JSON.stringify({sql: this.sql.trim()}) info: JSON.stringify({sql: this.sql.trim()})
}).then(response => { }).then(response => {
this.fields = response.data.fields this.fields = response.data.fields
@ -314,7 +349,7 @@ export default {
type: 'sql', type: 'sql',
syncType: this.syncType, syncType: this.syncType,
mode: parseInt(this.mode), mode: parseInt(this.mode),
// info: '{"sql":"' + this.sql + '"}', sqlVariableDetails: JSON.stringify(this.variables),
info: JSON.stringify({sql: this.sql.trim()}) info: JSON.stringify({sql: this.sql.trim()})
} }
post('/dataset/table/update', table).then(response => { post('/dataset/table/update', table).then(response => {
@ -357,15 +392,39 @@ export default {
}, },
variableMgm() { variableMgm() {
var reg = new RegExp("${(.*?)}", "gim"); this.variablesTmp = []
var reg = new RegExp("\\${(.*?)}", "gim");
var match = this.sql.match(reg); var match = this.sql.match(reg);
console.log(match) const names = []
if (match !== null) {
for (let index = 0; index < match.length; index++) {
var name = match[index].substring(2, match[index].length - 1)
if(names.indexOf(name) < 0){
names.push(name)
var obj = undefined
for (let i = 0; i < this.variables.length; i ++) {
if(this.variables[i].variableName === name){
obj = this.variables[i]
}
}
if(obj === undefined){
obj = {variableName: name, alias: '', type: 'TEXT', required: false, defaultValue: '', details: ''}
}
this.variablesTmp.push(obj)
}
}
}
this.variables = JSON.parse(JSON.stringify(this.variablesTmp)).concat()
this.dialogTitle = this.$t('sql_variable.variable_mgm') this.dialogTitle = this.$t('sql_variable.variable_mgm')
this.showVariableMgm = true this.showVariableMgm = true
}, },
closeVariableMgm() { closeVariableMgm() {
this.showVariableMgm = false this.showVariableMgm = false
}, },
saveVariable(){
this.variables = JSON.parse(JSON.stringify(this.variablesTmp)).concat()
this.showVariableMgm = false
}
} }
} }
</script> </script>

View File

@ -210,6 +210,7 @@ import {
fieldListWithPermission fieldListWithPermission
} from '@/api/dataset/dataset' } from '@/api/dataset/dataset'
import { import {
paramsWithIds,
viewsWithIds viewsWithIds
} from '@/api/panel/view' } from '@/api/panel/view'
import { import {
@ -472,6 +473,15 @@ export default {
this.viewInfos = datas this.viewInfos = datas
this.childViews.viewInfos = datas this.childViews.viewInfos = datas
}) })
viewIds && viewIds.length > 0 && paramsWithIds(viewIds).then(res => {
const datas = res.data
/* datas.forEach(item => {
if (tabViewIds.includes(item.id)) {
item.name = 'tabs(' + item.name + ')'
}
}) */
this.childViews.datasetParams = datas
})
}, },
handleNodeClick(data) { handleNodeClick(data) {
if (data.type !== 'group') { if (data.type !== 'group') {

View File

@ -60,6 +60,38 @@
/> />
</el-popover> </el-popover>
</span> </span>
<span style="padding-left: 10px;">
<el-checkbox v-model="attrs.enableParameters" @change="enableParametersChange"><span>
{{ $t('panel.binding_parameters') }} </span> </el-checkbox>
<el-popover placement="bottom-end" :disabled="!attrs.enableParameters" width="200">
<div class="view-container-class">
<el-checkbox-group v-model="attrs.parameters">
<el-checkbox
v-for="(item ) in childViews.datasetParams"
:key="item.variableName"
:label="item.variableName"
class="de-checkbox"
>
<div class="span-div">
<svg-icon :icon-class="item.type" class="chart-icon" />
<span v-if="item.variableName && item.variableName.length <= 7" style="margin-left: 6px">{{ item.variableName }}</span>
<el-tooltip v-else class="item" effect="dark" :content="item.variableName" placement="left">
<span style="margin-left: 6px">{{ item.variableName }}</span>
</el-tooltip>
</div>
</el-checkbox>
</el-checkbox-group>
</div>
<i
slot="reference"
:class="{'i-filter-active': attrs.enableParameters, 'i-filter-inactive': !attrs.enableParameters}"
class="el-icon-setting i-filter"
/>
</el-popover>
</span>
</div> </div>
</el-col> </el-col>
@ -94,13 +126,16 @@ export default {
return { return {
attrs: null, attrs: null,
titlePopovervisible: false, titlePopovervisible: false,
popovervisible: false popovervisible: false,
parametersVisible: false
} }
}, },
created() { created() {
this.attrs = this.controlAttrs this.attrs = this.controlAttrs
console.log(this.childViews)
console.log(this.attrs)
}, },
methods: { methods: {
multipleChange(value) { multipleChange(value) {
@ -115,6 +150,12 @@ export default {
} }
this.fillAttrs2Filter() this.fillAttrs2Filter()
}, },
enableParametersChange(value) {
if (!value) {
this.attrs.parameters = []
}
this.fillAttrs2Filter()
},
showTitleChange(value) { showTitleChange(value) {
if (!value) { if (!value) {
this.attrs.title = '' this.attrs.title = ''