forked from github/dataease
feat(数据集): 新增数据集交互优化接口
This commit is contained in:
parent
efac2b381a
commit
d50c0a1d8f
@ -70,11 +70,11 @@ public class DataSetTableController {
|
||||
@ApiOperation("修改")
|
||||
@PostMapping("alter")
|
||||
@DeLog(
|
||||
operatetype = SysLogConstants.OPERATE_TYPE.MODIFY,
|
||||
sourcetype = SysLogConstants.SOURCE_TYPE.DATASET,
|
||||
value = "id",
|
||||
positionIndex = 0,
|
||||
positionKey = "sceneId"
|
||||
operatetype = SysLogConstants.OPERATE_TYPE.MODIFY,
|
||||
sourcetype = SysLogConstants.SOURCE_TYPE.DATASET,
|
||||
value = "id",
|
||||
positionIndex = 0,
|
||||
positionKey = "sceneId"
|
||||
)
|
||||
public void alter(@RequestBody DataSetTableRequest request) throws Exception {
|
||||
dataSetTableService.alter(request);
|
||||
@ -135,6 +135,16 @@ public class DataSetTableController {
|
||||
return dataSetTableService.getPreviewData(dataSetTableRequest, page, pageSize, null);
|
||||
}
|
||||
|
||||
@ApiOperation("db数据库表预览数据")
|
||||
@PostMapping("dbPreview")
|
||||
@DePermissions(value = {
|
||||
@DePermission(type = DePermissionType.DATASET, value = "id", level = ResourceAuthLevel.DATASET_LEVEL_USE),
|
||||
@DePermission(type = DePermissionType.DATASOURCE, value = "dataSourceId", level = ResourceAuthLevel.DATASOURCE_LEVEL_USE)
|
||||
}, logical = Logical.AND)
|
||||
public Map<String, Object> getDBPreview(@RequestBody DataSetTableRequest dataSetTableRequest) throws Exception {
|
||||
return dataSetTableService.getDBPreview(dataSetTableRequest);
|
||||
}
|
||||
|
||||
@ApiOperation("根据sql查询预览数据")
|
||||
@PostMapping("sqlPreview")
|
||||
@DePermissions(value = {
|
||||
@ -212,7 +222,13 @@ public class DataSetTableController {
|
||||
|
||||
@ApiOperation("根据仪表板视图ID查询数据集变量")
|
||||
@PostMapping("/paramsWithIds/{type}")
|
||||
List<SqlVariableDetails> paramsWithIds(@PathVariable String type, @RequestBody List<String> viewIds){
|
||||
List<SqlVariableDetails> paramsWithIds(@PathVariable String type, @RequestBody List<String> viewIds) {
|
||||
return dataSetTableService.paramsWithIds(type, viewIds);
|
||||
};
|
||||
}
|
||||
|
||||
@ApiOperation("根据数据集文件夹ID查询数据集名称")
|
||||
@PostMapping("/getDatasetNameFromGroup/{sceneId}")
|
||||
public List<String> getDatasetNameFromGroup(@PathVariable String sceneId) {
|
||||
return dataSetTableService.getDatasetNameFromGroup(sceneId);
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.dataease.auth.annotation.DePermission;
|
||||
import io.dataease.plugins.common.base.domain.DatasetTableTask;
|
||||
import io.dataease.commons.constants.DePermissionType;
|
||||
import io.dataease.commons.constants.ResourceAuthLevel;
|
||||
import io.dataease.commons.utils.PageUtils;
|
||||
@ -12,6 +11,7 @@ import io.dataease.commons.utils.Pager;
|
||||
import io.dataease.controller.request.dataset.DataSetTaskRequest;
|
||||
import io.dataease.controller.sys.base.BaseGridRequest;
|
||||
import io.dataease.dto.dataset.DataSetTaskDTO;
|
||||
import io.dataease.plugins.common.base.domain.DatasetTableTask;
|
||||
import io.dataease.service.dataset.DataSetTableTaskLogService;
|
||||
import io.dataease.service.dataset.DataSetTableTaskService;
|
||||
import io.swagger.annotations.Api;
|
||||
@ -62,6 +62,14 @@ public class DataSetTableTaskController {
|
||||
return dataSetTableTaskService.list(datasetTableTask);
|
||||
}
|
||||
|
||||
@DePermission(type = DePermissionType.DATASET, value = "tableId", level = ResourceAuthLevel.DATASET_LEVEL_MANAGE)
|
||||
@ApiOperation("分页查询")
|
||||
@PostMapping("list/{goPage}/{pageSize}")
|
||||
public Pager<List<DatasetTableTask>> list(@RequestBody DatasetTableTask datasetTableTask, @PathVariable int goPage, @PathVariable int pageSize) {
|
||||
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
|
||||
return PageUtils.setPageInfo(page, dataSetTableTaskService.list(datasetTableTask));
|
||||
}
|
||||
|
||||
@ApiOperation("分页查询")
|
||||
@PostMapping("/pageList/{goPage}/{pageSize}")
|
||||
public Pager<List<DataSetTaskDTO>> taskList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody BaseGridRequest request) {
|
||||
|
@ -153,6 +153,8 @@ public class DataSetTableService {
|
||||
|
||||
@DeCleaner(value = DePermissionType.DATASET, key = "sceneId")
|
||||
public void batchInsert(List<DataSetTableRequest> datasetTable) throws Exception {
|
||||
// 保存之前校验table名称
|
||||
checkNames(datasetTable);
|
||||
for (DataSetTableRequest table : datasetTable) {
|
||||
save(table);
|
||||
// 清理权限缓存
|
||||
@ -382,6 +384,13 @@ public class DataSetTableService {
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> getDatasetNameFromGroup(String sceneId) {
|
||||
DatasetTableExample example = new DatasetTableExample();
|
||||
example.createCriteria().andSceneIdEqualTo(sceneId);
|
||||
List<DatasetTable> datasetTables = datasetTableMapper.selectByExample(example);
|
||||
return datasetTables.stream().map(DatasetTable::getName).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<DataSetTableDTO> list(DataSetTableRequest dataSetTableRequest) {
|
||||
dataSetTableRequest.setUserId(String.valueOf(AuthUtils.getUser().getUserId()));
|
||||
dataSetTableRequest.setTypeFilter(dataSetTableRequest.getTypeFilter());
|
||||
@ -936,7 +945,7 @@ public class DataSetTableService {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
if(!Arrays.asList("DATE", "TEXT", "NUM").contains(type)){
|
||||
if (!Arrays.asList("DATE", "TEXT", "NUM").contains(type)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
ChartViewExample chartViewExample = new ChartViewExample();
|
||||
@ -965,24 +974,28 @@ public class DataSetTableService {
|
||||
}
|
||||
}
|
||||
}
|
||||
switch (type){
|
||||
switch (type) {
|
||||
case "DATE":
|
||||
sqlVariableDetails = sqlVariableDetails.stream().filter(item -> item.getType().get(0).contains("DATETIME")).collect(Collectors.toList());
|
||||
sqlVariableDetails = sqlVariableDetails.stream().filter(item -> item.getType().get(0).contains("DATETIME")).collect(Collectors.toList());
|
||||
sqlVariableDetails.forEach(item -> {
|
||||
if(item.getType().size()> 1){
|
||||
if (item.getType().size() > 1) {
|
||||
item.setAlias(item.getVariableName() + "[" + item.getType().get(1) + "]");
|
||||
}else {
|
||||
} else {
|
||||
item.setAlias(item.getVariableName());
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "TEXT":
|
||||
sqlVariableDetails = sqlVariableDetails.stream().filter(item -> item.getType().get(0).contains("TEXT")).collect(Collectors.toList());
|
||||
sqlVariableDetails.forEach(item -> {item.setAlias(item.getVariableName());});
|
||||
sqlVariableDetails = sqlVariableDetails.stream().filter(item -> item.getType().get(0).contains("TEXT")).collect(Collectors.toList());
|
||||
sqlVariableDetails.forEach(item -> {
|
||||
item.setAlias(item.getVariableName());
|
||||
});
|
||||
break;
|
||||
case "NUM":
|
||||
sqlVariableDetails = sqlVariableDetails.stream().filter(item -> item.getType().get(0).contains("LONG") || item.getType().get(0).contains("DOUBLE")).collect(Collectors.toList());
|
||||
sqlVariableDetails.forEach(item -> {item.setAlias(item.getVariableName());});
|
||||
sqlVariableDetails = sqlVariableDetails.stream().filter(item -> item.getType().get(0).contains("LONG") || item.getType().get(0).contains("DOUBLE")).collect(Collectors.toList());
|
||||
sqlVariableDetails.forEach(item -> {
|
||||
item.setAlias(item.getVariableName());
|
||||
});
|
||||
break;
|
||||
}
|
||||
return sqlVariableDetails;
|
||||
@ -1072,7 +1085,7 @@ public class DataSetTableService {
|
||||
return handleWith(plainSelect, select);
|
||||
}
|
||||
|
||||
private String handleWith(PlainSelect plainSelect, Select select)throws Exception{
|
||||
private String handleWith(PlainSelect plainSelect, Select select) throws Exception {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
if (CollectionUtils.isNotEmpty(select.getWithItemsList())) {
|
||||
builder.append("WITH");
|
||||
@ -1089,6 +1102,45 @@ public class DataSetTableService {
|
||||
builder.append(" " + plainSelect);
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
public Map<String, Object> getDBPreview(DataSetTableRequest dataSetTableRequest) throws Exception {
|
||||
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
|
||||
if (ds == null) {
|
||||
throw new Exception(Translator.get("i18n_invalid_ds"));
|
||||
}
|
||||
Provider datasourceProvider = ProviderFactory.getProvider(ds.getType());
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(ds);
|
||||
DataTableInfoDTO dataTableInfo = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
|
||||
String sql = "SELECT * FROM " + dataTableInfo.getTable();
|
||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||
String sqlAsTable = qp.createSQLPreview(sql, null);
|
||||
datasourceRequest.setQuery(sqlAsTable);
|
||||
Map<String, List> result = datasourceProvider.fetchResultAndField(datasourceRequest);
|
||||
List<String[]> data = result.get("dataList");
|
||||
List<TableField> fields = result.get("fieldList");
|
||||
String[] fieldArray = fields.stream().map(TableField::getFieldName).toArray(String[]::new);
|
||||
if (checkIsRepeat(fieldArray)) {
|
||||
DataEaseException.throwException(Translator.get("i18n_excel_field_repeat"));
|
||||
}
|
||||
List<Map<String, Object>> jsonArray = new ArrayList<>();
|
||||
if (CollectionUtils.isNotEmpty(data)) {
|
||||
jsonArray = data.stream().map(ele -> {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
for (int i = 0; i < ele.length; i++) {
|
||||
map.put(fieldArray[i], ele[i]);
|
||||
}
|
||||
return map;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("fields", fields);
|
||||
map.put("data", jsonArray);
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
public Map<String, Object> getSQLPreview(DataSetTableRequest dataSetTableRequest) throws Exception {
|
||||
Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId());
|
||||
if (ds == null) {
|
||||
@ -2090,6 +2142,31 @@ public class DataSetTableService {
|
||||
}
|
||||
}
|
||||
|
||||
private void checkNames(List<DataSetTableRequest> datasetTable) {
|
||||
if (CollectionUtils.isEmpty(datasetTable)) {
|
||||
return;
|
||||
}
|
||||
Set<String> nameSet = new HashSet<>();
|
||||
for (DataSetTableRequest table : datasetTable) {
|
||||
nameSet.add(table.getName());
|
||||
}
|
||||
if (nameSet.size() != datasetTable.size()) {
|
||||
throw new RuntimeException(Translator.get("i18n_name_cant_repeat_same_group"));
|
||||
}
|
||||
DatasetTableExample datasetTableExample = new DatasetTableExample();
|
||||
DatasetTableExample.Criteria criteria = datasetTableExample.createCriteria();
|
||||
if (StringUtils.isNotEmpty(datasetTable.get(0).getSceneId())) {
|
||||
criteria.andSceneIdEqualTo(datasetTable.get(0).getSceneId());
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(nameSet)) {
|
||||
criteria.andNameIn(new ArrayList<>(nameSet));
|
||||
}
|
||||
List<DatasetTable> list = datasetTableMapper.selectByExample(datasetTableExample);
|
||||
if (list.size() > 0) {
|
||||
throw new RuntimeException(Translator.get("i18n_name_cant_repeat_same_group"));
|
||||
}
|
||||
}
|
||||
|
||||
public DataSetDetail getDatasetDetail(String id) {
|
||||
DataSetDetail dataSetDetail = new DataSetDetail();
|
||||
DatasetTable table = datasetTableMapper.selectByPrimaryKey(id);
|
||||
|
Loading…
Reference in New Issue
Block a user