Эх сурвалжийг харах

Merge branch 'fix/视图数字值排序问题' into 'develop'

Merge of fix/[数据中心]视图数字值排序问题 to develop

See merge request o2oa/o2oa!592
o2null 5 жил өмнө
parent
commit
11bb11fb54

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

@@ -105,7 +105,31 @@ public abstract class Plan extends GsonPropertyObject {
 				for (SelectEntry en : orderList) {
 					o1 = r1.find(en.column);
 					o2 = r2.find(en.column);
-					if (null == o1 && null == o2) {
+					if(BooleanUtils.isTrue(en.numberOrder)){
+						if(StringUtils.isEmpty(o1.toString())){
+							c1 = Double.MAX_VALUE;
+						}else{
+							try {
+								c1 = Double.parseDouble(o1.toString());
+							} catch (Exception e) {
+								c1 = Double.MAX_VALUE;
+							}
+						}
+						if(StringUtils.isEmpty(o2.toString())){
+							c2 = Double.MAX_VALUE;
+						}else{
+							try {
+								c2 = Double.parseDouble(o2.toString());
+							} catch (Exception e) {
+								c2 = Double.MAX_VALUE;
+							}
+						}
+						if (StringUtils.equals(SelectEntry.ORDER_ASC, en.orderType)) {
+							comp = c1.compareTo(c2);
+						} else {
+							comp = c2.compareTo(c1);
+						}
+					}else if (null == o1 && null == o2) {
 						comp = 0;
 					} else if (null == o1) {
 						comp = -1;
@@ -406,14 +430,12 @@ public abstract class Plan extends GsonPropertyObject {
 		List<SelectEntry> list = new TreeList<>();
 		SelectEntry _g = this.findGroupSelectEntry();
 		if (null != _g) {
-			if (StringUtils.equals(SelectEntry.ORDER_ASC, _g.orderType)
-					|| StringUtils.equals(SelectEntry.ORDER_DESC, _g.orderType)) {
+			if (_g.isOrderType()) {
 				list.add(_g);
 			}
 		}
 		for (SelectEntry _o : this.selectList) {
-			if (StringUtils.equals(SelectEntry.ORDER_ASC, _o.orderType)
-					|| StringUtils.equals(SelectEntry.ORDER_DESC, _o.orderType)) {
+			if (_o.isOrderType()) {
 				list.add(_o);
 			}
 		}

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

@@ -19,6 +19,7 @@ public class SelectEntry extends GsonPropertyObject {
 		this.code = "";
 		this.allowOpen = false;
 		this.groupEntry = false;
+		this.numberOrder = false;
 	}
 
 	public Boolean available() {
@@ -38,6 +39,7 @@ public class SelectEntry extends GsonPropertyObject {
 	public Boolean allowOpen;
 	public Boolean isName;
 	public Boolean groupEntry;
+	public Boolean numberOrder;
 
 	public String getColumn() {
 		if (StringUtils.isNotEmpty(this.column)) {
@@ -53,4 +55,12 @@ public class SelectEntry extends GsonPropertyObject {
 		return this.getColumn();
 	}
 
+	public boolean isOrderType(){
+		if (StringUtils.equals(SelectEntry.ORDER_ASC, this.orderType)
+				|| StringUtils.equals(SelectEntry.ORDER_DESC, this.orderType)) {
+			return true;
+		}
+		return false;
+	}
+
 }