From a2c71b288f49caedec6b1a838e6aaf63961e6166 Mon Sep 17 00:00:00 2001 From: junjun Date: Fri, 13 Sep 2024 11:07:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B0=9D=E8=AF=95=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E8=BF=87=E6=BB=A4=E5=AD=98=E5=9C=A8=E6=97=B6?= =?UTF-8?q?=E5=8C=BA=E5=B7=AE=E5=BC=82=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/engine/trans/CustomWhere2Str.java | 18 +++++++++++++----- .../dataease/engine/trans/WhereTree2Str.java | 18 +++++++++++++----- 2 files changed, 26 insertions(+), 10 deletions(-) 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 f487bd99b2..3d60412acd 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 @@ -164,10 +164,10 @@ public class CustomWhere2Str { if (field.getDeType() == 1) { // 如果是动态时间,计算具体值 value = fixValue(item); + Map stringLongMap = Utils.parseDateTimeValue(value); if (StringUtils.equalsIgnoreCase(whereTerm, " = ")) { whereTerm = " BETWEEN "; // 把value类似过滤组件处理,获得start time和end time - Map stringLongMap = Utils.parseDateTimeValue(value); if (isCross) { whereValue = String.format(SQLConstants.WHERE_VALUE_BETWEEN, stringLongMap.get("startTime"), stringLongMap.get("endTime")); } else { @@ -175,18 +175,26 @@ public class CustomWhere2Str { } } else if (StringUtils.equalsIgnoreCase(whereTerm, " <> ")) { whereTerm = " NOT BETWEEN "; - Map stringLongMap = Utils.parseDateTimeValue(value); if (isCross) { whereValue = String.format(SQLConstants.WHERE_VALUE_BETWEEN, stringLongMap.get("startTime"), stringLongMap.get("endTime")); } else { whereValue = String.format(SQLConstants.WHERE_BETWEEN, Utils.transLong2Str(stringLongMap.get("startTime")), Utils.transLong2Str(stringLongMap.get("endTime"))); } } else { - long ts = Utils.allDateFormat2Long(value); + Long startTime = stringLongMap.get("startTime"); + Long endTime = stringLongMap.get("endTime"); if (isCross) { - value = ts + ""; + if (StringUtils.equalsIgnoreCase(whereTerm, " > ") || StringUtils.equalsIgnoreCase(whereTerm, " <= ")) { + value = endTime + ""; + } else if (StringUtils.equalsIgnoreCase(whereTerm, " >= ") || StringUtils.equalsIgnoreCase(whereTerm, " < ")) { + value = startTime + ""; + } } else { - value = Utils.transLong2Str(ts); + if (StringUtils.equalsIgnoreCase(whereTerm, " > ") || StringUtils.equalsIgnoreCase(whereTerm, " <= ")) { + value = Utils.transLong2Str(endTime); + } else if (StringUtils.equalsIgnoreCase(whereTerm, " >= ") || StringUtils.equalsIgnoreCase(whereTerm, " < ")) { + value = Utils.transLong2Str(startTime); + } } whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE, value); } 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 5180dfae72..23d573bccc 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 @@ -174,10 +174,10 @@ public class WhereTree2Str { } else { // 如果是时间字段过滤,当条件是等于和不等于的时候转换成between和not between if (field.getDeType() == 1) { + Map stringLongMap = Utils.parseDateTimeValue(value); if (StringUtils.equalsIgnoreCase(whereTerm, " = ")) { whereTerm = " BETWEEN "; // 把value类似过滤组件处理,获得start time和end time - Map stringLongMap = Utils.parseDateTimeValue(value); if (isCross) { whereValue = String.format(SQLConstants.WHERE_VALUE_BETWEEN, stringLongMap.get("startTime"), stringLongMap.get("endTime")); } else { @@ -185,18 +185,26 @@ public class WhereTree2Str { } } else if (StringUtils.equalsIgnoreCase(whereTerm, " <> ")) { whereTerm = " NOT BETWEEN "; - Map stringLongMap = Utils.parseDateTimeValue(value); if (isCross) { whereValue = String.format(SQLConstants.WHERE_VALUE_BETWEEN, stringLongMap.get("startTime"), stringLongMap.get("endTime")); } else { whereValue = String.format(SQLConstants.WHERE_BETWEEN, Utils.transLong2Str(stringLongMap.get("startTime")), Utils.transLong2Str(stringLongMap.get("endTime"))); } } else { - long ts = Utils.allDateFormat2Long(value); + Long startTime = stringLongMap.get("startTime"); + Long endTime = stringLongMap.get("endTime"); if (isCross) { - value = ts + ""; + if (StringUtils.equalsIgnoreCase(whereTerm, " > ") || StringUtils.equalsIgnoreCase(whereTerm, " <= ")) { + value = endTime + ""; + } else if (StringUtils.equalsIgnoreCase(whereTerm, " >= ") || StringUtils.equalsIgnoreCase(whereTerm, " < ")) { + value = startTime + ""; + } } else { - value = Utils.transLong2Str(ts); + if (StringUtils.equalsIgnoreCase(whereTerm, " > ") || StringUtils.equalsIgnoreCase(whereTerm, " <= ")) { + value = Utils.transLong2Str(endTime); + } else if (StringUtils.equalsIgnoreCase(whereTerm, " >= ") || StringUtils.equalsIgnoreCase(whereTerm, " < ")) { + value = Utils.transLong2Str(startTime); + } } whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE, value); }