类 SchemeFilterBuilder

java.lang.Object
net.sohelp.boot.engine.web.utils.SchemeFilterBuilder

public class SchemeFilterBuilder extends Object
方案过滤构建器
从以下版本开始:
2025/3/29 16:43
作者:
AaronFung
  • 构造器详细资料

    • SchemeFilterBuilder

      public SchemeFilterBuilder(GridVO gridVO, Map<String,Object> paramMap)
      构造函数
      参数:
      gridVO - 数据列表配置
      paramMap - 数据参数
  • 方法详细资料

    • power

      @Comment("\u9650\u5b9a\u67e5\u770b\u6570\u636e\u8303\u56f4") public SchemeFilterBuilder power(String powerField) throws TokenAuthenticationException, BusiException, SQLException
      限定查看数据范围,根据权限类型过滤数据
      参数:
      powerField - 权限字段名,用于SQL查询中指定需要过滤的字段
      返回:
      返回当前SchemeFilterBuilder对象,支持链式调用
      抛出:
      TokenAuthenticationException - 当令牌认证失败时抛出
      BusiException - 当业务处理异常时抛出
      SQLException - 当SQL操作异常时抛出
    • getParamMap

      @Comment("\u83b7\u53d6\u53c2\u6570\u6570\u636e") public Map<String,Object> getParamMap()
      获取参数数据
      返回:
      包含参数键值对的Map对象
    • clear

      @Comment("\u6e05\u7a7a\u67e5\u8be2\u6761\u4ef6") public SchemeFilterBuilder clear()
      清空查询条件

      该方法会清空以下内容:

      • 排序条件(orderMap)
      • 过滤条件(conditionMap)
      • 方案内容(schemeBuilder)
      • 关键字列表(keywordsNameList)
      • 权限语句(powerBuilder)
      返回:
      返回当前SchemeFilterBuilder实例,支持链式调用
    • clearOrderBy

      @Comment("\u6e05\u7a7a\u6392\u5e8f") public SchemeFilterBuilder clearOrderBy()
      清空排序条件。
      返回:
      返回当前SchemeFilterBuilder实例,以便链式调用。
    • clearCondition

      @Comment("\u6e05\u7a7a\u7b5b\u9009\u6761\u4ef6") public SchemeFilterBuilder clearCondition()
      清空筛选条件
      返回:
      当前SchemeFilterBuilder对象,支持链式调用
    • clearScheme

      @Comment("\u6e05\u7a7a\u65b9\u6848") public SchemeFilterBuilder clearScheme()
      清空方案
      返回:
      返回当前SchemeFilterBuilder实例,便于链式调用
    • clearPower

      @Comment("\u6e05\u7a7a\u67e5\u8be2\u8303\u56f4") public SchemeFilterBuilder clearPower()
      清空查询范围。
      返回:
      返回当前SchemeFilterBuilder实例,以便链式调用。
    • clearKeywords

      @Comment("\u6e05\u7a7a\u5173\u952e\u5b57") public SchemeFilterBuilder clearKeywords()
      清空关键字列表
      返回:
      返回当前SchemeFilterBuilder实例,支持链式调用
    • scheme

      public SchemeFilterBuilder scheme()
      创建一个默认空字符串的Scheme过滤器构建器。
      返回:
      返回一个SchemeFilterBuilder实例,其scheme参数初始化为空字符串
    • scheme

      @Comment("\u7b5b\u9009\u65b9\u6848") public SchemeFilterBuilder scheme(@Comment("\u65b9\u6848\u540d\u79f0") String scheme)
      筛选方案

      根据传入的方案名称或参数映射中的方案名称,查找对应的查询方案配置, 并生成SQL查询条件追加到当前构建器中。

      参数:
      scheme - 方案名称,如果为空则尝试从paramMap中获取"scheme"值
      返回:
      返回当前SchemeFilterBuilder实例,支持链式调用
    • scheme

      @Comment("\u7b5b\u9009\u65b9\u6848") public SchemeFilterBuilder scheme(@Comment("\u65b9\u6848\u914d\u7f6e") com.alibaba.fastjson.JSONObject config)
      筛选方案
      参数:
      config - 方案配置,用于构建筛选条件的JSON对象
      返回:
      返回当前SchemeFilterBuilder对象,支持链式调用
    • orderBy

      @Comment("\u6570\u636e\u6392\u5e8f") public SchemeFilterBuilder orderBy()
      数据排序
      返回:
      返回SchemeFilterBuilder实例,用于构建排序条件
    • orderBy

      @Comment("\u6570\u636e\u6392\u5e8f") public SchemeFilterBuilder orderBy(@Comment("\u9ed8\u8ba4\u6392\u5e8f\u5b57\u6bb5") String defaultField, @Comment("\u9ed8\u8ba4\u6392\u5e8f\u65b9\u5f0f") String defaultOrder)
      数据排序,根据不同条件设置排序字段和排序方式

      排序优先级:

      1. 优先使用传入的默认排序字段和方式
      2. 其次使用参数中的sort和order字段
      3. 最后使用GridPropertyVO中第一个可排序字段
      4. 如果以上都没有,则默认按id降序排序
      参数:
      defaultField - 默认排序字段,如果为空则尝试其他排序方式
      defaultOrder - 默认排序方式,默认为"asc"(升序),可选"desc"(降序)
      返回:
      返回当前SchemeFilterBuilder对象,支持链式调用
    • filter

      @Comment("\u7b5b\u9009\u6761\u4ef6") public SchemeFilterBuilder filter()
      创建筛选条件构建器
      返回:
      返回一个默认的筛选条件构建器(参数为null)
    • filter

      @Comment("\u7b5b\u9009\u6761\u4ef6") public SchemeFilterBuilder filter(@Comment("\u7b5b\u9009\u6761\u4ef6") ConditionVO... conditions)
      构建筛选条件,支持从参数传入或从paramMap中解析

      处理逻辑: 1. 优先使用传入的conditions参数作为筛选条件 2. 当conditions为空时,尝试从paramMap的"filter"字段解析JSON格式的条件 3. 过滤掉无效条件(字段名为空或值为空且比较符不是EMPTY/NOT_EMPTY) 4. 为未设置比较符的条件自动补充字段默认比较符

      参数:
      conditions - 可变参数形式的筛选条件集合
      返回:
      当前SchemeFilterBuilder实例,支持链式调用
    • toString

      @Comment("\u6784\u5efaSQL") public String toString()
      构建SQL语句
      覆盖:
      toString 在类中 Object
      返回:
      构建完成的SQL字符串
    • buildAll

      public String buildAll()
      构建完整的查询方案

      该方法依次执行以下操作: 1. 筛选字段查询 2. 方案查询 3. 生成关键字查询 4. 排序处理 5. 最终生成SQL语句

      返回:
      构建完成的SQL查询语句
    • getCondition

      public ConditionVO getCondition(String fieldName)
      获取指定字段的过滤条件
      参数:
      fieldName - 字段名称,用于在 conditionMap 中查找对应的过滤条件
      返回:
      返回与字段名称关联的 ConditionVO 对象,如果不存在则返回 null
    • build

      public String build(String fieldName)
      获取指定字段的生成过滤 SQL 语句
      参数:
      fieldName - 字段名称,用于从 conditionMap 中获取对应的查询条件
      返回:
      返回该字段对应的 SQL 过滤条件字符串,如果字段不存在则返回空字符串
    • build

      @Comment("\u6784\u5efaSQL") public String build()
      构建SQL查询语句

      该函数根据当前对象的配置参数(包括方案、权限、查询条件、关键字和排序规则)动态构建完整的SQL查询语句。

      处理逻辑包括:

      • 合并方案和权限生成的SQL片段
      • 处理各种类型的查询条件(普通条件、外键关联、特殊比较符、日期范围、数值范围等)
      • 处理关键字搜索(支持多字段OR查询)
      • 添加排序规则
      返回:
      构建完成的SQL查询语句字符串
    • keywords

      @Comment("\u5173\u952e\u5b57\u67e5\u8be2") public SchemeFilterBuilder keywords()
      关键字查询功能,根据gridVO中的关键字过滤条件构建筛选器。

      具体逻辑: 1. 检查gridVO及其filter和keywords是否存在,若不存在则直接返回当前对象。 2. 将gridVO中的属性转换为Map以便快速查找。 3. 遍历所有关键字字段名,若不在keywordsNameList中则添加。

      返回:
      返回当前SchemeFilterBuilder对象以便链式调用
    • keywords

      @Comment("\u5173\u952e\u5b57\u751f\u6210") public SchemeFilterBuilder keywords(@Comment("\u5173\u952e\u5b57") String... keywords)
      关键字生成
      参数:
      keywords - 关键字数组,用于添加到关键字列表中(去重后添加)
      返回:
      当前SchemeFilterBuilder实例,支持链式调用