diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java b/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java index 63c3283076..4bfdf0f5e5 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java @@ -104,6 +104,14 @@ public class CustomWhere2Str { whereName = String.format(SQLConstants.FROM_UNIXTIME, cast, SQLConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 1) { + // 如果都是时间类型,把date和time类型进行字符串拼接 + if (isCross) { + if (StringUtils.equalsIgnoreCase(field.getType(), "date")) { + originName = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, originName, "' 00:00:00'"), SQLConstants.DEFAULT_DATE_FORMAT); + } else if (StringUtils.equalsIgnoreCase(field.getType(), "time")) { + originName = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, "'1970-01-01 '", originName), SQLConstants.DEFAULT_DATE_FORMAT); + } + } // 此处获取标准格式的日期 whereName = originName; } diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/Dimension2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/Dimension2SQLObj.java index 5493026ee6..fd606d2ecb 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/Dimension2SQLObj.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/Dimension2SQLObj.java @@ -52,7 +52,7 @@ public class Dimension2SQLObj { } String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i); // 处理横轴字段 - xFields.add(getXFields(x, originField, fieldAlias)); + xFields.add(getXFields(x, originField, fieldAlias, isCross)); // 处理横轴排序 if (StringUtils.isNotEmpty(x.getSort()) && Utils.joinSort(x.getSort())) { @@ -69,12 +69,20 @@ public class Dimension2SQLObj { meta.setXFieldsDialect(fieldsDialect); } - public static SQLObj getXFields(ChartViewFieldDTO x, String originField, String fieldAlias) { + public static SQLObj getXFields(ChartViewFieldDTO x, String originField, String fieldAlias, boolean isCross) { String fieldName = ""; if (Objects.equals(x.getDeExtractType(), DeTypeConstants.DE_TIME)) { if (Objects.equals(x.getDeType(), DeTypeConstants.DE_INT) || Objects.equals(x.getDeType(), DeTypeConstants.DE_FLOAT)) { fieldName = String.format(SQLConstants.UNIX_TIMESTAMP, originField); } else if (Objects.equals(x.getDeType(), DeTypeConstants.DE_TIME)) { + // 如果都是时间类型,把date和time类型进行字符串拼接 + if (isCross) { + if (StringUtils.equalsIgnoreCase(x.getType(), "date")) { + originField = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, originField, "' 00:00:00'"), SQLConstants.DEFAULT_DATE_FORMAT); + } else if (StringUtils.equalsIgnoreCase(x.getType(), "time")) { + originField = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, "'1970-01-01 '", originField), SQLConstants.DEFAULT_DATE_FORMAT); + } + } String format = Utils.transDateFormat(x.getDateStyle(), x.getDatePattern()); if (StringUtils.equalsIgnoreCase(x.getDateStyle(), "y_Q")) { fieldName = String.format(format, diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java b/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java index b1bcec936e..339d7e268f 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java @@ -76,6 +76,14 @@ public class ExtWhere2Str { whereName = String.format(SQLConstants.UNIX_TIMESTAMP, whereName); } if (field.getDeExtractType() == 1) { + // 如果都是时间类型,把date和time类型进行字符串拼接 + if (isCross) { + if (StringUtils.equalsIgnoreCase(field.getType(), "date")) { + originName = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, originName, "' 00:00:00'"), SQLConstants.DEFAULT_DATE_FORMAT); + } else if (StringUtils.equalsIgnoreCase(field.getType(), "time")) { + originName = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, "'1970-01-01 '", originName), SQLConstants.DEFAULT_DATE_FORMAT); + } + } // 此处获取标准格式的日期 whereName = originName; } diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java index ef1a69b78f..88c4412008 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/Field2SQLObj.java @@ -56,14 +56,14 @@ public class Field2SQLObj { } String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i); // 处理横轴字段 - xFields.add(getXFields(x, originField, fieldAlias)); + xFields.add(getXFields(x, originField, fieldAlias, isCross)); } } meta.setXFields(xFields); meta.setXFieldsDialect(fieldsDialect); } - public static SQLObj getXFields(DatasetTableFieldDTO f, String originField, String fieldAlias) { + public static SQLObj getXFields(DatasetTableFieldDTO f, String originField, String fieldAlias, boolean isCross) { String fieldName = ""; if (originField != null) { // 处理横轴字段 @@ -71,6 +71,14 @@ public class Field2SQLObj { if (Objects.equals(f.getDeType(), DeTypeConstants.DE_INT) || Objects.equals(f.getDeType(), DeTypeConstants.DE_FLOAT)) { fieldName = String.format(SQLConstants.UNIX_TIMESTAMP, originField); } else { + // 如果都是时间类型,把date和time类型进行字符串拼接 + if (isCross) { + if (StringUtils.equalsIgnoreCase(f.getType(), "date")) { + originField = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, originField, "' 00:00:00'"), SQLConstants.DEFAULT_DATE_FORMAT); + } else if (StringUtils.equalsIgnoreCase(f.getType(), "time")) { + originField = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, "'1970-01-01 '", originField), SQLConstants.DEFAULT_DATE_FORMAT); + } + } fieldName = originField; } } else if (Objects.equals(f.getDeExtractType(), DeTypeConstants.DE_STRING)) { diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java index 55b820bee9..faf9e9e2bd 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/Order2SQLObj.java @@ -1,13 +1,13 @@ package io.dataease.engine.trans; import io.dataease.api.chart.dto.DeSortField; -import io.dataease.extensions.datasource.dto.CalParam; -import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; -import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.engine.constant.DeTypeConstants; import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.constant.SQLConstants; import io.dataease.engine.utils.Utils; +import io.dataease.extensions.datasource.dto.CalParam; +import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.datasource.model.SQLMeta; import io.dataease.extensions.datasource.model.SQLObj; import org.apache.commons.lang3.ObjectUtils; @@ -58,6 +58,14 @@ public class Order2SQLObj { if (Objects.equals(f.getDeType(), DeTypeConstants.DE_INT) || Objects.equals(f.getDeType(), DeTypeConstants.DE_FLOAT)) { fieldName = String.format(SQLConstants.UNIX_TIMESTAMP, originField); } else { + // 如果都是时间类型,把date和time类型进行字符串拼接 + if (isCross) { + if (StringUtils.equalsIgnoreCase(f.getType(), "date")) { + originField = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, originField, "' 00:00:00'"), SQLConstants.DEFAULT_DATE_FORMAT); + } else if (StringUtils.equalsIgnoreCase(f.getType(), "time")) { + originField = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, "'1970-01-01 '", originField), SQLConstants.DEFAULT_DATE_FORMAT); + } + } fieldName = originField; } } else if (Objects.equals(f.getDeExtractType(), DeTypeConstants.DE_STRING)) { diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/Quota2SQLObj.java b/core/core-backend/src/main/java/io/dataease/engine/trans/Quota2SQLObj.java index 37533eec74..ffcfc05cd7 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/Quota2SQLObj.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/Quota2SQLObj.java @@ -54,7 +54,7 @@ public class Quota2SQLObj { // 处理纵轴字段 SQLObj ySQLObj = getYFields(y, originField, fieldAlias); if (StringUtils.equalsIgnoreCase("bar-range", meta.getChartType()) && StringUtils.equalsIgnoreCase(y.getGroupType(), "d") && y.getDeType() == 1) { - yFields.add(Dimension2SQLObj.getXFields(y, ySQLObj.getFieldName(), fieldAlias)); + yFields.add(Dimension2SQLObj.getXFields(y, ySQLObj.getFieldName(), fieldAlias, isCross)); } else { yFields.add(ySQLObj); } diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java b/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java index 774468e435..c64efec3e4 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java @@ -107,6 +107,14 @@ public class WhereTree2Str { whereName = String.format(SQLConstants.FROM_UNIXTIME, cast, SQLConstants.DEFAULT_DATE_FORMAT); } if (field.getDeExtractType() == 1) { + // 如果都是时间类型,把date和time类型进行字符串拼接 + if (isCross) { + if (StringUtils.equalsIgnoreCase(field.getType(), "date")) { + originName = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, originName, "' 00:00:00'"), SQLConstants.DEFAULT_DATE_FORMAT); + } else if (StringUtils.equalsIgnoreCase(field.getType(), "time")) { + originName = String.format(SQLConstants.DE_STR_TO_DATE, String.format(SQLConstants.CONCAT, "'1970-01-01 '", originName), SQLConstants.DEFAULT_DATE_FORMAT); + } + } whereName = originName; } } else if (field.getDeType() == 2 || field.getDeType() == 3) {