mirror of
https://github.com/dataease/dataease.git
synced 2025-02-24 19:42:56 +08:00
feat: 参数管理
This commit is contained in:
parent
9637bef109
commit
4b5788b63c
@ -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>
|
||||||
|
@ -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);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
}
|
@ -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>
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 {
|
||||||
|
@ -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 {
|
||||||
|
@ -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
|
||||||
|
@ -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")
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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")
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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 {
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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());
|
||||||
|
@ -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 {
|
|||||||
|
|
||||||
// 获取当前数据源下的db、api类型数据集
|
// 获取当前数据源下的db、api类型数据集
|
||||||
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();
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
|
||||||
|
@ -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,
|
||||||
|
@ -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(),
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ const dialogPanel = {
|
|||||||
attrs: {
|
attrs: {
|
||||||
placeholder: 'deinputsearch.placeholder',
|
placeholder: 'deinputsearch.placeholder',
|
||||||
viewIds: [],
|
viewIds: [],
|
||||||
|
parameters: [],
|
||||||
fieldId: '',
|
fieldId: '',
|
||||||
dragItems: []
|
dragItems: []
|
||||||
|
|
||||||
|
@ -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',
|
||||||
|
@ -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',
|
||||||
|
@ -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',
|
||||||
|
@ -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: '字段',
|
||||||
|
@ -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--) {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -16,37 +16,43 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
<el-divider/>
|
<el-divider/>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-form :inline="true">
|
<el-col :span="16">
|
||||||
<el-form-item class="form-item">
|
<el-form :inline="true">
|
||||||
<el-select v-model="dataSource" filterable :placeholder="$t('dataset.pls_slc_data_source')" size="mini"
|
<el-form-item class="form-item">
|
||||||
@change="changeDatasource()">
|
<el-select v-model="dataSource" filterable :placeholder="$t('dataset.pls_slc_data_source')" size="mini"
|
||||||
<el-option
|
@change="changeDatasource()">
|
||||||
v-for="item in options"
|
<el-option
|
||||||
:key="item.id"
|
v-for="item in options"
|
||||||
:label="item.name"
|
:key="item.id"
|
||||||
:value="item.id"
|
:label="item.name"
|
||||||
/>
|
:value="item.id"
|
||||||
</el-select>
|
/>
|
||||||
</el-form-item>
|
</el-select>
|
||||||
<el-form-item class="form-item">
|
</el-form-item>
|
||||||
<el-input v-model="name" size="mini" :placeholder="$t('commons.name')"/>
|
<el-form-item class="form-item">
|
||||||
</el-form-item>
|
<el-input v-model="name" size="mini" :placeholder="$t('commons.name')"/>
|
||||||
<el-form-item v-if="!param.tableId" class="form-item">
|
</el-form-item>
|
||||||
<el-select v-model="mode" filterable :placeholder="$t('dataset.connect_mode')" size="mini">
|
<el-form-item v-if="!param.tableId" class="form-item">
|
||||||
<el-option :label="$t('dataset.direct_connect')" value="0"/>
|
<el-select v-model="mode" filterable :placeholder="$t('dataset.connect_mode')" size="mini">
|
||||||
<el-option :label="$t('dataset.sync_data')" value="1"
|
<el-option :label="$t('dataset.direct_connect')" value="0"/>
|
||||||
:disabled="disabledSync"/>
|
<el-option :label="$t('dataset.sync_data')" value="1"
|
||||||
</el-select>
|
:disabled="disabledSync"/>
|
||||||
</el-form-item>
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item v-if="mode === '1'" class="form-item">
|
<el-form-item v-if="mode === '1'" class="form-item">
|
||||||
<el-select v-model="syncType" filterable :placeholder="$t('dataset.connect_mode')" size="mini">
|
<el-select v-model="syncType" filterable :placeholder="$t('dataset.connect_mode')" size="mini">
|
||||||
<el-option :label="$t('dataset.sync_now')" value="sync_now" :disabled="engineMode === 'simple'"/>
|
<el-option :label="$t('dataset.sync_now')" value="sync_now" :disabled="engineMode === 'simple'"/>
|
||||||
<el-option :label="$t('dataset.sync_latter')" value="sync_latter"/>
|
<el-option :label="$t('dataset.sync_latter')" value="sync_latter"/>
|
||||||
</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: {
|
||||||
@ -224,7 +258,7 @@ export default {
|
|||||||
if (this.options[i].id === this.dataSource) {
|
if (this.options[i].id === this.dataSource) {
|
||||||
this.selectedDatasource = this.options[i]
|
this.selectedDatasource = this.options[i]
|
||||||
this.mode = '0'
|
this.mode = '0'
|
||||||
if (this.engineMode === 'simple' || (!this.kettleRunning || this.selectedDatasource.calculationMode === 'DIRECT' )) {
|
if (this.engineMode === 'simple' || (!this.kettleRunning || this.selectedDatasource.calculationMode === 'DIRECT')) {
|
||||||
this.disabledSync = true
|
this.disabledSync = true
|
||||||
} else {
|
} else {
|
||||||
this.disabledSync = false
|
this.disabledSync = false
|
||||||
@ -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>
|
||||||
|
@ -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') {
|
||||||
|
@ -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 = ''
|
||||||
|
Loading…
Reference in New Issue
Block a user