From 65ca8a93808aa1a8d457d3e7be300e3470529a6f Mon Sep 17 00:00:00 2001 From: taojinlong Date: Tue, 18 Oct 2022 16:26:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=95=B0=E6=8D=AE=E9=9B=86):=20=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9B=86=E5=AD=97=E6=AE=B5=EF=BC=8C=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E8=BD=AC=E6=97=B6=E9=97=B4=EF=BC=8C=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/doris/DorisQueryProvider.java | 12 ++-- .../engine/mysql/MysqlQueryProvider.java | 10 +-- .../provider/query/db2/Db2QueryProvider.java | 29 +++++++-- .../provider/query/es/EsQueryProvider.java | 13 ++-- .../query/hive/HiveQueryProvider.java | 10 +-- .../query/impala/ImpalaQueryProvider.java | 12 ++-- .../query/mysql/MysqlQueryProvider.java | 11 ++-- .../query/oracle/OracleQueryProvider.java | 16 ++--- .../provider/query/pg/PgQueryProvider.java | 6 +- .../query/redshift/RedshiftQueryProvider.java | 6 +- .../sqlserver/SqlserverQueryProvider.java | 14 ++--- .../main/resources/db/migration/V42__1.16.sql | 3 + frontend/src/lang/en.js | 3 +- frontend/src/lang/tw.js | 3 +- frontend/src/lang/zh.js | 3 +- frontend/src/views/dataset/data/FieldEdit.vue | 62 ++++++++++++++++--- 16 files changed, 142 insertions(+), 71 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java index e5558e6f6a..d3f0661869 100644 --- a/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/engine/doris/DorisQueryProvider.java @@ -125,7 +125,7 @@ public class DorisQueryProvider extends QueryProvider { } else if (f.getDeType() == 3) { fieldName = String.format(DorisConstants.CAST, originField, DorisConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == 1) { - fieldName = String.format(DorisConstants.STR_TO_DATE, originField, DorisConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(DorisConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : DorisConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -201,7 +201,7 @@ public class DorisQueryProvider extends QueryProvider { } else if (f.getDeType() == 3) { fieldName = String.format(DorisConstants.CAST, originField, DorisConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == 1) { - fieldName = String.format(DorisConstants.STR_TO_DATE, originField, DorisConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(DorisConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : DorisConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -801,7 +801,7 @@ public class DorisQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) { - whereName = String.format(DorisConstants.STR_TO_DATE, originName, DorisConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(DorisConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : DorisConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(DorisConstants.CAST, originName, DorisConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -931,7 +931,7 @@ public class DorisQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) { - whereName = String.format(DorisConstants.STR_TO_DATE, originName, DorisConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(DorisConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : DorisConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(DorisConstants.CAST, originName, DorisConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -1035,7 +1035,7 @@ public class DorisQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) { - whereName = String.format(DorisConstants.STR_TO_DATE, originName, DorisConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(DorisConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : DorisConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(DorisConstants.CAST, originName, DorisConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -1147,7 +1147,7 @@ public class DorisQueryProvider extends QueryProvider { if (x.getDeType() == 1) { String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); if (x.getDeExtractType() == 0) { - fieldName = String.format(DorisConstants.DATE_FORMAT, String.format(DorisConstants.STR_TO_DATE, originField, DorisConstants.DEFAULT_DATE_FORMAT), format); + fieldName = String.format(DorisConstants.DATE_FORMAT, String.format(DorisConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(x.getDateFormat()) ? x.getDateFormat() : DorisConstants.DEFAULT_DATE_FORMAT), format); } else { String cast = String.format(DorisConstants.CAST, originField, DorisConstants.DEFAULT_INT_FORMAT) + "/1000"; String from_unixtime = String.format(DorisConstants.FROM_UNIXTIME, cast, DorisConstants.DEFAULT_DATE_FORMAT); diff --git a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java index 4c85369efc..eca6a0bd45 100644 --- a/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/engine/mysql/MysqlQueryProvider.java @@ -126,7 +126,7 @@ public class MysqlQueryProvider extends QueryProvider { } else if (f.getDeType() == 3) { fieldName = String.format(MysqlConstants.CAST, originField, MysqlConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == 1) { - fieldName = String.format(MysqlConstants.STR_TO_DATE, originField, MysqlConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(MysqlConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -201,7 +201,7 @@ public class MysqlQueryProvider extends QueryProvider { } else if (f.getDeType() == 3) { fieldName = String.format(MysqlConstants.CAST, originField, MysqlConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == 1) { - fieldName = String.format(MysqlConstants.STR_TO_DATE, originField, MysqlConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(MysqlConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -801,7 +801,7 @@ public class MysqlQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) { - whereName = String.format(MysqlConstants.STR_TO_DATE, originName, MysqlConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(MysqlConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(MysqlConstants.CAST, originName, MysqlConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -931,7 +931,7 @@ public class MysqlQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) { - whereName = String.format(MysqlConstants.STR_TO_DATE, originName, MysqlConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(MysqlConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(MysqlConstants.CAST, originName, MysqlConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -1040,7 +1040,7 @@ public class MysqlQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5 || field.getDeExtractType() == 1) { - whereName = String.format(MysqlConstants.STR_TO_DATE, originName, MysqlConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(MysqlConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(MysqlConstants.CAST, originName, MysqlConstants.DEFAULT_INT_FORMAT) + "/1000"; diff --git a/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java b/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java index b411be4b7d..1dd968cbc0 100644 --- a/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/db2/Db2QueryProvider.java @@ -131,6 +131,9 @@ public class Db2QueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(Db2Constants.CAST, originField, Db2Constants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { + if (StringUtils.isNotEmpty(f.getDateFormat())) { + originField = String.format(Db2Constants.TO_DATE, originField, f.getDateFormat()); + } fieldName = String.format(Db2Constants.DATE_FORMAT, originField, Db2Constants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; @@ -213,6 +216,9 @@ public class Db2QueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(Db2Constants.CAST, originField, Db2Constants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { + if (StringUtils.isNotEmpty(f.getDateFormat())) { + originField = String.format(Db2Constants.TO_DATE, originField, f.getDateFormat()); + } fieldName = String.format(Db2Constants.DATE_FORMAT, originField, Db2Constants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; @@ -824,7 +830,11 @@ public class Db2QueryProvider extends QueryProvider { } if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - originName = String.format(Db2Constants.STR_TO_DATE, originName); + if (StringUtils.isNotEmpty(field.getDateFormat())) { + originName = String.format(Db2Constants.TO_DATE, originName, field.getDateFormat()); + } else { + originName = String.format(Db2Constants.STR_TO_DATE, originName); + } whereName = String.format(Db2Constants.DATE_FORMAT, originName, Db2Constants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == DeTypeConstants.DE_FLOAT) { @@ -959,7 +969,11 @@ public class Db2QueryProvider extends QueryProvider { } if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - originName = String.format(Db2Constants.STR_TO_DATE, originName); + if (StringUtils.isNotEmpty(field.getDateFormat())) { + originName = String.format(Db2Constants.TO_DATE, originName, field.getDateFormat()); + } else { + originName = String.format(Db2Constants.STR_TO_DATE, originName); + } whereName = String.format(Db2Constants.DATE_FORMAT, originName, Db2Constants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == DeTypeConstants.DE_FLOAT) { @@ -1074,7 +1088,11 @@ public class Db2QueryProvider extends QueryProvider { if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - originName = String.format(Db2Constants.STR_TO_DATE, originName); + if (StringUtils.isNotEmpty(field.getDateFormat())) { + originName = String.format(Db2Constants.TO_DATE, originName, field.getDateFormat()); + } else { + originName = String.format(Db2Constants.STR_TO_DATE, originName); + } whereName = String.format(Db2Constants.DATE_FORMAT, originName, Db2Constants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { @@ -1210,6 +1228,9 @@ public class Db2QueryProvider extends QueryProvider { if (x.getDeType() == DeTypeConstants.DE_TIME) { String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); if (x.getDeExtractType() == DeTypeConstants.DE_STRING) { + if (StringUtils.isNotEmpty(x.getDateFormat())) { + originField = String.format(Db2Constants.TO_DATE, originField, x.getDateFormat()); + } fieldName = String.format(Db2Constants.DATE_FORMAT, originField, format); } else { String cast = String.format(Db2Constants.CAST, originField, Db2Constants.DEFAULT_INT_FORMAT); @@ -1337,7 +1358,7 @@ public class Db2QueryProvider extends QueryProvider { } @Override - public String sqlForPreview(String table, Datasource ds){ + public String sqlForPreview(String table, Datasource ds) { String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema(); schema = String.format(Db2Constants.KEYWORD_TABLE, schema); return "SELECT * FROM " + schema + "." + String.format(Db2Constants.KEYWORD_TABLE, table); diff --git a/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java index 74e0968d52..673392fabc 100644 --- a/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java @@ -155,7 +155,7 @@ public class EsQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(EsSqlLConstants.CAST, originField, "double"); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { - fieldName = String.format(EsSqlLConstants.CAST, originField, "timestamp"); + fieldName = String.format(EsSqlLConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : EsSqlLConstants.DEFAULT_DATE_FORMAT, EsSqlLConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -232,7 +232,7 @@ public class EsQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(EsSqlLConstants.CAST, originField, "double"); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { - fieldName = String.format(EsSqlLConstants.CAST, originField, "timestamp"); + fieldName = String.format(EsSqlLConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : EsSqlLConstants.DEFAULT_DATE_FORMAT, EsSqlLConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -858,7 +858,7 @@ public class EsQueryProvider extends QueryProvider { } if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(EsSqlLConstants.CAST, originName, "timestamp"); + whereName = String.format(EsSqlLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : EsSqlLConstants.DEFAULT_DATE_FORMAT, EsSqlLConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == DeTypeConstants.DE_FLOAT || field.getDeExtractType() == DeTypeConstants.DE_BOOL) { String cast = String.format(EsSqlLConstants.CAST, originName, "timestamp"); @@ -981,7 +981,7 @@ public class EsQueryProvider extends QueryProvider { } if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(EsSqlLConstants.CAST, originName, "timestamp"); + whereName = String.format(EsSqlLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : EsSqlLConstants.DEFAULT_DATE_FORMAT, EsSqlLConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == DeTypeConstants.DE_FLOAT || field.getDeExtractType() == DeTypeConstants.DE_BOOL) { String cast = String.format(EsSqlLConstants.CAST, originName, "timestamp"); @@ -1079,7 +1079,7 @@ public class EsQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(EsSqlLConstants.CAST, originName, "timestamp"); + whereName = String.format(EsSqlLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : EsSqlLConstants.DEFAULT_DATE_FORMAT, EsSqlLConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(EsSqlLConstants.CAST, originName, "timestamp"); @@ -1193,8 +1193,7 @@ public class EsQueryProvider extends QueryProvider { if (x.getDeType() == DeTypeConstants.DE_TIME) { String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); if (x.getDeExtractType() == DeTypeConstants.DE_STRING) { - String cast = String.format(EsSqlLConstants.CAST, originField, "timestamp"); - fieldName = String.format(EsSqlLConstants.DATETIME_FORMAT, cast, format); + fieldName = String.format(EsSqlLConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(x.getDateFormat()) ? x.getDateFormat() : EsSqlLConstants.DEFAULT_DATE_FORMAT, format); } else { String cast = String.format(EsSqlLConstants.CAST, originField, "timestamp"); fieldName = String.format(EsSqlLConstants.DATETIME_FORMAT, cast, format); diff --git a/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java index cd27e75351..def9bcb0ba 100644 --- a/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/hive/HiveQueryProvider.java @@ -116,7 +116,7 @@ public class HiveQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(HiveConstants.CAST, originField, HiveConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { - fieldName = String.format(HiveConstants.STR_TO_DATE, originField, HiveConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(HiveConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : HiveConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -191,7 +191,7 @@ public class HiveQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(HiveConstants.CAST, originField, HiveConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { - fieldName = String.format(HiveConstants.STR_TO_DATE, originField, HiveConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(HiveConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : HiveConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -793,7 +793,7 @@ public class HiveQueryProvider extends QueryProvider { } if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - whereName = String.format(HiveConstants.STR_TO_DATE, originName, HiveConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(HiveConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : HiveConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(HiveConstants.CAST, originName, HiveConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -916,7 +916,7 @@ public class HiveQueryProvider extends QueryProvider { } if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - whereName = String.format(HiveConstants.STR_TO_DATE, originName, HiveConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(HiveConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : HiveConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(HiveConstants.CAST, originName, HiveConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -1015,7 +1015,7 @@ public class HiveQueryProvider extends QueryProvider { if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - whereName = String.format(HiveConstants.STR_TO_DATE, originName, HiveConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(HiveConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : HiveConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(HiveConstants.CAST, originName, HiveConstants.DEFAULT_INT_FORMAT) + "/1000"; diff --git a/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java index a5ad740a4c..fbaf4631e3 100644 --- a/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/impala/ImpalaQueryProvider.java @@ -113,7 +113,7 @@ public class ImpalaQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(ImpalaConstants.CAST, originField, ImpalaConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { - fieldName = String.format(ImpalaConstants.DATE_FORMAT, originField, ImpalaConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(ImpalaConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : ImpalaConstants.DEFAULT_DATE_FORMAT ,ImpalaConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -198,7 +198,7 @@ public class ImpalaQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(ImpalaConstants.CAST, originField, ImpalaConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { - fieldName = String.format(ImpalaConstants.DATE_FORMAT, originField, ImpalaConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(ImpalaConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : ImpalaConstants.DEFAULT_DATE_FORMAT ,ImpalaConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -790,7 +790,7 @@ public class ImpalaQueryProvider extends QueryProvider { } if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - whereName = String.format(ImpalaConstants.DATE_FORMAT, originName, ImpalaConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(ImpalaConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : ImpalaConstants.DEFAULT_DATE_FORMAT ,ImpalaConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(ImpalaConstants.CAST, originName, ImpalaConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -917,7 +917,7 @@ public class ImpalaQueryProvider extends QueryProvider { } if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - whereName = String.format(ImpalaConstants.DATE_FORMAT, originName, ImpalaConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(ImpalaConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : ImpalaConstants.DEFAULT_DATE_FORMAT ,ImpalaConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(ImpalaConstants.CAST, originName, ImpalaConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -1020,7 +1020,7 @@ public class ImpalaQueryProvider extends QueryProvider { if (field.getDeType() == DeTypeConstants.DE_TIME) { if (field.getDeExtractType() == DeTypeConstants.DE_STRING || field.getDeExtractType() == 5) { - whereName = String.format(ImpalaConstants.DATE_FORMAT, originName, ImpalaConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(ImpalaConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : ImpalaConstants.DEFAULT_DATE_FORMAT ,ImpalaConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == DeTypeConstants.DE_INT || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(ImpalaConstants.CAST, originName, ImpalaConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -1139,7 +1139,7 @@ public class ImpalaQueryProvider extends QueryProvider { if (x.getDeType() == DeTypeConstants.DE_TIME) { String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); if (x.getDeExtractType() == DeTypeConstants.DE_STRING) { - fieldName = String.format(ImpalaConstants.DATE_FORMAT, originField, format); + fieldName = String.format(ImpalaConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(x.getDateFormat()) ? x.getDateFormat() : ImpalaConstants.DEFAULT_DATE_FORMAT ,ImpalaConstants.DEFAULT_DATE_FORMAT); } else { String cast = String.format(ImpalaConstants.CAST, originField, ImpalaConstants.DEFAULT_INT_FORMAT) + "/1000"; String from_unixtime = String.format(ImpalaConstants.FROM_UNIXTIME, cast, ImpalaConstants.DEFAULT_DATE_FORMAT); diff --git a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java index a93217138c..73a9837054 100644 --- a/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/mysql/MysqlQueryProvider.java @@ -8,6 +8,7 @@ import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.datasource.MySQLConstants; import io.dataease.plugins.common.constants.datasource.SQLConstants; +import io.dataease.plugins.common.constants.engine.MysqlConstants; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO; @@ -128,7 +129,7 @@ public class MysqlQueryProvider extends QueryProvider { } else if (f.getDeType() == 3) { fieldName = String.format(MySQLConstants.CAST, originField, MySQLConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == 1) { - fieldName = String.format(MySQLConstants.STR_TO_DATE, originField, MySQLConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(MySQLConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -187,7 +188,7 @@ public class MysqlQueryProvider extends QueryProvider { } else if (f.getDeType() == 3) { fieldName = String.format(MySQLConstants.CAST, originField, MySQLConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == 1) { - fieldName = String.format(MySQLConstants.STR_TO_DATE, originField, MySQLConstants.DEFAULT_DATE_FORMAT); + fieldName = String.format(MySQLConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -814,7 +815,7 @@ public class MysqlQueryProvider extends QueryProvider { } if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(MySQLConstants.STR_TO_DATE, originName, MySQLConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(MySQLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -936,7 +937,7 @@ public class MysqlQueryProvider extends QueryProvider { } if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(MySQLConstants.STR_TO_DATE, originName, MySQLConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(MySQLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -1034,7 +1035,7 @@ public class MysqlQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(MySQLConstants.STR_TO_DATE, originName, MySQLConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(MySQLConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : MysqlConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(MySQLConstants.CAST, originName, MySQLConstants.DEFAULT_INT_FORMAT) + "/1000"; diff --git a/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java index 91e3a9db3c..38f524f5bf 100644 --- a/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/oracle/OracleQueryProvider.java @@ -851,7 +851,7 @@ public class OracleQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(OracleConstants.TO_DATE, originName, OracleConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(OracleConstants.TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : OracleConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(OracleConstants.CAST, originName, OracleConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -897,7 +897,7 @@ public class OracleQueryProvider extends QueryProvider { whereValue = "'%" + value + "%'"; } else { if (field.getDeType() == 1) { - whereValue = String.format(OracleConstants.TO_DATE, "'" + value + "'", OracleConstants.DEFAULT_DATE_FORMAT); + whereValue = String.format(OracleConstants.TO_DATE, "'" + value + "'", StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : OracleConstants.DEFAULT_DATE_FORMAT); } else { whereValue = String.format(OracleConstants.WHERE_VALUE_VALUE, value); } @@ -980,7 +980,7 @@ public class OracleQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(OracleConstants.TO_DATE, originName, OracleConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(OracleConstants.TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : OracleConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(OracleConstants.CAST, originName, OracleConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -1028,7 +1028,7 @@ public class OracleQueryProvider extends QueryProvider { whereValue = "'%" + value + "%'"; } else { if (field.getDeType() == 1) { - whereValue = String.format(OracleConstants.TO_DATE, "'" + value + "'", OracleConstants.DEFAULT_DATE_FORMAT); + whereValue = String.format(OracleConstants.TO_DATE, "'" + value + "'", StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : OracleConstants.DEFAULT_DATE_FORMAT); } else { whereValue = String.format(OracleConstants.WHERE_VALUE_VALUE, value); } @@ -1083,7 +1083,7 @@ public class OracleQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(OracleConstants.TO_DATE, originName, OracleConstants.DEFAULT_DATE_FORMAT); + whereName = String.format(OracleConstants.TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : OracleConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(OracleConstants.CAST, originName, OracleConstants.DEFAULT_INT_FORMAT) + "/1000"; @@ -1213,7 +1213,7 @@ public class OracleQueryProvider extends QueryProvider { if (x.getDeType() == TIME) { String format = transDateFormat(x.getDateStyle(), x.getDatePattern()); if (x.getDeExtractType() == STRING) { //字符串转时间 - String toDate = String.format(OracleConstants.TO_DATE, originField, OracleConstants.DEFAULT_DATE_FORMAT); + String toDate = String.format(OracleConstants.TO_DATE, originField, StringUtils.isNotEmpty(x.getDateFormat()) ? x.getDateFormat() : OracleConstants.DEFAULT_DATE_FORMAT); fieldName = String.format(OracleConstants.TO_CHAR, toDate, format); } else { //数值转时间 String date = originField + "/(1000 * 60 * 60 * 24)+" + String.format(OracleConstants.TO_DATE, OracleConstants.DEFAULT_START_DATE, OracleConstants.DEFAULT_DATE_FORMAT); @@ -1372,9 +1372,9 @@ public class OracleQueryProvider extends QueryProvider { } @Override - public String sqlForPreview(String table, Datasource ds){ + public String sqlForPreview(String table, Datasource ds) { String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema(); schema = String.format(OracleConstants.KEYWORD_TABLE, schema); - return "SELECT * FROM " + schema + "." + String.format(OracleConstants.KEYWORD_TABLE, table); + return "SELECT * FROM " + schema + "." + String.format(OracleConstants.KEYWORD_TABLE, table); } } diff --git a/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java index 8bc912b45b..40c7c26e40 100644 --- a/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/pg/PgQueryProvider.java @@ -144,7 +144,7 @@ public class PgQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(PgConstants.CAST, originField, PgConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { - fieldName = String.format(PgConstants.CAST, originField, "timestamp"); + fieldName = String.format(PgConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -218,7 +218,7 @@ public class PgQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(PgConstants.CAST, originField, PgConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { - fieldName = String.format(PgConstants.CAST, originField, "timestamp"); + fieldName = String.format(PgConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -823,7 +823,7 @@ public class PgQueryProvider extends QueryProvider { } if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(PgConstants.CAST, originName, "timestamp"); + whereName = String.format(PgConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(PgConstants.CAST, originName, "bigint"); diff --git a/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java index b8ac9749d6..f895ca9b42 100644 --- a/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/redshift/RedshiftQueryProvider.java @@ -150,7 +150,7 @@ public class RedshiftQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(PgConstants.CAST, originField, PgConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { - fieldName = String.format(PgConstants.CAST, originField, "timestamp"); + fieldName = String.format(PgConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -225,7 +225,7 @@ public class RedshiftQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(PgConstants.CAST, originField, PgConstants.DEFAULT_FLOAT_FORMAT); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { - fieldName = String.format(PgConstants.CAST, originField, "timestamp"); + fieldName = String.format(PgConstants.STR_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -759,7 +759,7 @@ public class RedshiftQueryProvider extends QueryProvider { } if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(PgConstants.CAST, originName, "timestamp"); + whereName = String.format(PgConstants.STR_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : PgConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(PgConstants.CAST, originName, "bigint"); diff --git a/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java index 62513c5442..46cc773569 100644 --- a/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/sqlserver/SqlserverQueryProvider.java @@ -143,7 +143,7 @@ public class SqlserverQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, originField); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { //字符串转时间 - fieldName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField); + fieldName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -216,7 +216,7 @@ public class SqlserverQueryProvider extends QueryProvider { } else if (f.getDeType() == DeTypeConstants.DE_FLOAT) { fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, originField); } else if (f.getDeType() == DeTypeConstants.DE_TIME) { //字符串转时间 - fieldName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField); + fieldName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT); } else { fieldName = originField; } @@ -854,7 +854,7 @@ public class SqlserverQueryProvider extends QueryProvider { } if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originName); + whereName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originName + "/1000"); @@ -979,7 +979,7 @@ public class SqlserverQueryProvider extends QueryProvider { } if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originName); + whereName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originName + "/1000"); @@ -1078,7 +1078,7 @@ public class SqlserverQueryProvider extends QueryProvider { if (field.getDeType() == 1) { if (field.getDeExtractType() == 0 || field.getDeExtractType() == 5) { - whereName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originName); + whereName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originName, StringUtils.isNotEmpty(field.getDateFormat()) ? field.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 2 || field.getDeExtractType() == 3 || field.getDeExtractType() == 4) { String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originName + "/1000"); @@ -1207,7 +1207,7 @@ public class SqlserverQueryProvider extends QueryProvider { } else { if (x.getDeType() == DeTypeConstants.DE_TIME) { if (x.getDeExtractType() == DeTypeConstants.DE_STRING) {// 字符串转时间 - String cast = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField); + String cast = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField, StringUtils.isNotEmpty(x.getDateFormat()) ? x.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT); fieldName = transDateFormat(x.getDateStyle(), x.getDatePattern(), cast); } else {// 数值转时间 String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originField + "/1000"); @@ -1326,7 +1326,7 @@ public class SqlserverQueryProvider extends QueryProvider { } @Override - public String sqlForPreview(String table, Datasource ds){ + public String sqlForPreview(String table, Datasource ds) { String schema = new Gson().fromJson(ds.getConfiguration(), JdbcConfiguration.class).getSchema(); schema = String.format(SqlServerSQLConstants.KEYWORD_TABLE, schema); return "SELECT * FROM " + schema + "." + String.format(SqlServerSQLConstants.KEYWORD_TABLE, table); diff --git a/backend/src/main/resources/db/migration/V42__1.16.sql b/backend/src/main/resources/db/migration/V42__1.16.sql index df648e37f5..729a7ba202 100644 --- a/backend/src/main/resources/db/migration/V42__1.16.sql +++ b/backend/src/main/resources/db/migration/V42__1.16.sql @@ -8,4 +8,7 @@ UPDATE `sys_menu` set `component` = REPLACE(`component`, 'dataset', 'Dataset') w UPDATE `sys_menu` set `component` = REPLACE(`component`, 'form', 'Form') where (`component` = 'system/task/form'); +ALTER TABLE `dataset_table_field` ADD COLUMN `date_format` VARCHAR(255) NULL AFTER `accuracy`; + + diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 6d88c7c4ea..eac761ce42 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -1673,7 +1673,8 @@ export default { field_edit_name: 'Field Name', input_edit_name: 'Input field name', edit_search: 'Search by name', - na: 'None' + na: 'None', + date_format: 'Time format, default: year-month-day hour:minute:second' }, driver: { driver: 'Driver', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index e55d9b37fe..b7c43cc6b3 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -1673,7 +1673,8 @@ export default { field_edit_name: '字段名稱', input_edit_name: '請輸入字段名稱', edit_search: '通過名稱搜索', - na: '暫無' + na: '暫無', + date_format: '時間格式,默認:年-月-日 時:分:秒' }, driver: { driver: '驅動', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 98f7ae8299..7f230a0905 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -1672,7 +1672,8 @@ export default { field_edit_name: '字段名称', input_edit_name: '请输入字段名称', edit_search: '通过名称搜索', - na: '暂无' + na: '暂无', + date_format: '时间格式,默认: 年-月-日 时:分:秒' }, driver: { driver: '驱动', diff --git a/frontend/src/views/dataset/data/FieldEdit.vue b/frontend/src/views/dataset/data/FieldEdit.vue index f9f2a72272..1cc8f89d3b 100644 --- a/frontend/src/views/dataset/data/FieldEdit.vue +++ b/frontend/src/views/dataset/data/FieldEdit.vue @@ -7,7 +7,8 @@ secondary icon="el-icon-plus" @click="addCalcField" - >{{ $t('dataset.add_calc_field') }} + >{{ $t('dataset.add_calc_field') }} + {{ $t('dataset.sync_field') }} + >{{ $t('dataset.sync_field') }} +   + {{ $t('deDataset.convert_to_indicator') }} + >{{ $t('deDataset.convert_to_indicator') }} + @@ -533,6 +548,14 @@ /> + {{ $t('deDataset.convert_to_dimension') }} + >{{ $t('deDataset.convert_to_dimension') }} + @@ -712,6 +738,7 @@ import { post, fieldListDQ, batchEdit } from '@/api/dataset/dataset' import CalcFieldEdit from './CalcFieldEdit' import { getFieldName } from '@/views/dataset/data/utils' import msgCfm from '@/components/msgCfm/index' + export default { name: 'FieldEdit', components: { CalcFieldEdit }, @@ -896,7 +923,8 @@ export default { localStorage.setItem('reloadDsData', 'true') }) }) - .catch(() => {}) + .catch(() => { + }) }, syncField() { @@ -1032,35 +1060,48 @@ export default { .el-divider--horizontal { margin: 12px 0; } + span { font-size: 14px; } + .field-class { font-size: 12px !important; } + .el-select ::v-deep input { padding-right: 10px; } + .el-select ::v-deep .el-input__suffix { right: 0; } + .el-radio { margin-right: 10px !important; } .style-collapse { border: none; + .select-type { width: 180px; + ::v-deep.el-input__inner { padding-left: 32px; } } + + .input-type { + width: 180px; + } + .select-svg-icon { position: absolute; left: 24px; top: 10px; } + ::v-deep.el-collapse-item__header { height: 30px; line-height: 30px; @@ -1068,6 +1109,7 @@ span { position: relative; border-bottom: 1px solid rgba(31, 35, 41, 0.15); } + ::v-deep.el-checkbox { margin-left: 8px; } @@ -1077,6 +1119,7 @@ span { background-color: rgba(51, 112, 255, 0.1); } } + .quota { ::v-deep.el-collapse-item__header { background-color: rgba(4, 180, 156, 0.1); @@ -1098,6 +1141,7 @@ span { transform: rotate(90deg); } } + .style-collapse ::v-deep .el-collapse-item__wrap { border-bottom: 0 solid #e6ebf5 !important; }