From 465f3c29246c71234c1e19adf84c8af22f13f458 Mon Sep 17 00:00:00 2001 From: junjun Date: Tue, 5 Nov 2024 16:54:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=9B=BE=E8=A1=A8):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E6=A0=91=E8=BF=87=E6=BB=A4=E5=87=BA=E9=94=99?= =?UTF-8?q?=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/ExtWhere2Str.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) 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 a6e1594d62..e58758e878 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 @@ -191,11 +191,29 @@ public class ExtWhere2Str { if (StringUtils.equals(value.get(0), SQLConstants.EMPTY_SIGN)) { whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE, "") + " or " + whereName + " is null "; } else { - if (StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NCHAR")) { - whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE_CH, value.get(0)); + // tree的情况需额外处理 + if (request.getIsTree()) { + List datasetTableFieldList = request.getDatasetTableFieldList(); + boolean hasN = false; + for (DatasetTableFieldDTO dto : datasetTableFieldList) { + if (StringUtils.containsIgnoreCase(dto.getType(), "NVARCHAR") + || StringUtils.containsIgnoreCase(dto.getType(), "NCHAR")) { + hasN = true; + break; + } + } + if (hasN) { + whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE_CH, value.get(0)); + } else { + whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE, value.get(0)); + } } else { - whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE, value.get(0)); + if (StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NVARCHAR") + || StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NCHAR")) { + whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE_CH, value.get(0)); + } else { + whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE, value.get(0)); + } } } }