|
@@ -1,7 +1,10 @@
|
|
package com.persagy.dmp.basic.utils;
|
|
package com.persagy.dmp.basic.utils;
|
|
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
|
+import cn.hutool.core.util.ReflectUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
@@ -10,6 +13,7 @@ import com.persagy.dmp.basic.model.QueryOperator;
|
|
import com.persagy.dmp.common.model.entity.BaseEntity;
|
|
import com.persagy.dmp.common.model.entity.BaseEntity;
|
|
|
|
|
|
import java.util.Iterator;
|
|
import java.util.Iterator;
|
|
|
|
+import java.util.List;
|
|
|
|
|
|
|
|
|
|
* 查询条件 助手
|
|
* 查询条件 助手
|
|
@@ -38,7 +42,8 @@ public class QueryCriteriaHelper {
|
|
Page pageInfo = new Page();
|
|
Page pageInfo = new Page();
|
|
pageInfo.setCurrent(criteria.getPage());
|
|
pageInfo.setCurrent(criteria.getPage());
|
|
pageInfo.setSize(criteria.getSize());
|
|
pageInfo.setSize(criteria.getSize());
|
|
- pageInfo.setOrders(criteria.getOrders());
|
|
+
|
|
|
|
+
|
|
pageInfo.setSearchCount(!criteria.isWithoutCount());
|
|
pageInfo.setSearchCount(!criteria.isWithoutCount());
|
|
return pageInfo;
|
|
return pageInfo;
|
|
}
|
|
}
|
|
@@ -52,6 +57,7 @@ public class QueryCriteriaHelper {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
toWrapper(wrapper, criteria.getCriteria());
|
|
toWrapper(wrapper, criteria.getCriteria());
|
|
|
|
+ ensureOrders(wrapper, criteria.getOrders());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -68,7 +74,7 @@ public class QueryCriteriaHelper {
|
|
String field = fields.next();
|
|
String field = fields.next();
|
|
JsonNode fieldValue = criteria.get(field);
|
|
JsonNode fieldValue = criteria.get(field);
|
|
|
|
|
|
- String dbField = StrUtil.startWith(field, "#JSON#")?field.substring(6):StrUtil.toUnderlineCase(field);
|
|
+ String dbField = toUnderlineCase(field);
|
|
|
|
|
|
if("$sql".equalsIgnoreCase(field)) {
|
|
if("$sql".equalsIgnoreCase(field)) {
|
|
wrapper.apply((String) JsonNodeUtils.getNodeValue(fieldValue));
|
|
wrapper.apply((String) JsonNodeUtils.getNodeValue(fieldValue));
|
|
@@ -132,6 +138,16 @@ public class QueryCriteriaHelper {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+ * 驼峰字段转下划线
|
|
|
|
+ * @param column
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public static String toUnderlineCase(String column) {
|
|
|
|
+
|
|
|
|
+ return StrUtil.startWith(column, "#JSON#")?column.substring(6):StrUtil.toUnderlineCase(column);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
* 按条件类型添加查询条件
|
|
* 按条件类型添加查询条件
|
|
* @param wrapper
|
|
* @param wrapper
|
|
* @param field
|
|
* @param field
|
|
@@ -170,4 +186,25 @@ public class QueryCriteriaHelper {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ * 拼接排序条件
|
|
|
|
+ * @param wrapper
|
|
|
|
+ * @param orders
|
|
|
|
+ * @param <T>
|
|
|
|
+ */
|
|
|
|
+ public static <T extends BaseEntity> void ensureOrders(QueryWrapper<T> wrapper, List<OrderItem> orders) {
|
|
|
|
+ if(CollUtil.isEmpty(orders)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ Class clazz = wrapper.getEntity().getClass();
|
|
|
|
+ for(OrderItem order:orders) {
|
|
|
|
+
|
|
|
|
+ if(!ReflectUtil.hasField(clazz, order.getColumn())) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ String column = toUnderlineCase(order.getColumn());
|
|
|
|
+ wrapper.orderBy(true, order.isAsc(), column);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|