forked from github/dataease
Merge branch 'main' of github.com:dataease/dataease into main
This commit is contained in:
commit
c627f44e6e
@ -6,16 +6,9 @@ import org.quartz.impl.triggers.CronTriggerImpl;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.text.DateFormat;
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.ZonedDateTime;
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ScheduleManager {
|
public class ScheduleManager {
|
||||||
|
@ -7,5 +7,7 @@ package io.dataease.provider;
|
|||||||
public abstract class DDLProvider {
|
public abstract class DDLProvider {
|
||||||
public abstract String createView(String name, String viewSQL);
|
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);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,12 @@ public class DorisDDLProvider extends DDLProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String dropTableOrView(String name) {
|
public String dropTable(String name) {
|
||||||
return "DROP TABLE IF EXISTS " + name;
|
return "DROP TABLE IF EXISTS " + name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String dropView(String name) {
|
||||||
|
return "DROP VIEW IF EXISTS " + name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,12 @@ public class MysqlDDLProvider extends DDLProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String dropTableOrView(String name) {
|
public String dropTable(String name) {
|
||||||
return "DROP TABLE IF EXISTS " + name;
|
return "DROP TABLE IF EXISTS " + name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String dropView(String name) {
|
||||||
|
return "DROP VIEW IF EXISTS " + name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,9 +34,9 @@ public class ScheduleService {
|
|||||||
endTime = null;
|
endTime = null;
|
||||||
} else {
|
} else {
|
||||||
endTime = new Date(datasetTableTask.getEndTime());
|
endTime = new Date(datasetTableTask.getEndTime());
|
||||||
if (endTime.before(new Date())) {
|
// if (endTime.before(new Date())) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
scheduleManager.addOrUpdateCronJob(new JobKey(datasetTableTask.getId(), datasetTableTask.getTableId()),
|
scheduleManager.addOrUpdateCronJob(new JobKey(datasetTableTask.getId(), datasetTableTask.getTableId()),
|
||||||
|
@ -127,28 +127,36 @@ public class DataSetTableService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void delete(String id) throws Exception {
|
public void delete(String id) throws Exception {
|
||||||
|
DatasetTable table = datasetTableMapper.selectByPrimaryKey(id);
|
||||||
datasetTableMapper.deleteByPrimaryKey(id);
|
datasetTableMapper.deleteByPrimaryKey(id);
|
||||||
dataSetTableFieldsService.deleteByTableId(id);
|
dataSetTableFieldsService.deleteByTableId(id);
|
||||||
// 删除同步任务
|
// 删除同步任务
|
||||||
dataSetTableTaskService.deleteByTableId(id);
|
dataSetTableTaskService.deleteByTableId(id);
|
||||||
try {
|
try {
|
||||||
deleteDorisTable(id);
|
deleteDorisTable(id, table);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteDorisTable(String datasetId) throws Exception {
|
private void deleteDorisTable(String datasetId, DatasetTable table) throws Exception {
|
||||||
String dorisTableName = DorisTableUtils.dorisName(datasetId);
|
String dorisTableName = DorisTableUtils.dorisName(datasetId);
|
||||||
Datasource dorisDatasource = (Datasource) CommonBeanFactory.getBean("DorisDatasource");
|
Datasource dorisDatasource = (Datasource) CommonBeanFactory.getBean("DorisDatasource");
|
||||||
JdbcProvider jdbcProvider = CommonBeanFactory.getBean(JdbcProvider.class);
|
JdbcProvider jdbcProvider = CommonBeanFactory.getBean(JdbcProvider.class);
|
||||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||||
datasourceRequest.setDatasource(dorisDatasource);
|
datasourceRequest.setDatasource(dorisDatasource);
|
||||||
DDLProvider ddlProvider = ProviderFactory.getDDLProvider(dorisDatasource.getType());
|
DDLProvider ddlProvider = ProviderFactory.getDDLProvider(dorisDatasource.getType());
|
||||||
datasourceRequest.setQuery(ddlProvider.dropTableOrView(dorisTableName));
|
if (StringUtils.equalsIgnoreCase("custom", table.getType())) {
|
||||||
jdbcProvider.exec(datasourceRequest);
|
datasourceRequest.setQuery(ddlProvider.dropView(dorisTableName));
|
||||||
datasourceRequest.setQuery(ddlProvider.dropTableOrView(DorisTableUtils.dorisTmpName(dorisTableName)));
|
jdbcProvider.exec(datasourceRequest);
|
||||||
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<DataSetTableDTO> list(DataSetTableRequest dataSetTableRequest) {
|
public List<DataSetTableDTO> list(DataSetTableRequest dataSetTableRequest) {
|
||||||
@ -570,7 +578,7 @@ public class DataSetTableService {
|
|||||||
datasourceRequest.setDatasource(dorisDatasource);
|
datasourceRequest.setDatasource(dorisDatasource);
|
||||||
DDLProvider ddlProvider = ProviderFactory.getDDLProvider(dorisDatasource.getType());
|
DDLProvider ddlProvider = ProviderFactory.getDDLProvider(dorisDatasource.getType());
|
||||||
// 先删除表
|
// 先删除表
|
||||||
datasourceRequest.setQuery(ddlProvider.dropTableOrView(dorisTableName));
|
datasourceRequest.setQuery(ddlProvider.dropView(dorisTableName));
|
||||||
jdbcProvider.exec(datasourceRequest);
|
jdbcProvider.exec(datasourceRequest);
|
||||||
datasourceRequest.setQuery(ddlProvider.createView(dorisTableName, customSql));
|
datasourceRequest.setQuery(ddlProvider.createView(dorisTableName, customSql));
|
||||||
jdbcProvider.exec(datasourceRequest);
|
jdbcProvider.exec(datasourceRequest);
|
||||||
@ -705,9 +713,9 @@ public class DataSetTableService {
|
|||||||
tableFiled.setFieldName(columnName);
|
tableFiled.setFieldName(columnName);
|
||||||
tableFiled.setRemarks(columnName);
|
tableFiled.setRemarks(columnName);
|
||||||
fields.add(tableFiled);
|
fields.add(tableFiled);
|
||||||
} else if (i == 1){
|
} else if (i == 1) {
|
||||||
r[j] = readCell(row.getCell(j), true, fields.get(j));
|
r[j] = readCell(row.getCell(j), true, fields.get(j));
|
||||||
}else {
|
} else {
|
||||||
r[j] = readCell(row.getCell(j), false, null);
|
r[j] = readCell(row.getCell(j), false, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -738,16 +746,16 @@ public class DataSetTableService {
|
|||||||
TableFiled tableFiled = new TableFiled();
|
TableFiled tableFiled = new TableFiled();
|
||||||
tableFiled.setFieldType("TEXT");
|
tableFiled.setFieldType("TEXT");
|
||||||
tableFiled.setFieldSize(1024);
|
tableFiled.setFieldSize(1024);
|
||||||
String columnName = readCell(row.getCell(j),false, null);
|
String columnName = readCell(row.getCell(j), false, null);
|
||||||
if (StringUtils.isEmpty(columnName)) {
|
if (StringUtils.isEmpty(columnName)) {
|
||||||
columnName = "NONE_" + String.valueOf(j);
|
columnName = "NONE_" + String.valueOf(j);
|
||||||
}
|
}
|
||||||
tableFiled.setFieldName(columnName);
|
tableFiled.setFieldName(columnName);
|
||||||
tableFiled.setRemarks(columnName);
|
tableFiled.setRemarks(columnName);
|
||||||
fields.add(tableFiled);
|
fields.add(tableFiled);
|
||||||
} else if (i == 1){
|
} else if (i == 1) {
|
||||||
r[j] = readCell(row.getCell(j), true, fields.get(j));
|
r[j] = readCell(row.getCell(j), true, fields.get(j));
|
||||||
}else {
|
} else {
|
||||||
r[j] = readCell(row.getCell(j), false, null);
|
r[j] = readCell(row.getCell(j), false, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -801,28 +809,36 @@ public class DataSetTableService {
|
|||||||
private String readCell(Cell cell, boolean cellType, TableFiled tableFiled) {
|
private String readCell(Cell cell, boolean cellType, TableFiled tableFiled) {
|
||||||
CellType cellTypeEnum = cell.getCellTypeEnum();
|
CellType cellTypeEnum = cell.getCellTypeEnum();
|
||||||
if (cellTypeEnum.equals(CellType.STRING)) {
|
if (cellTypeEnum.equals(CellType.STRING)) {
|
||||||
if(cellType){ tableFiled.setFieldType("TEXT"); }
|
if (cellType) {
|
||||||
|
tableFiled.setFieldType("TEXT");
|
||||||
|
}
|
||||||
return cell.getStringCellValue();
|
return cell.getStringCellValue();
|
||||||
}
|
}
|
||||||
if (cellTypeEnum.equals(CellType.NUMERIC)) {
|
if (cellTypeEnum.equals(CellType.NUMERIC)) {
|
||||||
if(HSSFDateUtil.isCellDateFormatted(cell)){
|
if (HSSFDateUtil.isCellDateFormatted(cell)) {
|
||||||
if(cellType) { tableFiled.setFieldType("DATETIME"); }
|
if (cellType) {
|
||||||
|
tableFiled.setFieldType("DATETIME");
|
||||||
|
}
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
try {
|
try {
|
||||||
return sdf.format(cell.getDateCellValue());
|
return sdf.format(cell.getDateCellValue());
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
double d = cell.getNumericCellValue();
|
double d = cell.getNumericCellValue();
|
||||||
try {
|
try {
|
||||||
Double value = new Double(d);
|
Double value = new Double(d);
|
||||||
double eps = 1e-10;
|
double eps = 1e-10;
|
||||||
if(value - Math.floor(value) < eps){
|
if (value - Math.floor(value) < eps) {
|
||||||
if(cellType) { tableFiled.setFieldType("LONG"); }
|
if (cellType) {
|
||||||
|
tableFiled.setFieldType("LONG");
|
||||||
|
}
|
||||||
return value.longValue() + "";
|
return value.longValue() + "";
|
||||||
}else {
|
} else {
|
||||||
if(cellType){ tableFiled.setFieldType("DOUBLE");}
|
if (cellType) {
|
||||||
|
tableFiled.setFieldType("DOUBLE");
|
||||||
|
}
|
||||||
NumberFormat nf = NumberFormat.getInstance();
|
NumberFormat nf = NumberFormat.getInstance();
|
||||||
nf.setGroupingUsed(false);
|
nf.setGroupingUsed(false);
|
||||||
return nf.format(value);
|
return nf.format(value);
|
||||||
|
@ -153,7 +153,7 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="css">
|
<style lang="css" scoped>
|
||||||
.el-checkbox+.el-checkbox {
|
.el-checkbox+.el-checkbox {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="css">
|
<style lang="css" scoped>
|
||||||
.el-checkbox+.el-checkbox {
|
.el-checkbox+.el-checkbox {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
@ -136,7 +136,7 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="css">
|
<style lang="css" scoped>
|
||||||
.el-checkbox+.el-checkbox {
|
.el-checkbox+.el-checkbox {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
@ -139,7 +139,7 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="css">
|
<style lang="css" scoped>
|
||||||
.el-checkbox+.el-checkbox {
|
.el-checkbox+.el-checkbox {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="css">
|
<style lang="css" scoped>
|
||||||
.el-checkbox+.el-checkbox {
|
.el-checkbox+.el-checkbox {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="css">
|
<style lang="css" scoped>
|
||||||
.el-checkbox+.el-checkbox {
|
.el-checkbox+.el-checkbox {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user