skyouc
5 天以前 40d9cd510741a098bd52cbe22a5f9e5528f45abc
rsf-server/src/main/java/com/vincent/rsf/server/common/domain/PageParam.java
@@ -10,10 +10,7 @@
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Consumer;
/**
@@ -73,6 +70,10 @@
        return this.buildWrapper(like, null, timeField);
    }
    public QueryWrapper<T> buildWrapper(boolean like, List<String> fields) {
        return this.buildWrapper(like, null, "create_time", fields);
    }
    @SuppressWarnings("all")
    public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField) {
        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
@@ -97,10 +98,13 @@
                if (this.isToUnderlineCase) {
                    key = Utils.toSymbolCase(key, '_');
                }
                if (like) {
                    queryWrapper.like(key, val);
                String finalKey = key;
                if (like && key.contains(timeField)) {
                    queryWrapper.and(wrapper -> wrapper.like("`" + finalKey + "`", val));
//                    queryWrapper.like("`" +  key + "`", val);
                } else {
                    queryWrapper.eq(key, val);
                    queryWrapper.and(wrapper -> wrapper.eq("`" + finalKey + "`", val));
//                    queryWrapper.eq("`" +  key + "`", val);
                }
            }
        }
@@ -129,34 +133,137 @@
        if (!Cools.isEmpty(where.getCondition()) && !Cools.isEmpty(cls)) {
            List<String> columns = new ArrayList<>();
            for (Field field : Cools.getAllFields(cls)){
            for (Field field : Cools.getAllFields(cls)) {
                if (Modifier.isFinal(field.getModifiers())
                        || Modifier.isStatic(field.getModifiers())
                        || Modifier.isTransient(field.getModifiers())){
                        || Modifier.isTransient(field.getModifiers())) {
                    continue;
                }
                if (field.isAnnotationPresent(TableField.class)){
                if (field.isAnnotationPresent(TableField.class)) {
                    TableField annotation = field.getAnnotation(TableField.class);
                    if (!annotation.exist()) {
                        continue;
                    }
                }
                String column =  Utils.toSymbolCase(field.getName(), '_');
                String column = Utils.toSymbolCase(field.getName(), '_');
                columns.add(column);
            }
            if (!columns.isEmpty()) {
                for (int i=0;i<columns.size();i++){
                    String column = columns.get(i);
                    String condition = where.getCondition();
                queryWrapper.and(wrapper -> {
                    for (int i = 0; i < columns.size(); i++) {
                        String column = columns.get(i);
                        String condition = where.getCondition();
                        if (i == 0) {
                            wrapper.or().like("`" + column + "`", condition);
                        } else {
                            wrapper.or().like("`" + column + "`", condition);
                        }
                    }
                });
            }
        }
        return queryWrapper;
    }
                    if (i == 0) {
                        queryWrapper.and(wrapper -> wrapper.like(column, condition));
                    } else {
                        queryWrapper.or().like(column, condition);
    @SuppressWarnings("all")
    public QueryWrapper<T> buildWrapper(boolean like, Consumer<QueryWrapper<T>> consumer, String timeField, List<String> fields) {
        QueryWrapper<T> queryWrapper = new QueryWrapper<>();
        Map<String, Object> map = where.getMap();
        for (String key : map.keySet()) {
            Object val = map.get(key);
            if (key.contains("Range")) {
                ArrayList<String> list = null;
                if (val instanceof ArrayList) {
                    list = (ArrayList<String>) val;
                }
                if (null != list) {
                    key = key.replaceAll("Range", "");
                    if (this.isToUnderlineCase) {
                        key = Utils.toSymbolCase(key, '_');
                    }
                    queryWrapper.ge(key, DateUtils.convert(list.get(0)));
                    queryWrapper.le(key, DateUtils.convert(list.get(1)));
                }
            } else {
                if (this.isToUnderlineCase) {
                    key = Utils.toSymbolCase(key, '_');
                }
                if (like && !fields.contains(key)) {
                    queryWrapper.like("`" + key + "`", val);
                } else {
                    queryWrapper.eq("`" + key + "`", val);
                }
            }
        }
        if (null != consumer) {
            consumer.accept(queryWrapper);
        }
        if (!Cools.isEmpty(where.getTimeStart())) {
            Date timeStart = DateUtils.convert(String.valueOf(where.getTimeStart()), DateUtils.yyyyMMdd_F);
            queryWrapper.ge(timeField, timeStart);
        }
        if (!Cools.isEmpty(where.getTimeEnd())) {
            Date timeStart = DateUtils.convert(String.valueOf(where.getTimeEnd()), DateUtils.yyyyMMdd_F);
            queryWrapper.le(timeField, timeStart);
        }
        if (!Cools.isEmpty(where.getOrderBy())) {
            if (sortIsSQL(where.getOrderBy())) {
                setOrders(parseOrderSQL(where.getOrderBy()));
            }
        } else {
//            queryWrapper.orderByDesc("create_time");
        }
        if (!Cools.isEmpty(where.getCondition()) && !Cools.isEmpty(cls)) {
            List<String> columns = new ArrayList<>();
            for (Field field : Cools.getAllFields(cls)) {
                if (Modifier.isFinal(field.getModifiers())
                        || Modifier.isStatic(field.getModifiers())
                        || Modifier.isTransient(field.getModifiers())) {
                    continue;
                }
                if (field.isAnnotationPresent(TableField.class)) {
                    TableField annotation = field.getAnnotation(TableField.class);
                    if (!annotation.exist()) {
                        continue;
                    }
                }
                String column = Utils.toSymbolCase(field.getName(), '_');
                columns.add(column);
            }
//            if (!columns.isEmpty()) {
//                for (int i=0;i<columns.size();i++){
//                    String column = columns.get(i);
//                    String condition = where.getCondition();
//
//                    if (i == 0) {
//                        queryWrapper.and(wrapper -> wrapper.like("`" + column + "`", condition));
//                    } else {
//                        queryWrapper.or().like("`" + column + "`", condition);
//                    }
//                }
//            }
            if (!columns.isEmpty()) {
                queryWrapper.and(wrapper -> {
                    for (int i = 0; i < columns.size(); i++) {
                        String column = columns.get(i);
                        String condition = where.getCondition();
                        if (i == 0) {
                            wrapper.or().like("`" + column + "`", condition);
                        } else {
                            wrapper.or().like("`" + column + "`", condition);
                        }
                    }
                });
            }
        }
        return queryWrapper;
@@ -198,4 +305,5 @@
        return map;
    }
}