diff --git a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java index df26854263..8b9dfc825c 100644 --- a/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java +++ b/backend/src/main/java/io/dataease/provider/datasource/JdbcProvider.java @@ -173,6 +173,9 @@ public class JdbcProvider extends DefaultJdbcProvider { } } } + if(StringUtils.isNotEmpty(tableField.getFieldType()) && tableField.getFieldType().equalsIgnoreCase("DECIMAL")){ + tableField.setAccuracy(Integer.valueOf(resultSet.getString("DECIMAL_DIGITS"))); + } return tableField; } diff --git a/backend/src/main/java/io/dataease/provider/engine/doris/DorisDDLProvider.java b/backend/src/main/java/io/dataease/provider/engine/doris/DorisDDLProvider.java index bae7ae9fba..374fa8460f 100644 --- a/backend/src/main/java/io/dataease/provider/engine/doris/DorisDDLProvider.java +++ b/backend/src/main/java/io/dataease/provider/engine/doris/DorisDDLProvider.java @@ -72,7 +72,11 @@ public class DorisDDLProvider extends DDLProviderImpl { Column_Fields.append("bigint").append(",`"); break; case 3: - Column_Fields.append("DOUBLE").append(",`"); + if(datasetTableField.getType().equalsIgnoreCase("DECIMAL") && datasetTableField.getAccuracy() != 0){ + Column_Fields.append("DECIMAL(" + datasetTableField.getSize() + "," + datasetTableField.getAccuracy() + ")").append(",`"); + }else { + Column_Fields.append("DOUBLE").append(",`"); + } break; case 4: Column_Fields.append("TINYINT(length)".replace("length", String.valueOf(size))).append(",`"); 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 7835eada20..0c2a697b5e 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -1947,6 +1947,7 @@ public class DataSetTableService { datasetTableField.setOriginName(filed.getFieldName()); datasetTableField.setType(filed.getFieldType()); datasetTableField.setSize(filed.getFieldSize()); + datasetTableField.setAccuracy(filed.getAccuracy()); if (ObjectUtils.isEmpty(ds)) { datasetTableField.setDeExtractType(transFieldType(filed.getFieldType())); } else { @@ -1972,6 +1973,7 @@ public class DataSetTableService { datasetTableField.setDeExtractType(fieldType); } datasetTableField.setSize(filed.getFieldSize()); + datasetTableField.setAccuracy(filed.getAccuracy()); datasetTableField.setChecked(true); datasetTableField.setLastSyncTime(syncTime); datasetTableField.setExtField(0); diff --git a/backend/src/main/resources/db/migration/V40__1.15.sql b/backend/src/main/resources/db/migration/V40__1.15.sql index b4b31501c6..1a51328486 100644 --- a/backend/src/main/resources/db/migration/V40__1.15.sql +++ b/backend/src/main/resources/db/migration/V40__1.15.sql @@ -121,3 +121,5 @@ ALTER TABLE `sys_user_assist` ADD COLUMN `dingtalk_id` varchar(255) NULL COMMENT '钉钉账号' AFTER `wecom_id`, ADD COLUMN `lark_id` varchar(255) NULL COMMENT '飞书账号' AFTER `dingtalk_id`; + +ALTER TABLE `dataset_table_field` ADD COLUMN `accuracy` INT(11) NULL DEFAULT 0 COMMENT '精度' AFTER `last_sync_time`;