Procházet zdrojové kódy

[task-4052]数据模板通用列表接口支持按指定字段规则排序

gaozl před 11 měsíci
rodič
revize
855f7f1d38

+ 1 - 1
ibps-api-root/modules/api-base/src/main/java/com/lc/ibps/api/base/query/Direction.java

@@ -12,7 +12,7 @@ package com.lc.ibps.api.base.query;
  * </pre>
  */
 public enum Direction {
-	ASC, DESC;
+	ASC, DESC , FIELD;
 
 	public static Direction fromString(String value) {
 		try {

+ 6 - 2
ibps-base-root/modules/base-db/src/main/java/com/lc/ibps/base/db/mybatis/CommonDao.java

@@ -6,6 +6,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 
+import com.lc.ibps.api.base.query.Direction;
 import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.RowBounds;
 import org.apache.ibatis.session.SqlSession;
@@ -596,8 +597,11 @@ public class CommonDao<T> implements ICommonDao<T> {
 		if (queryFilter.getFieldSortList() !=null && queryFilter.getFieldSortList().size() > 0) {
 			StringBuffer sb = new StringBuffer();
 			for (FieldSort fieldSort : queryFilter.getFieldSortList()) {
-				sb.append(fieldSort.getField()).append(" ")
-						.append(fieldSort.getDirection()).append(",");
+				if (fieldSort.getDirection().equals(Direction.FIELD)){
+					sb.append(fieldSort.getField()).append(",");
+				}else {
+					sb.append(fieldSort.getField()).append(" ").append(fieldSort.getDirection()).append(",");
+				}
 			}
 			sb.deleteCharAt(sb.length() - 1);
 			params.put("orderBySql", sb.toString());

+ 13 - 1
ibps-form-root/modules/form-biz/src/main/java/com/lc/ibps/form/sql/builder/SqlEntityBuilder.java

@@ -394,7 +394,19 @@ public class SqlEntityBuilder {
 			DefaultFieldSort field = new DefaultFieldSort();
 			String name = JsonUtil.getString(column, "name");
 			field.setField(name);
-			field.setDirection(Direction.fromString(JsonUtil.getString(column, "direction","ASC")));//
+			field.setDirection(Direction.fromString(JsonUtil.getString(column, "direction","ASC")));
+			String type = JsonUtil.getString(column, "direction");
+			if("custom".equals(type)){
+				StringBuilder stringBuilder = new StringBuilder();
+				stringBuilder.append("FIELD(").append(name);
+				JSONArray value = JsonUtil.getJSONArray(column, "fieldValue");
+				for (Object obj2 : value) {
+					stringBuilder.append(",").append("'").append(obj2).append("'");
+				}
+				stringBuilder.append(")");
+				field.setField(stringBuilder.toString());
+				field.setDirection(Direction.FIELD);
+			}
 			String direction = buildSortFieldDirection(name, fieldSortList);
 			if (StringUtil.isNotEmpty(direction)) {
 				field.setDirection(Direction.fromString(direction));