diff --git a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java index 6f00e03989..df26854263 100644 --- a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java +++ b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java @@ -95,22 +95,30 @@ public class JdbcProvider extends DefaultJdbcProvider { while (resultSet.next()) { String tableName = resultSet.getString("TABLE_NAME"); String database; - if (datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.ck.name()) || datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.impala.name())) { + if (datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.pg.name()) ||datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.ck.name()) || datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.impala.name())) { database = resultSet.getString("TABLE_SCHEM"); } else { database = resultSet.getString("TABLE_CAT"); } - if (database != null) { - if (tableName.equals(datasourceRequest.getTable()) && database.equalsIgnoreCase(getDatabase(datasourceRequest))) { - TableField tableField = getTableFiled(resultSet, datasourceRequest); - list.add(tableField); - } - } else { - if (tableName.equals(datasourceRequest.getTable())) { - TableField tableField = getTableFiled(resultSet, datasourceRequest); - list.add(tableField); - } - } + if(datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.pg.name())){ + if (tableName.equals(datasourceRequest.getTable()) && database.equalsIgnoreCase(getDsSchema(datasourceRequest))) { + TableField tableField = getTableFiled(resultSet, datasourceRequest); + list.add(tableField); + } + }else { + if (database != null) { + if (tableName.equals(datasourceRequest.getTable()) && database.equalsIgnoreCase(getDatabase(datasourceRequest))) { + TableField tableField = getTableFiled(resultSet, datasourceRequest); + list.add(tableField); + } + } else { + if (tableName.equals(datasourceRequest.getTable())) { + TableField tableField = getTableFiled(resultSet, datasourceRequest); + list.add(tableField); + } + } + } + } resultSet.close(); } catch (SQLException e) { @@ -191,6 +199,11 @@ public class JdbcProvider extends DefaultJdbcProvider { } } + private String getDsSchema(DatasourceRequest datasourceRequest) { + JdbcConfiguration jdbcConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), JdbcConfiguration.class); + return jdbcConfiguration.getSchema(); + } + @Override public List fetchResultField(DatasourceRequest datasourceRequest) throws Exception { JdbcConfiguration jdbcConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), JdbcConfiguration.class); diff --git a/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java index 87a6701f01..5f2df87142 100644 --- a/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/ck/CKQueryProvider.java @@ -78,7 +78,7 @@ public class CKQueryProvider extends QueryProvider { case "UINT64": return 2;// 整型 case "FLOAT32": - case "Float64": + case "FLOAT64": case "DECIMAL": return 3;// 浮点 case "BIT": diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index b99f672017..134ac278c7 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -57,6 +57,7 @@ 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.statement.select.WithItem; import net.sf.jsqlparser.util.deparser.ExpressionDeParser; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -1027,7 +1028,22 @@ public class DataSetTableService { expr.accept(getExpressionDeParser(stringBuilder)); } plainSelect.setWhere(CCJSqlParserUtil.parseCondExpression(stringBuilder.toString())); - return plainSelect.toString(); + + + StringBuilder builder = new StringBuilder(); + if (CollectionUtils.isNotEmpty(select.getWithItemsList())) { + builder.append("WITH"); + builder.append(" "); + } + for (Iterator iter = select.getWithItemsList().iterator(); iter.hasNext();) { + WithItem withItem = iter.next(); + builder.append(withItem.toString()); + if (iter.hasNext()) { + builder.append(","); + } + } + builder.append(plainSelect); + return builder.toString(); } public Map getSQLPreview(DataSetTableRequest dataSetTableRequest) throws Exception { @@ -2569,8 +2585,12 @@ public class DataSetTableService { @Override public void visit(ExpressionList expressionList) { - for (Expression expression : expressionList.getExpressions()) { + for (Iterator iter = expressionList.getExpressions().iterator(); iter.hasNext();) { + Expression expression = iter.next(); expression.accept(this); + if (iter.hasNext()) { + buffer.append(", "); + } } } diff --git a/backend/src/main/java/io/dataease/service/dataset/PermissionService.java b/backend/src/main/java/io/dataease/service/dataset/PermissionService.java index 6ef55b9604..43794ed819 100644 --- a/backend/src/main/java/io/dataease/service/dataset/PermissionService.java +++ b/backend/src/main/java/io/dataease/service/dataset/PermissionService.java @@ -123,18 +123,24 @@ public class PermissionService { dataSetRowPermissionsDTO.setAuthTargetIds(Collections.singletonList(userId)); dataSetRowPermissionsDTO.setAuthTargetType("user"); datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO)); - dataSetRowPermissionsDTO.setAuthTargetIds(roleIds); - dataSetRowPermissionsDTO.setAuthTargetType("role"); - datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO)); - dataSetRowPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId)); - dataSetRowPermissionsDTO.setAuthTargetType("dept"); - datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO)); + + if(CollectionUtils.isNotEmpty(roleIds)){ + dataSetRowPermissionsDTO.setAuthTargetIds(roleIds); + dataSetRowPermissionsDTO.setAuthTargetType("role"); + datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO)); + + } + + if(deptId != null){ + dataSetRowPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId)); + dataSetRowPermissionsDTO.setAuthTargetType("dept"); + datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO)); + } dataSetRowPermissionsDTO.setAuthTargetType("sysParams"); dataSetRowPermissionsDTO.setAuthTargetIds(null); datasetRowPermissions.addAll(rowPermissionService.searchRowPermissions(dataSetRowPermissionsDTO)); - values.put("${sysParams.userId}", userEntity.getUsername()); values.put("${sysParams.userName}", userEntity.getNickName()); values.put("${sysParams.userEmail}", userEntity.getEmail()); @@ -170,28 +176,33 @@ public class PermissionService { dataSetColumnPermissionsDTO.setAuthTargetType("user"); datasetColumnPermissions.addAll(columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)); - dataSetColumnPermissionsDTO.setAuthTargetIds(roleIds); - dataSetColumnPermissionsDTO.setAuthTargetType("role"); - List roleColumnPermissionsDTOS = new ArrayList<>(); - for (DataSetColumnPermissionsDTO columnPermissionsDTO : columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)) { - columnPermissionsDTO.getWhiteListUser(); - List userIdList = new Gson().fromJson(columnPermissionsDTO.getWhiteListUser(), new TypeToken>() {}.getType()); - if(!userIdList.contains(userId)){ - roleColumnPermissionsDTOS.add(columnPermissionsDTO); + if(CollectionUtils.isNotEmpty(roleIds)){ + dataSetColumnPermissionsDTO.setAuthTargetIds(roleIds); + dataSetColumnPermissionsDTO.setAuthTargetType("role"); + List roleColumnPermissionsDTOS = new ArrayList<>(); + for (DataSetColumnPermissionsDTO columnPermissionsDTO : columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)) { + columnPermissionsDTO.getWhiteListUser(); + List userIdList = new Gson().fromJson(columnPermissionsDTO.getWhiteListUser(), new TypeToken>() {}.getType()); + if(!userIdList.contains(userId)){ + roleColumnPermissionsDTOS.add(columnPermissionsDTO); + } } + datasetColumnPermissions.addAll(roleColumnPermissionsDTOS); } - datasetColumnPermissions.addAll(roleColumnPermissionsDTOS); - dataSetColumnPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId)); - dataSetColumnPermissionsDTO.setAuthTargetType("dept"); - List deptColumnPermissionsDTOS = new ArrayList<>(); - for (DataSetColumnPermissionsDTO columnPermissionsDTO : columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)) { - List userIdList = new Gson().fromJson(columnPermissionsDTO.getWhiteListUser(), new TypeToken>() {}.getType()); - if(!userIdList.contains(userId)){ - deptColumnPermissionsDTOS.add(columnPermissionsDTO); + if(deptId != null){ + dataSetColumnPermissionsDTO.setAuthTargetIds(Collections.singletonList(deptId)); + dataSetColumnPermissionsDTO.setAuthTargetType("dept"); + List deptColumnPermissionsDTOS = new ArrayList<>(); + for (DataSetColumnPermissionsDTO columnPermissionsDTO : columnPermissionService.searchPermissions(dataSetColumnPermissionsDTO)) { + List userIdList = new Gson().fromJson(columnPermissionsDTO.getWhiteListUser(), new TypeToken>() {}.getType()); + if(!userIdList.contains(userId)){ + deptColumnPermissionsDTOS.add(columnPermissionsDTO); + } } + datasetColumnPermissions.addAll(deptColumnPermissionsDTOS); } - datasetColumnPermissions.addAll(deptColumnPermissionsDTOS); + return datasetColumnPermissions; } diff --git a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java index d5d9c6ae60..489b69383e 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java @@ -1,9 +1,7 @@ package io.dataease.service.datasource; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.gson.Gson; -import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; @@ -61,7 +59,6 @@ import java.util.*; import java.util.stream.Collectors; @Service -@Transactional(rollbackFor = Exception.class) public class DatasourceService { @Resource @@ -91,6 +88,7 @@ public class DatasourceService { } @DeCleaner(DePermissionType.DATASOURCE) + @Transactional(rollbackFor = Exception.class) public Datasource addDatasource(Datasource datasource) throws Exception { if (!types().stream().map(DataSourceType::getType).collect(Collectors.toList()).contains(datasource.getType())) { throw new Exception("Datasource type not supported."); @@ -298,12 +296,12 @@ public class DatasourceService { if (datasource == null) { return ResultHolder.error("Can not find datasource: " + datasourceId); } + String datasourceStatus = null; try { Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType()); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(datasource); - String datasourceStatus = datasourceProvider.checkStatus(datasourceRequest); - datasource.setStatus(datasourceStatus); + datasourceStatus = datasourceProvider.checkStatus(datasourceRequest); if (datasource.getType().equalsIgnoreCase("api")) { List apiDefinitionList = new Gson().fromJson(datasource.getConfiguration(), new TypeToken>() { @@ -328,10 +326,14 @@ public class DatasourceService { return ResultHolder.success("Success"); } catch (Exception e) { - datasource.setStatus("Error"); + datasourceStatus = "Error"; return ResultHolder.error("Datasource is invalid: " + e.getMessage()); } finally { - datasourceMapper.updateByPrimaryKey(datasource); + Datasource record = new Datasource(); + record.setStatus(datasourceStatus); + DatasourceExample example = new DatasourceExample(); + example.createCriteria().andIdEqualTo(datasource.getId()); + datasourceMapper.updateByExampleSelective(record, example); } } @@ -461,15 +463,14 @@ public class DatasourceService { datasourceRequest.setDatasource(datasource); String status = datasourceProvider.checkStatus(datasourceRequest); record.setStatus(status); - datasourceMapper.updateByExampleSelective(datasource, example); + datasourceMapper.updateByExampleSelective(record, example); } catch (Exception e) { Datasource temp = datasourceMapper.selectByPrimaryKey(datasource.getId()); record.setStatus("Error"); if (!StringUtils.equals(temp.getStatus(), "Error")) { sendWebMsg(datasource); - datasourceMapper.updateByExampleSelective(datasource, example); + datasourceMapper.updateByExampleSelective(record, example); } - } } diff --git a/frontend/src/views/chart/components/drag-item/QuotaExtItem.vue b/frontend/src/views/chart/components/drag-item/QuotaExtItem.vue index 28911cc2d3..2e5f75b78b 100644 --- a/frontend/src/views/chart/components/drag-item/QuotaExtItem.vue +++ b/frontend/src/views/chart/components/drag-item/QuotaExtItem.vue @@ -57,7 +57,7 @@ {{ $t('chart.stddev_pop') }} {{ $t('chart.var_pop') }} {{ $t('chart.count') }} - {{ $t('chart.count_distinct') }} + {{ $t('chart.count_distinct') }} diff --git a/frontend/src/views/chart/components/drag-item/QuotaItem.vue b/frontend/src/views/chart/components/drag-item/QuotaItem.vue index 78c78dad68..a728c41dd1 100644 --- a/frontend/src/views/chart/components/drag-item/QuotaItem.vue +++ b/frontend/src/views/chart/components/drag-item/QuotaItem.vue @@ -57,7 +57,7 @@ {{ $t('chart.stddev_pop') }} {{ $t('chart.var_pop') }} {{ $t('chart.count') }} - {{ $t('chart.count_distinct') }} + {{ $t('chart.count_distinct') }} diff --git a/frontend/src/views/chart/components/senior/Threshold.vue b/frontend/src/views/chart/components/senior/Threshold.vue index 6440f8069a..4f57464334 100644 --- a/frontend/src/views/chart/components/senior/Threshold.vue +++ b/frontend/src/views/chart/components/senior/Threshold.vue @@ -68,7 +68,7 @@ - + {{ fieldItem.field.name }} diff --git a/frontend/src/views/chart/components/senior/dialog/TableThresholdEdit.vue b/frontend/src/views/chart/components/senior/dialog/TableThresholdEdit.vue index 853e14e663..f168f45f92 100644 --- a/frontend/src/views/chart/components/senior/dialog/TableThresholdEdit.vue +++ b/frontend/src/views/chart/components/senior/dialog/TableThresholdEdit.vue @@ -16,7 +16,7 @@