zyx
2024-07-20 a3776853fa6ff1c4a9805615a79852d54f700e3f
zy-asrs-common/src/main/java/com/zy/asrs/common/web/BaseController.java
@@ -1,7 +1,9 @@
package com.zy.asrs.common.web;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.common.sys.entity.User;
import com.zy.asrs.common.sys.entity.UserLogin;
@@ -125,4 +127,58 @@
        return tagService.getTop(getHostId());
    }
    /**
     * 全字段模糊搜索
     * @param cls 模型类
     * @param set 排除字段集合
     * @param condition 搜索内容
     */
    protected <T> void allLike(Class<T> cls, Set<String> set, QueryWrapper<T> wrapper, String condition){
        if (Cools.isEmpty(condition)) {
            return;
        }
        final 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;
            }
            String column = null;
            if (field.isAnnotationPresent(TableField.class)) {
                column = field.getAnnotation(TableField.class).value();
            }
            if (Cools.isEmpty(column)) {
                column = field.getName();
            }
            if (!set.contains(column)) {
                columns.add(column);
            }
        }
        if (columns.isEmpty()) {
            return;
        }
        wrapper.and( w -> {
            for (int i=0;i<columns.size();i++){
                String colums = columns.get(i);
                if (i==0){
                    w.like(colums, condition);
                }else {
                    w.or().like(colums, condition);
                }
            }
        });
//        for (int i=0;i<columns.size();i++){
//            String colums = columns.get(i);
//            if (i==0){
//                wrapper.and(w -> w.like(colums, condition));
//            } else {
//                wrapper.or(w -> w.like(colums, condition));
//            }
////            wrapper.like(columns.get(i), condition);
//        }
    }
}