From ecd22a1f19fded4f9aa2ee3470913797efbeb3b9 Mon Sep 17 00:00:00 2001 From: o2sword <171715986@qq.com> Date: Wed, 4 Nov 2020 17:48:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=86=E5=9B=BE=E6=95=B0?= =?UTF-8?q?=E7=BB=84=E7=B1=BB=E5=9E=8B=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=EF=BC=9Ain?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/x/query/core/express/plan/Comparison.java | 13 +++++++++++++ .../x/query/core/express/plan/FilterEntry.java | 15 +++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Comparison.java b/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Comparison.java index 25ae55fd2a..8c7fb5cd3e 100644 --- a/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Comparison.java +++ b/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Comparison.java @@ -12,6 +12,7 @@ public abstract class Comparison { private static String[] like = new String[] { "like" }; private static String[] notLike = new String[] { "notLike", "not like" }; private static String[] between = new String[] { "range", "between" }; + private static String[] isMember = new String[] { "isMember", "in" }; public static boolean isEquals(String comparison) throws Exception { for (String str : equals) { @@ -94,6 +95,15 @@ public abstract class Comparison { return false; } + public static boolean isIsMember(String comparison) throws Exception { + for (String str : isMember) { + if (StringUtils.equalsIgnoreCase(str, StringUtils.trim(comparison))) { + return true; + } + } + return false; + } + public static String getMatchCom(String comparison) throws Exception { if(isNotEquals(comparison)){ return notEquals[notEquals.length-1]; @@ -116,6 +126,9 @@ public abstract class Comparison { }else if(isNotLike(comparison)){ return notLike[notLike.length-1]; + }else if(isIsMember(comparison)){ + return isMember[isMember.length-1]; + }else{ return equals[equals.length-1]; } diff --git a/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/FilterEntry.java b/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/FilterEntry.java index 49f0a5d9df..038c074ca0 100644 --- a/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/FilterEntry.java +++ b/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/FilterEntry.java @@ -1,7 +1,6 @@ package com.x.query.core.express.plan; -import java.util.Date; -import java.util.Objects; +import java.util.*; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.Predicate; @@ -559,6 +558,12 @@ public class FilterEntry extends GsonPropertyObject { p = cb.and(p, cb.notLike(root.get(Item_.stringShortValue), "%" + compareValue + "%")); } else if (Comparison.isBetween(this.comparison)) { p = cb.and(p, cb.between(root.get(Item_.stringShortValue), compareValue, compareOtherValue)); + } else if (Comparison.isIsMember(this.comparison)) { + if(compareValue.indexOf(",") > -1){ + p = cb.and(p, root.get(Item_.stringShortValue).in(Arrays.asList(compareValue.split(",")))); + }else{ + p = cb.and(p, cb.equal(root.get(Item_.stringShortValue), compareValue)); + } } else { p = cb.and(p, cb.equal(root.get(Item_.stringShortValue), compareValue)); } @@ -974,6 +979,12 @@ public class FilterEntry extends GsonPropertyObject { p = cb.and(p, cb.notLike(root.get(paramName), "%" + compareValue + "%")); } else if (Comparison.isBetween(this.comparison)) { p = cb.and(p, cb.between(root.get(paramName), compareValue, compareOtherValue)); + } else if (Comparison.isIsMember(this.comparison)) { + if(compareValue.indexOf(",") > -1){ + p = cb.and(p, root.get(paramName).in(Arrays.asList(compareValue.split(",")))); + }else{ + p = cb.and(p, cb.equal(root.get(paramName), compareValue)); + } } else { p = cb.and(p, cb.equal(root.get(paramName), compareValue)); } -- GitLab