|
@@ -1,12 +1,15 @@
|
|
|
package com.persagy.dmp.rwd.digital.utils;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
|
import cn.hutool.core.util.ReflectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
+import com.persagy.dmp.basic.model.QueryCriteria;
|
|
|
import com.persagy.dmp.basic.model.QueryOperator;
|
|
|
import com.persagy.dmp.basic.utils.JsonNodeUtils;
|
|
|
import com.persagy.dmp.common.model.entity.BaseEntity;
|
|
@@ -26,11 +29,42 @@ public class ObjectDigitalCriteriaHelper {
|
|
|
private static final Set<String> DIGITAL_FIELDS = ReflectUtil.getFieldMap(ObjectDigital.class).keySet();
|
|
|
|
|
|
/**
|
|
|
+ * 对象查询条件预处理:主要处理infos扩展内容
|
|
|
+ * @param criteria
|
|
|
+ */
|
|
|
+ public static void presetDigitalCriteria(QueryCriteria criteria) {
|
|
|
+ // 处理查询条件
|
|
|
+ ensureExtraCond(criteria.getCriteria());
|
|
|
+ // 处理排序条件
|
|
|
+ ensureOrders(criteria.getOrders());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理排序条件
|
|
|
+ * @param orders
|
|
|
+ */
|
|
|
+ private static void ensureOrders(List<OrderItem> orders) {
|
|
|
+ if(CollUtil.isEmpty(orders)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ for(OrderItem order:orders) {
|
|
|
+ String column = order.getColumn();
|
|
|
+ // 基础属性不用处理
|
|
|
+ if(StrUtil.isBlank(column) || DIGITAL_FIELDS.contains(column)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 非基础属性转json
|
|
|
+ column = StrUtil.format("#JSON#json_extract({}, '$.{}')", ObjectDigital.EXTRA_COLUMN, column);
|
|
|
+ order.setColumn(column);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 拼接扩展条件
|
|
|
* 暂用#JSON#表示是json条件,不处理驼峰
|
|
|
* @param criteria
|
|
|
*/
|
|
|
- public static void ensureExtraCond(ObjectNode criteria) {
|
|
|
+ private static void ensureExtraCond(ObjectNode criteria) {
|
|
|
if(criteria == null || criteria.isNull()) {
|
|
|
return;
|
|
|
}
|