From e20f4c23ed6bb52fa3034c93f70fe7b1f573e51b Mon Sep 17 00:00:00 2001 From: junjie Date: Wed, 2 Jun 2021 17:08:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(fix):=E5=89=8D=E7=AB=AF=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E5=86=B2=E7=AA=81=E4=BF=AE=E5=A4=8D=EF=BC=9Bdoris=20d?= =?UTF-8?q?dl=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../job/sechedule/ScheduleManager.java | 9 +-- .../io/dataease/provider/DDLProvider.java | 4 +- .../provider/doris/DorisDDLProvider.java | 7 ++- .../provider/mysql/MysqlDDLProvider.java | 7 ++- .../service/dataset/DataSetTableService.java | 58 ++++++++++++------- frontend/src/components/cron/cron/day.vue | 2 +- frontend/src/components/cron/cron/hour.vue | 2 +- frontend/src/components/cron/cron/month.vue | 2 +- .../components/cron/cron/secondAndMinute.vue | 2 +- frontend/src/components/cron/cron/week.vue | 2 +- frontend/src/components/cron/cron/year.vue | 2 +- 11 files changed, 59 insertions(+), 38 deletions(-) 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/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 45b4303c4f..91b5a76e79 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) { @@ -567,7 +575,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 +710,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 +743,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 +806,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/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 { } -