diff --git a/core/core-backend/src/main/java/io/dataease/dataset/utils/FieldUtils.java b/core/core-backend/src/main/java/io/dataease/dataset/utils/FieldUtils.java index 1825e46bda..a4fb50b877 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/utils/FieldUtils.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/utils/FieldUtils.java @@ -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 text = Arrays.asList("CHAR", "VARCHAR", "TEXT", "TINYTEXT", "MEDIUMTEXT", "LONGTEXT", "ENUM", "ANY", "STRING", "BOOL", "BOOLEAN"); + List time = Arrays.asList("DATE", "TIME", "YEAR", "DATETIME", "TIMESTAMP", "DATEV2", "DATETIMEV2", "DATETIME2", "DATETIMEOFFSET", "SMALLDATETIME", "DATETIME64", "_TIMESTAMPTZ", "TIMESTAMPTZ"); + List num = Arrays.asList("INT", "SMALLINT", "MEDIUMINT", "INTEGER", "BIGINT", "LONG", "INT2", "INT4", "INT8", "int2", "int4", "int8", "INT16", "INT32", "INT64", "UINT8", "UINT16", "UINT32", "UINT64"); + List doubleList = Arrays.asList("NUMBER", "FLOAT", "DOUBLE", "DECIMAL", "REAL", "MONEY", "NUMERIC", "float4", "float8", "FLOAT4", "FLOAT8", "DECFLOAT", "FLOAT32", "FLOAT64"); + List 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) { diff --git a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java index 6135035b5c..e8ac757db9 100644 --- a/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java +++ b/core/core-backend/src/main/java/io/dataease/exportCenter/manage/ExportCenterManage.java @@ -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); diff --git a/sdk/common/src/main/java/io/dataease/utils/CommonThreadPool.java b/sdk/common/src/main/java/io/dataease/utils/CommonThreadPool.java index 48aaec3420..17f9c30a7c 100644 --- a/sdk/common/src/main/java/io/dataease/utils/CommonThreadPool.java +++ b/sdk/common/src/main/java/io/dataease/utils/CommonThreadPool.java @@ -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); }