diff --git a/backend/src/main/java/io/dataease/datasource/controller/DatasourceController.java b/backend/src/main/java/io/dataease/datasource/controller/DatasourceController.java index fe2dbc8da8..d84b3e0cc4 100644 --- a/backend/src/main/java/io/dataease/datasource/controller/DatasourceController.java +++ b/backend/src/main/java/io/dataease/datasource/controller/DatasourceController.java @@ -49,7 +49,7 @@ public class DatasourceController { } @PostMapping("/delete/{datasourceID}") - public void deleteDatasource(@PathVariable(value = "datasourceID") String datasourceID) { + public void deleteDatasource(@PathVariable(value = "datasourceID") String datasourceID) throws Exception { datasourceService.deleteDatasource(datasourceID); } diff --git a/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java b/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java index 7bfc4f05d7..cd7cbecd73 100644 --- a/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java +++ b/backend/src/main/java/io/dataease/datasource/service/DatasourceService.java @@ -77,7 +77,13 @@ public class DatasourceService { return extDataSourceMapper.query(gridExample); } - public void deleteDatasource(String datasourceId) { + public void deleteDatasource(String datasourceId) throws Exception { + DatasetTableExample example = new DatasetTableExample(); + example.createCriteria().andDataSourceIdEqualTo(datasourceId); + List datasetTables = datasetTableMapper.selectByExample(example); + if(CollectionUtils.isNotEmpty(datasetTables)){ + throw new Exception(datasetTables.size() + Translator.get("i18n_datasource_not_allow_delete_msg")); + } datasourceMapper.deleteByPrimaryKey(datasourceId); } diff --git a/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java index 6db3283ee9..48755a72ca 100644 --- a/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java @@ -84,11 +84,11 @@ public class DorisQueryProvider extends QueryProvider { } } else if (f.getDeExtractType() == 0) { if (f.getDeType() == 2) { - stringBuilder.append("cast(").append(f.getOriginName()).append(" as decimal(20,0)) as ").append(f.getOriginName()); + stringBuilder.append("cast(").append(f.getDataeaseName()).append(" as decimal(20,0)) as ").append(f.getDataeaseName()); } else if (f.getDeType() == 3) { - stringBuilder.append("cast(").append(f.getOriginName()).append(" as decimal(20,2)) as ").append(f.getOriginName()); + stringBuilder.append("cast(").append(f.getDataeaseName()).append(" as decimal(20,2)) as ").append(f.getDataeaseName()); } else { - stringBuilder.append(f.getOriginName()); + stringBuilder.append(f.getDataeaseName()); } } else { if (f.getDeType() == 1) { diff --git a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java index 0ee4318af4..d80de80806 100644 --- a/backend/src/main/java/io/dataease/service/chart/ChartViewService.java +++ b/backend/src/main/java/io/dataease/service/chart/ChartViewService.java @@ -88,6 +88,9 @@ public class ChartViewService { public ChartViewDTO getData(String id, ChartExtRequest requestList) throws Exception { ChartViewWithBLOBs view = chartViewMapper.selectByPrimaryKey(id); + if (ObjectUtils.isEmpty(view)) { + throw new RuntimeException(Translator.get("i18n_chart_delete")); + } List xAxis = new Gson().fromJson(view.getXAxis(), new TypeToken>() { }.getType()); List yAxis = new Gson().fromJson(view.getYAxis(), new TypeToken>() { @@ -122,10 +125,16 @@ public class ChartViewService { // 获取数据集 DatasetTable table = dataSetTableService.get(view.getTableId()); + if (ObjectUtils.isEmpty(table)) { + throw new RuntimeException(Translator.get("i18n_dataset_delete")); + } // 判断连接方式,直连或者定时抽取 table.mode List data = new ArrayList<>(); if (table.getMode() == 0) {// 直连 Datasource ds = datasourceService.get(table.getDataSourceId()); + if (ObjectUtils.isEmpty(ds)) { + throw new RuntimeException(Translator.get("i18n_datasource_delete")); + } DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType()); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); 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 0b57ac3677..9c88a595c2 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -238,6 +238,9 @@ public class DataSetTableService { } if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "db")) { Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId()); + if (ObjectUtils.isEmpty(ds)) { + throw new RuntimeException(Translator.get("i18n_datasource_delete")); + } DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType()); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); @@ -258,6 +261,9 @@ public class DataSetTableService { } } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId()); + if (ObjectUtils.isEmpty(ds)) { + throw new RuntimeException(Translator.get("i18n_datasource_delete")); + } DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType()); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); @@ -813,6 +819,7 @@ public class DataSetTableService { if (cellTypeEnum.equals(CellType.STRING)) { if (cellType) { tableFiled.setFieldType("TEXT"); + tableFiled.setFieldSize(65533); } return cell.getStringCellValue(); } diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java index 4a35c5d1d1..88659a2354 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableTaskService.java @@ -63,7 +63,7 @@ public class DataSetTableTaskService { if (datasetTableTask.getRate().equalsIgnoreCase(ScheduleType.SIMPLE.toString())) { if (extractDataService.updateSyncStatus(dataSetTableService.get(datasetTableTask.getTableId()))) { throw new Exception(Translator.get("i18n_sync_job_exists")); - } else { + }else { //write log DatasetTableTaskLog datasetTableTaskLog = new DatasetTableTaskLog(); datasetTableTaskLog.setTableId(datasetTableTask.getTableId()); diff --git a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java index 7118982df8..ba8424ea44 100644 --- a/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java +++ b/backend/src/main/java/io/dataease/service/dataset/ExtractDataService.java @@ -689,6 +689,7 @@ public class ExtractDataService { String tmp_code = code.replace("alterColumnTypeCode", needToChangeColumnType).replace("Column_Fields", String.join(",", datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList()))); if(isExcel){ tmp_code = tmp_code.replace("handleExcelIntColumn", handleExcelIntColumn); + tmp_code = tmp_code.replace("handleExcelWraps", handleExcelWraps); }else { tmp_code = tmp_code.replace("handleExcelIntColumn", ""); } @@ -746,6 +747,14 @@ public class ExtractDataService { " }catch (Exception e){}\n" + " }"; + private static String handleExcelWraps = " \n" + + " if(tmp != null ){\n" + + " tmp = tmp.trim();\n" + + " tmp = tmp.replaceAll(\"\\r\",\" \");\n" + + " tmp = tmp.replaceAll(\"\\n\",\" \");\n" + + " get(Fields.Out, filed).setValue(r, tmp);\n" + + " }"; + private static String code = "import org.pentaho.di.core.row.ValueMetaInterface;\n" + "import java.util.List;\n" + "import java.io.File;\n" + @@ -775,6 +784,7 @@ public class ExtractDataService { " List fileds = Arrays.asList(\"Column_Fields\".split(\",\"));\n" + " for (String filed : fileds) {\n" + " String tmp = get(Fields.In, filed).getString(r);\n" + + "handleExcelWraps \n" + "alterColumnTypeCode \n" + "handleExcelIntColumn \n" + " str = str + tmp;\n" + diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index 92ff232206..1da183efbe 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -246,5 +246,9 @@ i18n_sync_job_exists=There is already a synchronization task running, please try i18n_datasource_check_fail=Invalid,please check config i18n_not_find_user=Can not find user. i18n_sql_not_empty=SQL can not be empty. +i18n_datasource_not_allow_delete_msg= datasets are using this data source and cannot be deleted i18n_task_name_repeat=Name is used in same data set -i18n_id_or_pwd_error=Invalid ID or password \ No newline at end of file +i18n_id_or_pwd_error=Invalid ID or password +i18n_datasource_delete=Data source is delete +i18n_dataset_delete=Data set is delete +i18n_chart_delete=Chart is delete diff --git a/backend/src/main/resources/i18n/messages_zh_CN.properties b/backend/src/main/resources/i18n/messages_zh_CN.properties index f4330b8a53..32c16a21b7 100644 --- a/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -159,7 +159,6 @@ quota_duration_excess_organization=压测时长超过组织限额 import_xmind_count_error=思维导图导入用例数量不能超过 500 条 license_valid_license_error=授权认证失败 import_xmind_not_found=未找到测试用例 - test_review_task_notice=测试评审任务通知 test_track.length_less_than=标题过长,字数必须小于 # check owner @@ -185,7 +184,6 @@ automation_exec_info=没有测试步骤,无法执行 authsource_name_already_exists=认证源名称已经存在 authsource_name_is_null=认证源名称不能为空 authsource_configuration_is_null=认证源配置不能为空 - 个人信息=个人信息 仪表板=仪表板 修改密码=修改密码 @@ -248,5 +246,9 @@ i18n_sync_job_exists=已经有同步任务在运行,稍后重试 i18n_datasource_check_fail=校验失败,请检查配置信息 i18n_not_find_user=未找到用户 i18n_sql_not_empty=SQL 不能为空 +i18n_datasource_not_allow_delete_msg= 个数据集正在使用此数据源,无法删除 i18n_task_name_repeat=同一数据集下任务名称已被使用 -i18n_id_or_pwd_error=无效的ID或密码 \ No newline at end of file +i18n_id_or_pwd_error=无效的ID或密码 +i18n_datasource_delete=当前用到的数据源已被删除 +i18n_dataset_delete=当前用到的数据集已被删除 +i18n_chart_delete=当前用到的视图已被删除 diff --git a/backend/src/main/resources/i18n/messages_zh_TW.properties b/backend/src/main/resources/i18n/messages_zh_TW.properties index 5537823911..7b65513ca1 100644 --- a/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -248,5 +248,9 @@ i18n_sync_job_exists=已經有同步任務在運行,稍後重試 i18n_datasource_check_fail=校驗失敗,請檢查配置信息 i18n_not_find_user=未找到用戶 i18n_sql_not_empty=SQL 不能為空 +i18n_datasource_not_allow_delete_msg= 個數據集正在使用此數據源,無法刪除 i18n_task_name_repeat=同一數據集下任務名稱已被使用 -i18n_id_or_pwd_error=無效的ID或密碼 \ No newline at end of file +i18n_id_or_pwd_error=無效的ID或密碼 +i18n_datasource_delete=當前用到的數據源已被刪除 +i18n_dataset_delete=當前用到的數據集已被刪除 +i18n_chart_delete=當前用到的視圖已被刪除 diff --git a/frontend/src/components/canvas/components/Editor/Shape.vue b/frontend/src/components/canvas/components/Editor/Shape.vue index 2cc91c0502..2fdc44c1b8 100644 --- a/frontend/src/components/canvas/components/Editor/Shape.vue +++ b/frontend/src/components/canvas/components/Editor/Shape.vue @@ -89,6 +89,7 @@ export default { if (this.curComponent) { this.cursors = this.getCursor() // 根据旋转角度获取光标位置 } + this.element.type === 'custom' && (this.pointList = ['l', 'r']) eventBus.$on('runAnimation', () => { if (this.element === this.curComponent) { @@ -221,7 +222,7 @@ export default { handleMouseDownOnShape(e) { this.$store.commit('setClickComponentStatus', true) - if (this.element.component !== 'v-text' && this.element.component !== 'rect-shape') { + if (this.element.component !== 'v-text' && this.element.component !== 'rect-shape' && this.element.component !== 'de-input-search') { e.preventDefault() } diff --git a/frontend/src/components/canvas/custom-component/UserView.vue b/frontend/src/components/canvas/custom-component/UserView.vue index 0c07d74df5..aef84fac77 100644 --- a/frontend/src/components/canvas/custom-component/UserView.vue +++ b/frontend/src/components/canvas/custom-component/UserView.vue @@ -1,9 +1,10 @@