diff --git a/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java b/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java index 79f06b6784..562561dcb2 100644 --- a/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java +++ b/backend/src/main/java/io/dataease/job/sechedule/ScheduleManager.java @@ -6,16 +6,9 @@ import org.quartz.impl.triggers.CronTriggerImpl; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.text.DateFormat; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.ZonedDateTime; import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Component public class ScheduleManager { diff --git a/backend/src/main/java/io/dataease/provider/DDLProvider.java b/backend/src/main/java/io/dataease/provider/DDLProvider.java index 88db6f9871..0ecc829ab5 100644 --- a/backend/src/main/java/io/dataease/provider/DDLProvider.java +++ b/backend/src/main/java/io/dataease/provider/DDLProvider.java @@ -7,5 +7,7 @@ package io.dataease.provider; public abstract class DDLProvider { public abstract String createView(String name, String viewSQL); - public abstract String dropTableOrView(String name); + public abstract String dropTable(String name); + + public abstract String dropView(String name); } diff --git a/backend/src/main/java/io/dataease/provider/doris/DorisDDLProvider.java b/backend/src/main/java/io/dataease/provider/doris/DorisDDLProvider.java index a3448b6079..b86dca6eca 100644 --- a/backend/src/main/java/io/dataease/provider/doris/DorisDDLProvider.java +++ b/backend/src/main/java/io/dataease/provider/doris/DorisDDLProvider.java @@ -15,7 +15,12 @@ public class DorisDDLProvider extends DDLProvider { } @Override - public String dropTableOrView(String name) { + public String dropTable(String name) { return "DROP TABLE IF EXISTS " + name; } + + @Override + public String dropView(String name) { + return "DROP VIEW IF EXISTS " + name; + } } diff --git a/backend/src/main/java/io/dataease/provider/mysql/MysqlDDLProvider.java b/backend/src/main/java/io/dataease/provider/mysql/MysqlDDLProvider.java index 5f51f5459f..5e44c86662 100644 --- a/backend/src/main/java/io/dataease/provider/mysql/MysqlDDLProvider.java +++ b/backend/src/main/java/io/dataease/provider/mysql/MysqlDDLProvider.java @@ -15,7 +15,12 @@ public class MysqlDDLProvider extends DDLProvider { } @Override - public String dropTableOrView(String name) { + public String dropTable(String name) { return "DROP TABLE IF EXISTS " + name; } + + @Override + public String dropView(String name) { + return "DROP VIEW IF EXISTS " + name; + } } diff --git a/backend/src/main/java/io/dataease/service/ScheduleService.java b/backend/src/main/java/io/dataease/service/ScheduleService.java index 8181953a43..9efef3d772 100644 --- a/backend/src/main/java/io/dataease/service/ScheduleService.java +++ b/backend/src/main/java/io/dataease/service/ScheduleService.java @@ -34,9 +34,9 @@ public class ScheduleService { endTime = null; } else { endTime = new Date(datasetTableTask.getEndTime()); - if (endTime.before(new Date())) { - return; - } +// if (endTime.before(new Date())) { +// return; +// } } scheduleManager.addOrUpdateCronJob(new JobKey(datasetTableTask.getId(), datasetTableTask.getTableId()), 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 45b4303c4f..29d8d1b884 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -127,28 +127,36 @@ public class DataSetTableService { } public void delete(String id) throws Exception { + DatasetTable table = datasetTableMapper.selectByPrimaryKey(id); datasetTableMapper.deleteByPrimaryKey(id); dataSetTableFieldsService.deleteByTableId(id); // 删除同步任务 dataSetTableTaskService.deleteByTableId(id); try { - deleteDorisTable(id); + deleteDorisTable(id, table); } catch (Exception e) { } } - private void deleteDorisTable(String datasetId) throws Exception { + private void deleteDorisTable(String datasetId, DatasetTable table) throws Exception { String dorisTableName = DorisTableUtils.dorisName(datasetId); Datasource dorisDatasource = (Datasource) CommonBeanFactory.getBean("DorisDatasource"); JdbcProvider jdbcProvider = CommonBeanFactory.getBean(JdbcProvider.class); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(dorisDatasource); DDLProvider ddlProvider = ProviderFactory.getDDLProvider(dorisDatasource.getType()); - datasourceRequest.setQuery(ddlProvider.dropTableOrView(dorisTableName)); - jdbcProvider.exec(datasourceRequest); - datasourceRequest.setQuery(ddlProvider.dropTableOrView(DorisTableUtils.dorisTmpName(dorisTableName))); - jdbcProvider.exec(datasourceRequest); + if (StringUtils.equalsIgnoreCase("custom", table.getType())) { + datasourceRequest.setQuery(ddlProvider.dropView(dorisTableName)); + jdbcProvider.exec(datasourceRequest); + datasourceRequest.setQuery(ddlProvider.dropView(DorisTableUtils.dorisTmpName(dorisTableName))); + jdbcProvider.exec(datasourceRequest); + } else { + datasourceRequest.setQuery(ddlProvider.dropTable(dorisTableName)); + jdbcProvider.exec(datasourceRequest); + datasourceRequest.setQuery(ddlProvider.dropTable(DorisTableUtils.dorisTmpName(dorisTableName))); + jdbcProvider.exec(datasourceRequest); + } } public List list(DataSetTableRequest dataSetTableRequest) { @@ -351,6 +359,9 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String sql = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql(); // 使用输入的sql先预执行一次,并拿到所有字段 + if(StringUtils.isEmpty(sql)){ + throw new Exception(Translator.get("i18n_sql_not_empty")); + } datasourceRequest.setQuery(sql); List previewFields = datasourceProvider.fetchResultField(datasourceRequest); // 正式执行 @@ -567,7 +578,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(dorisDatasource); DDLProvider ddlProvider = ProviderFactory.getDDLProvider(dorisDatasource.getType()); // 先删除表 - datasourceRequest.setQuery(ddlProvider.dropTableOrView(dorisTableName)); + datasourceRequest.setQuery(ddlProvider.dropView(dorisTableName)); jdbcProvider.exec(datasourceRequest); datasourceRequest.setQuery(ddlProvider.createView(dorisTableName, customSql)); jdbcProvider.exec(datasourceRequest); @@ -702,9 +713,9 @@ public class DataSetTableService { tableFiled.setFieldName(columnName); tableFiled.setRemarks(columnName); fields.add(tableFiled); - } else if (i == 1){ + } else if (i == 1) { r[j] = readCell(row.getCell(j), true, fields.get(j)); - }else { + } else { r[j] = readCell(row.getCell(j), false, null); } } @@ -735,16 +746,16 @@ public class DataSetTableService { TableFiled tableFiled = new TableFiled(); tableFiled.setFieldType("TEXT"); tableFiled.setFieldSize(1024); - String columnName = readCell(row.getCell(j),false, null); + String columnName = readCell(row.getCell(j), false, null); if (StringUtils.isEmpty(columnName)) { columnName = "NONE_" + String.valueOf(j); } tableFiled.setFieldName(columnName); tableFiled.setRemarks(columnName); fields.add(tableFiled); - } else if (i == 1){ + } else if (i == 1) { r[j] = readCell(row.getCell(j), true, fields.get(j)); - }else { + } else { r[j] = readCell(row.getCell(j), false, null); } } @@ -798,28 +809,36 @@ public class DataSetTableService { private String readCell(Cell cell, boolean cellType, TableFiled tableFiled) { CellType cellTypeEnum = cell.getCellTypeEnum(); if (cellTypeEnum.equals(CellType.STRING)) { - if(cellType){ tableFiled.setFieldType("TEXT"); } + if (cellType) { + tableFiled.setFieldType("TEXT"); + } return cell.getStringCellValue(); } if (cellTypeEnum.equals(CellType.NUMERIC)) { - if(HSSFDateUtil.isCellDateFormatted(cell)){ - if(cellType) { tableFiled.setFieldType("DATETIME"); } + if (HSSFDateUtil.isCellDateFormatted(cell)) { + if (cellType) { + tableFiled.setFieldType("DATETIME"); + } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { return sdf.format(cell.getDateCellValue()); - }catch (Exception e){ + } catch (Exception e) { return ""; } - }else { + } else { double d = cell.getNumericCellValue(); try { Double value = new Double(d); double eps = 1e-10; - if(value - Math.floor(value) < eps){ - if(cellType) { tableFiled.setFieldType("LONG"); } + if (value - Math.floor(value) < eps) { + if (cellType) { + tableFiled.setFieldType("LONG"); + } return value.longValue() + ""; - }else { - if(cellType){ tableFiled.setFieldType("DOUBLE");} + } else { + if (cellType) { + tableFiled.setFieldType("DOUBLE"); + } NumberFormat nf = NumberFormat.getInstance(); nf.setGroupingUsed(false); return nf.format(value); diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index b84486d115..0a378bdf4d 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -244,4 +244,5 @@ i18n_username_exists=ID is already exists i18n_ds_name_exists=Datasource name exists i18n_sync_job_exists=There is already a synchronization task running, please try again later i18n_datasource_check_fail=Invalid,please check config -i18n_not_find_user=Can not find user. \ No newline at end of file +i18n_not_find_user=Can not find user. +i18n_sql_not_empty=SQL can not be empty. \ No newline at end of file diff --git a/backend/src/main/resources/i18n/messages_zh_CN.properties b/backend/src/main/resources/i18n/messages_zh_CN.properties index 83339dfbfb..46259d26ec 100644 --- a/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -246,4 +246,5 @@ i18n_username_exists=用户 ID 已存在 i18n_ds_name_exists=数据源名称已存在 i18n_sync_job_exists=已经有同步任务在运行,稍后重试 i18n_datasource_check_fail=校验失败,请检查配置信息 -i18n_not_find_user=未找到用户 \ No newline at end of file +i18n_not_find_user=未找到用户 +i18n_sql_not_empty=SQL 不能为空 \ No newline at end of file diff --git a/backend/src/main/resources/i18n/messages_zh_TW.properties b/backend/src/main/resources/i18n/messages_zh_TW.properties index 228e7081b3..fd650136bf 100644 --- a/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -246,4 +246,5 @@ i18n_username_exists=用戶ID已存在 i18n_ds_name_exists=數據源名稱已存在 i18n_sync_job_exists=已經有同步任務在運行,稍後重試 i18n_datasource_check_fail=校驗失敗,請檢查配置信息 -i18n_not_find_user=未找到用戶 \ No newline at end of file +i18n_not_find_user=未找到用戶 +i18n_sql_not_empty=SQL 不能為空 \ No newline at end of file diff --git a/frontend/src/api/dataset/dataset.js b/frontend/src/api/dataset/dataset.js index 0dd77de2ba..1bf56d0bdd 100644 --- a/frontend/src/api/dataset/dataset.js +++ b/frontend/src/api/dataset/dataset.js @@ -85,10 +85,10 @@ export function getPreviewData(data) { }) } -export function fieldList(id) { +export function fieldList(id, showLoading = true) { return request({ url: '/dataset/field/list/' + id, - loading: true, + loading: showLoading, method: 'post' }) } @@ -102,11 +102,11 @@ export function batchEdit(data) { }) } -export function post(url, data) { +export function post(url, data, showLoading = true) { return request({ url: url, method: 'post', - loading: true, + loading: showLoading, data }) } diff --git a/frontend/src/components/cron/cron/day.vue b/frontend/src/components/cron/cron/day.vue index 150d7ff41d..7647bab07d 100644 --- a/frontend/src/components/cron/cron/day.vue +++ b/frontend/src/components/cron/cron/day.vue @@ -153,7 +153,7 @@ export default { } -