Quellcode durchsuchen

自建表支持数组查询和展现2

o2sword vor 4 Jahren
Ursprung
Commit
3ad7fbff4e

+ 11 - 7
o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Plan.java

@@ -128,6 +128,8 @@ public abstract class Plan extends GsonPropertyObject {
 						comp = -1;
 					} else if (null == o2) {
 						comp = 1;
+					} else if (o1 instanceof Collection<?> || o2 instanceof Collection<?>) {
+						comp = 0;
 					} else {
 						if (o1.getClass() == o2.getClass()) {
 							c1 = (Comparable) o1;
@@ -522,7 +524,9 @@ public abstract class Plan extends GsonPropertyObject {
 					root.get(Item_.itemStringValueType), root.get(Item_.stringShortValue),
 					root.get(Item_.stringLongValue), root.get(Item_.dateValue), root.get(Item_.timeValue),
 					root.get(Item_.dateTimeValue), root.get(Item_.booleanValue), root.get(Item_.numberValue)).where(p);
+			boolean isList = false;
 			if(!orderList.isEmpty()){
+				isList = true;
 				cq.orderBy(orderList);
 			}
 			List<Tuple> list = em.createQuery(cq).getResultList();
@@ -535,25 +539,25 @@ public abstract class Plan extends GsonPropertyObject {
 					case s:
 						if (null != o.get(3)) {
 							if ((null != o.get(4)) && StringUtils.isNotEmpty(Objects.toString(o.get(4)))) {
-								row.put(selectEntry.getColumn(), Objects.toString(o.get(4)));
+								row.put(selectEntry.getColumn(), Objects.toString(o.get(4)), isList);
 							} else {
-								row.put(selectEntry.getColumn(), Objects.toString(o.get(3)));
+								row.put(selectEntry.getColumn(), Objects.toString(o.get(3)), isList);
 							}
 						}
 						break;
 					case d:
 						if (null != o.get(5)) {
-							row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(5)));
+							row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(5)), isList);
 						}
 						break;
 					case t:
 						if (null != o.get(6)) {
-							row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(6)));
+							row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(6)), isList);
 						}
 						break;
 					case dt:
 						if (null != o.get(7)) {
-							row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(7)));
+							row.put(selectEntry.getColumn(), JpaObjectTools.confirm((Date) o.get(7)), isList);
 						}
 						break;
 					default:
@@ -562,12 +566,12 @@ public abstract class Plan extends GsonPropertyObject {
 					break;
 				case b:
 					if (null != o.get(8)) {
-						row.put(selectEntry.getColumn(), (Boolean) o.get(8));
+						row.put(selectEntry.getColumn(), (Boolean) o.get(8), isList);
 					}
 					break;
 				case n:
 					if (null != o.get(9)) {
-						row.put(selectEntry.getColumn(), (Number) o.get(9));
+						row.put(selectEntry.getColumn(), (Number) o.get(9), isList);
 					}
 					break;
 				default:

+ 17 - 10
o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Row.java

@@ -1,9 +1,10 @@
 package com.x.query.core.express.plan;
 
+import java.util.List;
 import java.util.Objects;
 import java.util.TreeMap;
 
-import org.apache.commons.lang3.StringUtils;
+import com.x.base.core.project.tools.ListTools;
 import org.apache.commons.lang3.math.NumberUtils;
 
 import com.x.base.core.project.gson.GsonPropertyObject;
@@ -24,16 +25,22 @@ public class Row extends GsonPropertyObject {
 	}
 
 	public void put(String key, Object value) {
-		Object o = this.data.get(key);
-		if(o!=null){
-			String s = String.valueOf(o);
-			if(StringUtils.isNotEmpty(s)){
-				s = s + "," + value;
-				this.data.put(key, s);
-			}else{
-				this.data.put(key, value);
+		this.data.put(key, value);
+	}
+
+	public void put(String key, Object value, boolean isList) {
+		if (isList) {
+			Object o = this.data.get(key);
+			if (o != null) {
+				if (o instanceof List<?>) {
+					((List) o).add(value);
+				} else {
+					this.data.put(key, ListTools.toList(value));
+				}
+			} else {
+				this.data.put(key, ListTools.toList(value));
 			}
-		}else {
+		}else{
 			this.data.put(key, value);
 		}
 	}