Merge pull request #12294 from dataease/pr@dev2@fixds

Pr@dev2@fixds
This commit is contained in:
taojinlong 2024-09-19 16:08:13 +08:00 committed by GitHub
commit c70bb846aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 29 additions and 71 deletions

View File

@ -1,79 +1,32 @@
package io.dataease.dataset.utils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @Author Junjun
*/
public class FieldUtils {
public static int transType2DeType(String type) {
type = type.replaceAll("\\((.*?)\\)","");
switch (type) {
case "CHAR":
case "VARCHAR":
case "TEXT":
case "TINYTEXT":
case "MEDIUMTEXT":
case "LONGTEXT":
case "ENUM":
case "ANY":
case "STRING":
case "BOOL":
case "BOOLEAN":
return 0;// 文本
case "DATE":
case "TIME":
case "YEAR":
case "DATETIME":
case "TIMESTAMP":
case "DATEV2":
case "DATETIMEV2":
case "DATETIME2":
case "DATETIMEOFFSET":
case "SMALLDATETIME":
case "DATETIME64":
case "_TIMESTAMPTZ":
case "TIMESTAMPTZ":
return 1;// 时间
case "INT":
case "SMALLINT":
case "MEDIUMINT":
case "INTEGER":
case "BIGINT":
case "LONG": //增加了LONG类型
case "INT2":
case "INT4":
case "INT8":
case "int2":
case "int4":
case "int8":
case "INT16":
case "INT32":
case "INT64":
case "UINT8":
case "UINT16":
case "UINT32":
case "UINT64":
return 2;// 整型
case "NUMBER":
case "FLOAT":
case "DOUBLE":
case "DECIMAL":
case "REAL":
case "MONEY":
case "NUMERIC":
case "float4":
case "float8":
case "FLOAT4":
case "FLOAT8":
case "DECFLOAT":
case "FLOAT32":
case "FLOAT64":
return 3;// 浮点
case "BIT":
case "TINYINT":
return 4;// 布尔
default:
return 0;
public static int transType2DeType(final String type) {
List<String> text = Arrays.asList("CHAR", "VARCHAR", "TEXT", "TINYTEXT", "MEDIUMTEXT", "LONGTEXT", "ENUM", "ANY", "STRING", "BOOL", "BOOLEAN");
List<String> time = Arrays.asList("DATE", "TIME", "YEAR", "DATETIME", "TIMESTAMP", "DATEV2", "DATETIMEV2", "DATETIME2", "DATETIMEOFFSET", "SMALLDATETIME", "DATETIME64", "_TIMESTAMPTZ", "TIMESTAMPTZ");
List<String> num = Arrays.asList("INT", "SMALLINT", "MEDIUMINT", "INTEGER", "BIGINT", "LONG", "INT2", "INT4", "INT8", "int2", "int4", "int8", "INT16", "INT32", "INT64", "UINT8", "UINT16", "UINT32", "UINT64");
List<String> doubleList = Arrays.asList("NUMBER", "FLOAT", "DOUBLE", "DECIMAL", "REAL", "MONEY", "NUMERIC", "float4", "float8", "FLOAT4", "FLOAT8", "DECFLOAT", "FLOAT32", "FLOAT64");
List<String> boolType = Arrays.asList("BIT", "TINYINT");
if (boolType.stream().anyMatch(l -> type.contains(l))) {
return 4;// 布尔
}
if (doubleList.stream().anyMatch(l -> type.contains(l))) {
return 3;// 浮点
}
if (num.stream().anyMatch(l -> type.contains(l))) {
return 2;// 整型
}
if (time.stream().anyMatch(l -> type.contains(l))) {
return 1;// 时间
}
return 0;// 文本
}
public static String transDeType2DQ(int deType) {

View File

@ -96,7 +96,7 @@ public class ExportCenterManage implements BaseExportApi {
@Value("${dataease.export.max.size:10}")
private int max;
@Value("${dataease.export.dataset.limit:100000}")
@Value("${dataease.export.dataset.limit:20}")
private int limit;
private final static String DATA_URL_TITLE = "data:image/jpeg;base64,";
private static final String exportData_path = "/opt/dataease2.0/data/exportData/";
@ -503,13 +503,15 @@ public class ExportCenterManage implements BaseExportApi {
totalCount = totalCount > curLimit ? curLimit : totalCount;
Long totalPage = (totalCount / extractPageSize) + (totalCount % extractPageSize > 0 ? 1 : 0);
Workbook wb = new SXSSFWorkbook();
FileOutputStream fileOutputStream = new FileOutputStream(dataPath + "/" + request.getFilename() + ".xlsx");
Sheet detailsSheet = wb.createSheet("数据");
for (Integer p = 0; p < totalPage; p++) {
String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, false, p * extractPageSize, p * extractPageSize + extractPageSize);
if (totalPage == 1) {
querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, false, 0, totalCount.intValue());
}
querySQL = provider.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap);
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setQuery(querySQL);

View File

@ -15,6 +15,8 @@ public class CommonThreadPool {
private int maxQueueSize = 10;
private int maximumPoolSize = 10;
private int keepAliveSeconds = 600;
private ScheduledThreadPoolExecutor scheduledThreadPoolExecutor;
@ -22,6 +24,7 @@ public class CommonThreadPool {
@PostConstruct
public void init() {
scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(corePoolSize);
scheduledThreadPoolExecutor.setMaximumPoolSize(maximumPoolSize);
scheduledThreadPoolExecutor.setKeepAliveTime(keepAliveSeconds, TimeUnit.SECONDS);
}