فهرست منبع

in和notin允许pass

menglu 4 سال پیش
والد
کامیت
eba1708e0a

+ 5 - 0
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/criteria/Match_in.java

@@ -3,6 +3,7 @@ package com.persagy.ibms.data.sdk.criteria;
 import java.util.HashSet;
 
 public class Match_in extends MatchBase {
+	public boolean pass;
 	public HashSet<Object> value;
 
 	public Match_in(HashSet<Object> value) {
@@ -10,6 +11,10 @@ public class Match_in extends MatchBase {
 	}
 
 	public boolean match(Object item) {
+		if (this.pass) {
+			return true;
+		}
+
 		Object itemValue = null;
 		if (item != null) {
 			itemValue = (item);

+ 5 - 0
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/criteria/Match_notin.java

@@ -3,6 +3,7 @@ package com.persagy.ibms.data.sdk.criteria;
 import java.util.HashSet;
 
 public class Match_notin extends MatchBase {
+	public boolean pass;
 	public HashSet<Object> value;
 
 	public Match_notin(HashSet<Object> value) {
@@ -10,6 +11,10 @@ public class Match_notin extends MatchBase {
 	}
 
 	public boolean match(Object item) {
+		if (this.pass) {
+			return true;
+		}
+
 		Object itemValue = null;
 		if (item != null) {
 			itemValue = (item);

+ 24 - 12
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/QueryUtil.java

@@ -297,20 +297,32 @@ public class QueryUtil {
 									matchList.add(MatchInner);
 								}
 							} else if (itemKeyInner.equals("in") || itemKeyInner.equals("notin")) {
-								HashSet<Object> valueSet = new HashSet<Object>();
-								List<SceneDataValue> resultArray = parseSet(Repository, sv, itemValueInner, new QueryAssist());
-								for (SceneDataValue resultItem : resultArray) {
-									SceneDataValue resultItemValue = (resultItem);
-									if (!valueSet.contains(resultItemValue.value_primitive)) {
-										valueSet.add(resultItemValue.value_primitive);
+								if (itemValueInner instanceof JSONObject && ((JSONObject) itemValueInner).containsKey("pass")) {
+									if (itemKeyInner.equals("in")) {
+										Match_in MatchInner = new Match_in(null);
+										MatchInner.pass = true;
+										matchList.add(MatchInner);
+									} else {
+										Match_notin MatchInner = new Match_notin(null);
+										MatchInner.pass = true;
+										matchList.add(MatchInner);
 									}
-								}
-								if (itemKeyInner.equals("in")) {
-									Match_in MatchInner = new Match_in(valueSet);
-									matchList.add(MatchInner);
 								} else {
-									Match_notin MatchInner = new Match_notin(valueSet);
-									matchList.add(MatchInner);
+									HashSet<Object> valueSet = new HashSet<Object>();
+									List<SceneDataValue> resultArray = parseSet(Repository, sv, itemValueInner, new QueryAssist());
+									for (SceneDataValue resultItem : resultArray) {
+										SceneDataValue resultItemValue = (resultItem);
+										if (!valueSet.contains(resultItemValue.value_primitive)) {
+											valueSet.add(resultItemValue.value_primitive);
+										}
+									}
+									if (itemKeyInner.equals("in")) {
+										Match_in MatchInner = new Match_in(valueSet);
+										matchList.add(MatchInner);
+									} else {
+										Match_notin MatchInner = new Match_notin(valueSet);
+										matchList.add(MatchInner);
+									}
 								}
 							}
 						}