mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2026-06-09 15:26:09 +00:00
update 增加join工具 简化join业务代码写法
This commit is contained in:
@@ -0,0 +1,580 @@
|
||||
package org.dromara.common.mybatis.core.query;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||
import com.github.yulichang.toolkit.LambdaUtils;
|
||||
import com.github.yulichang.toolkit.support.ColumnCache;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.github.yulichang.wrapper.segments.SelectCache;
|
||||
import com.github.yulichang.wrapper.segments.SelectNormal;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.helper.DataBaseHelper;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* MPJ Lambda 联表查询构造辅助类。
|
||||
*
|
||||
* @param <T> 主表实体类型
|
||||
* @author Lion Li
|
||||
*/
|
||||
public final class LambdaJoinQueryBuilder<T> {
|
||||
|
||||
/**
|
||||
* MyBatis-Plus-Join Lambda 查询包装器。
|
||||
*/
|
||||
private final MPJLambdaWrapper<T> wrapper;
|
||||
|
||||
/**
|
||||
* 构造 MPJ Lambda 联表查询构造辅助对象。
|
||||
*
|
||||
* @param wrapper MPJ Lambda 查询包装器
|
||||
*/
|
||||
LambdaJoinQueryBuilder(MPJLambdaWrapper<T> wrapper) {
|
||||
this.wrapper = wrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加去重查询。
|
||||
*
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public LambdaJoinQueryBuilder<T> distinct() {
|
||||
wrapper.distinct();
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定主表查询字段。
|
||||
*
|
||||
* @param columns 查询字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
@SafeVarargs
|
||||
public final <E> LambdaJoinQueryBuilder<T> select(SFunction<E, ?>... columns) {
|
||||
wrapper.select(columns);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定带表别名的同名映射查询字段。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param columns 查询字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
@SafeVarargs
|
||||
public final <E> LambdaJoinQueryBuilder<T> select(String alias, SFunction<E, ?>... columns) {
|
||||
if (columns == null || columns.length == 0) {
|
||||
return this;
|
||||
}
|
||||
Class<?> entityClass = LambdaUtils.getEntityClass(columns[0]);
|
||||
Map<String, SelectCache> cacheMap = ColumnCache.getMapField(entityClass);
|
||||
for (SFunction<E, ?> column : columns) {
|
||||
wrapper.getSelectColum().add(new SelectNormal(cacheMap.get(LambdaUtils.getName(column)), wrapper.getIndex(), true, alias));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询主表全部字段。
|
||||
*
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public LambdaJoinQueryBuilder<T> selectAll() {
|
||||
wrapper.selectAll();
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询指定实体全部字段。
|
||||
*
|
||||
* @param entityClass 实体类型
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public LambdaJoinQueryBuilder<T> selectAll(Class<?> entityClass) {
|
||||
wrapper.selectAll(entityClass);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询指定别名实体全部字段。
|
||||
*
|
||||
* @param entityClass 实体类型
|
||||
* @param alias 表别名
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public LambdaJoinQueryBuilder<T> selectAll(Class<?> entityClass, String alias) {
|
||||
wrapper.selectAll(entityClass, alias);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定查询字段并映射到返回对象字段。
|
||||
*
|
||||
* @param column 查询字段
|
||||
* @param alias 返回对象字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S, X> LambdaJoinQueryBuilder<T> selectAs(SFunction<S, ?> column, SFunction<X, ?> alias) {
|
||||
wrapper.selectAs(column, alias);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定带表别名的查询字段并映射到返回对象字段。
|
||||
*
|
||||
* @param tableAlias 表别名
|
||||
* @param column 查询字段
|
||||
* @param alias 返回对象字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S, X> LambdaJoinQueryBuilder<T> selectAs(String tableAlias, SFunction<S, ?> column, SFunction<X, ?> alias) {
|
||||
wrapper.selectAs(tableAlias, column, alias);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定 SQL 查询片段并映射到返回对象字段。
|
||||
*
|
||||
* @param column SQL 查询片段
|
||||
* @param alias 返回对象字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <X> LambdaJoinQueryBuilder<T> selectAs(String column, SFunction<X, ?> alias) {
|
||||
wrapper.selectAs(column, alias);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加左联表。
|
||||
*
|
||||
* @param entityClass 关联实体类型
|
||||
* @param left 关联实体字段
|
||||
* @param right 当前查询字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S, X> LambdaJoinQueryBuilder<T> leftJoin(Class<S> entityClass, SFunction<S, ?> left, SFunction<X, ?> right) {
|
||||
wrapper.leftJoin(entityClass, left, right);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加带别名的左联表。
|
||||
*
|
||||
* @param entityClass 关联实体类型
|
||||
* @param alias 关联表别名
|
||||
* @param left 关联实体字段
|
||||
* @param right 当前查询字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S, X> LambdaJoinQueryBuilder<T> leftJoin(Class<S> entityClass, String alias, SFunction<S, ?> left, SFunction<X, ?> right) {
|
||||
wrapper.leftJoin(entityClass, alias, left, right);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加等于条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param value 条件值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> eq(String alias, SFunction<S, ?> column, Object value) {
|
||||
return eq(true, alias, column, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加等于条件。
|
||||
*
|
||||
* @param condition 是否添加该条件
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param value 条件值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> eq(boolean condition, String alias, SFunction<S, ?> column, Object value) {
|
||||
wrapper.eq(condition, alias, column, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 值不为空时添加等于条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param value 条件值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> eqIfPresent(String alias, SFunction<S, ?> column, Object value) {
|
||||
return eq(value != null, alias, column, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 文本不为空白时添加等于条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param value 条件值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> eqIfText(String alias, SFunction<S, ?> column, String value) {
|
||||
return eq(StringUtils.isNotBlank(value), alias, column, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加不等于条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param value 条件值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> ne(String alias, SFunction<S, ?> column, Object value) {
|
||||
return ne(true, alias, column, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加不等于条件。
|
||||
*
|
||||
* @param condition 是否添加该条件
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param value 条件值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> ne(boolean condition, String alias, SFunction<S, ?> column, Object value) {
|
||||
wrapper.ne(condition, alias, column, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 文本不为空白时添加不等于条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param value 条件值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> neIfText(String alias, SFunction<S, ?> column, String value) {
|
||||
return ne(StringUtils.isNotBlank(value), alias, column, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加模糊匹配条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param value 条件值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> like(String alias, SFunction<S, ?> column, Object value) {
|
||||
return like(true, alias, column, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加模糊匹配条件。
|
||||
*
|
||||
* @param condition 是否添加该条件
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param value 条件值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> like(boolean condition, String alias, SFunction<S, ?> column, Object value) {
|
||||
wrapper.like(condition, alias, column, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 文本不为空白时添加模糊匹配条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param value 条件值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> likeIfText(String alias, SFunction<S, ?> column, String value) {
|
||||
return like(StringUtils.isNotBlank(value), alias, column, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加区间条件。
|
||||
*
|
||||
* @param condition 是否添加该条件
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param begin 起始值
|
||||
* @param end 结束值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> between(boolean condition, String alias, SFunction<S, ?> column, Object begin, Object end) {
|
||||
wrapper.between(condition, alias, column, begin, end);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 起止值均不为空时添加区间条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param begin 起始值
|
||||
* @param end 结束值
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> betweenIfPresent(String alias, SFunction<S, ?> column, Object begin, Object end) {
|
||||
return between(begin != null && end != null, alias, column, begin, end);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从参数 Map 中读取起止值,均不为空时添加区间条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param params 参数 Map
|
||||
* @param beginKey 起始值参数名
|
||||
* @param endKey 结束值参数名
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> betweenParams(String alias, SFunction<S, ?> column, Map<String, Object> params, String beginKey, String endKey) {
|
||||
if (params == null) {
|
||||
return between(false, alias, column, null, null);
|
||||
}
|
||||
Object begin = params.get(beginKey);
|
||||
Object end = params.get(endKey);
|
||||
return between(begin != null && end != null, alias, column, begin, end);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加包含集合条件。
|
||||
*
|
||||
* @param condition 是否添加该条件
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param values 条件值集合
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> in(boolean condition, String alias, SFunction<S, ?> column, Collection<?> values) {
|
||||
wrapper.in(condition, alias, column, values);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加包含数组条件。
|
||||
*
|
||||
* @param condition 是否添加该条件
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param values 条件值数组
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> in(boolean condition, String alias, SFunction<S, ?> column, Object... values) {
|
||||
wrapper.in(condition, alias, column, values);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加包含集合条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param values 条件值集合
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> in(String alias, SFunction<S, ?> column, Collection<?> values) {
|
||||
return in(true, alias, column, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加包含数组条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param values 条件值数组
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> in(String alias, SFunction<S, ?> column, Object... values) {
|
||||
return in(true, alias, column, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* 集合不为空时添加包含条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param values 条件值集合
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> inIfNotEmpty(String alias, SFunction<S, ?> column, Collection<?> values) {
|
||||
return in(values != null && !values.isEmpty(), alias, column, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* 数组不为空时添加包含条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param values 条件值数组
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> inIfNotEmpty(String alias, SFunction<S, ?> column, Object... values) {
|
||||
return in(values != null && values.length > 0, alias, column, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加不包含集合条件。
|
||||
*
|
||||
* @param condition 是否添加该条件
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param values 条件值集合
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> notIn(boolean condition, String alias, SFunction<S, ?> column, Collection<?> values) {
|
||||
wrapper.notIn(condition, alias, column, values);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 集合不为空时添加不包含条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @param values 条件值集合
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> notInIfNotEmpty(String alias, SFunction<S, ?> column, Collection<?> values) {
|
||||
return notIn(values != null && !values.isEmpty(), alias, column, values);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加字段非空条件。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> isNotNull(String alias, SFunction<S, ?> column) {
|
||||
return isNotNull(true, alias, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加字段非空条件。
|
||||
*
|
||||
* @param condition 是否添加该条件
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> isNotNull(boolean condition, String alias, SFunction<S, ?> column) {
|
||||
wrapper.isNotNull(condition, alias, column);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加升序排序。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> orderByAsc(String alias, SFunction<S, ?> column) {
|
||||
wrapper.orderByAsc(alias, column);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加降序排序。
|
||||
*
|
||||
* @param alias 表别名
|
||||
* @param column 字段
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public <S> LambdaJoinQueryBuilder<T> orderByDesc(String alias, SFunction<S, ?> column) {
|
||||
wrapper.orderByDesc(alias, column);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 拼接 SQL 片段条件。
|
||||
*
|
||||
* @param condition 是否添加该条件
|
||||
* @param applySql SQL 片段
|
||||
* @param values SQL 片段参数
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public LambdaJoinQueryBuilder<T> apply(boolean condition, String applySql, Object... values) {
|
||||
wrapper.apply(condition, applySql, values);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加 FIND_IN_SET 条件。
|
||||
*
|
||||
* @param condition 是否添加该条件
|
||||
* @param value 匹配值
|
||||
* @param column 字段名
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public LambdaJoinQueryBuilder<T> findInSet(boolean condition, Object value, String column) {
|
||||
return apply(condition, DataBaseHelper.findInSet(value, column));
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用函数式方式追加 MPJ 原生能力。
|
||||
*
|
||||
* @param consumer MPJ 查询包装器消费函数
|
||||
* @return 当前联表查询构造辅助对象
|
||||
*/
|
||||
public LambdaJoinQueryBuilder<T> apply(Consumer<MPJLambdaWrapper<T>> consumer) {
|
||||
consumer.accept(wrapper);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询列表。
|
||||
*
|
||||
* @param resultClass 返回对象类型
|
||||
* @param <R> 返回对象类型
|
||||
* @return 查询结果
|
||||
*/
|
||||
public <R> List<R> list(Class<R> resultClass) {
|
||||
return wrapper.list(resultClass);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询。
|
||||
*
|
||||
* @param page 分页对象
|
||||
* @param resultClass 返回对象类型
|
||||
* @param <R> 返回对象类型
|
||||
* @param <P> 分页类型
|
||||
* @return 分页结果
|
||||
*/
|
||||
public <R, P extends IPage<R>> P page(P page, Class<R> resultClass) {
|
||||
return wrapper.page(page, resultClass);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询数量。
|
||||
*
|
||||
* @return 数量
|
||||
*/
|
||||
public Long count() {
|
||||
return wrapper.count();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取底层 MPJ Lambda 查询包装器。
|
||||
*
|
||||
* @return MPJ Lambda 查询包装器
|
||||
*/
|
||||
public MPJLambdaWrapper<T> build() {
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.dromara.common.mybatis.core.query;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
|
||||
/**
|
||||
* MyBatis-Plus 查询构造器入口。
|
||||
@@ -23,4 +24,27 @@ public final class QueryBuilder {
|
||||
return new LambdaQueryBuilder<>(Wrappers.lambdaQuery(entityClass));
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建 MPJ Lambda 联表查询构造辅助对象。
|
||||
*
|
||||
* @param entityClass 主表实体类型
|
||||
* @param <T> 主表实体类型
|
||||
* @return MPJ Lambda 联表查询构造辅助对象
|
||||
*/
|
||||
public static <T> LambdaJoinQueryBuilder<T> lambdaJoin(Class<T> entityClass) {
|
||||
return new LambdaJoinQueryBuilder<>(JoinWrappers.lambda(entityClass));
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建带主表别名的 MPJ Lambda 联表查询构造辅助对象。
|
||||
*
|
||||
* @param alias 主表别名
|
||||
* @param entityClass 主表实体类型
|
||||
* @param <T> 主表实体类型
|
||||
* @return MPJ Lambda 联表查询构造辅助对象
|
||||
*/
|
||||
public static <T> LambdaJoinQueryBuilder<T> lambdaJoin(String alias, Class<T> entityClass) {
|
||||
return new LambdaJoinQueryBuilder<>(JoinWrappers.lambda(alias, entityClass));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ package org.dromara.system.mapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import org.dromara.common.core.utils.StreamUtils;
|
||||
import org.dromara.common.mybatis.annotation.DataColumn;
|
||||
import org.dromara.common.mybatis.annotation.DataPermission;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.common.mybatis.core.query.QueryBuilder;
|
||||
import org.dromara.system.domain.SysDept;
|
||||
import org.dromara.system.domain.SysRole;
|
||||
import org.dromara.system.domain.SysRoleDept;
|
||||
@@ -101,7 +101,7 @@ public interface SysDeptMapper extends BaseMapperPlus<SysDept, SysDeptVo>, MPJBa
|
||||
* @return 选中部门列表
|
||||
*/
|
||||
default List<Long> selectDeptListByRoleId(Long roleId, boolean deptCheckStrictly) {
|
||||
List<SysDept> depts = this.selectJoinList(SysDept.class, JoinWrappers.lambda("d", SysDept.class)
|
||||
List<SysDept> depts = this.selectJoinList(SysDept.class, QueryBuilder.lambdaJoin("d", SysDept.class)
|
||||
.distinct()
|
||||
.select(SysDept::getDeptId, SysDept::getParentId, SysDept::getOrderNum)
|
||||
.leftJoin(SysRoleDept.class, "srd", SysRoleDept::getDeptId, SysDept::getDeptId)
|
||||
@@ -109,7 +109,8 @@ public interface SysDeptMapper extends BaseMapperPlus<SysDept, SysDeptVo>, MPJBa
|
||||
.eq("srd", SysRoleDept::getRoleId, roleId)
|
||||
.eq("sr", SysRole::getStatus, NORMAL)
|
||||
.orderByAsc("d", SysDept::getParentId)
|
||||
.orderByAsc("d", SysDept::getOrderNum));
|
||||
.orderByAsc("d", SysDept::getOrderNum)
|
||||
.build());
|
||||
Set<Long> parentIds = deptCheckStrictly ? new HashSet<>(StreamUtils.toList(depts, SysDept::getParentId)) : Collections.emptySet();
|
||||
return depts.stream()
|
||||
.map(SysDept::getDeptId)
|
||||
|
||||
@@ -2,11 +2,11 @@ package org.dromara.system.mapper;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import org.dromara.common.core.constant.SystemConstants;
|
||||
import org.dromara.common.core.utils.StreamUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.common.mybatis.core.query.QueryBuilder;
|
||||
import org.dromara.system.domain.SysMenu;
|
||||
import org.dromara.system.domain.SysRole;
|
||||
import org.dromara.system.domain.SysRoleMenu;
|
||||
@@ -31,7 +31,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
* @return 权限列表
|
||||
*/
|
||||
default Set<String> selectMenuPermsByUserId(Long userId) {
|
||||
List<SysMenu> list = this.selectJoinList(SysMenu.class, JoinWrappers.lambda("m", SysMenu.class)
|
||||
List<SysMenu> list = this.selectJoinList(SysMenu.class, QueryBuilder.lambdaJoin("m", SysMenu.class)
|
||||
.distinct()
|
||||
.select(SysMenu::getPerms)
|
||||
.leftJoin(SysRoleMenu.class, "srm", SysRoleMenu::getMenuId, SysMenu::getMenuId)
|
||||
@@ -39,7 +39,8 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
.leftJoin(SysRole.class, "sr", SysRole::getRoleId, SysRoleMenu::getRoleId)
|
||||
.eq("sur", SysUserRole::getUserId, userId)
|
||||
.eq("sr", SysRole::getStatus, SystemConstants.NORMAL)
|
||||
.isNotNull("m", SysMenu::getPerms));
|
||||
.isNotNull("m", SysMenu::getPerms)
|
||||
.build());
|
||||
return new HashSet<>(StreamUtils.filter(StreamUtils.toList(list, SysMenu::getPerms), StringUtils::isNotBlank));
|
||||
}
|
||||
|
||||
@@ -50,14 +51,15 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
* @return 权限列表
|
||||
*/
|
||||
default Set<String> selectMenuPermsByRoleId(Long roleId) {
|
||||
List<SysMenu> list = this.selectJoinList(SysMenu.class, JoinWrappers.lambda("m", SysMenu.class)
|
||||
List<SysMenu> list = this.selectJoinList(SysMenu.class, QueryBuilder.lambdaJoin("m", SysMenu.class)
|
||||
.distinct()
|
||||
.select(SysMenu::getPerms)
|
||||
.leftJoin(SysRoleMenu.class, "srm", SysRoleMenu::getMenuId, SysMenu::getMenuId)
|
||||
.leftJoin(SysRole.class, "sr", SysRole::getRoleId, SysRoleMenu::getRoleId)
|
||||
.eq("srm", SysRoleMenu::getRoleId, roleId)
|
||||
.eq("sr", SysRole::getStatus, SystemConstants.NORMAL)
|
||||
.isNotNull("m", SysMenu::getPerms));
|
||||
.isNotNull("m", SysMenu::getPerms)
|
||||
.build());
|
||||
return new HashSet<>(StreamUtils.filter(StreamUtils.toList(list, SysMenu::getPerms), StringUtils::isNotBlank));
|
||||
}
|
||||
|
||||
@@ -71,7 +73,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
if (CollUtil.isEmpty(roleIds)) {
|
||||
return Map.of();
|
||||
}
|
||||
List<SysRoleMenuPermVo> list = this.selectJoinList(SysRoleMenuPermVo.class, JoinWrappers.lambda("m", SysMenu.class)
|
||||
List<SysRoleMenuPermVo> list = this.selectJoinList(SysRoleMenuPermVo.class, QueryBuilder.lambdaJoin("m", SysMenu.class)
|
||||
.distinct()
|
||||
.selectAs("srm", SysRoleMenu::getRoleId, SysRoleMenuPermVo::getRoleId)
|
||||
.selectAs(SysMenu::getPerms, SysRoleMenuPermVo::getPerms)
|
||||
@@ -79,7 +81,8 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
.leftJoin(SysRole.class, "sr", SysRole::getRoleId, SysRoleMenu::getRoleId)
|
||||
.in("srm", SysRoleMenu::getRoleId, roleIds)
|
||||
.eq("sr", SysRole::getStatus, SystemConstants.NORMAL)
|
||||
.isNotNull("m", SysMenu::getPerms));
|
||||
.isNotNull("m", SysMenu::getPerms)
|
||||
.build());
|
||||
Map<Long, Set<String>> result = new LinkedHashMap<>();
|
||||
for (SysRoleMenuPermVo item : list) {
|
||||
if (StringUtils.isBlank(item.getPerms())) {
|
||||
@@ -112,7 +115,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
* @return 选中菜单列表
|
||||
*/
|
||||
default List<Long> selectMenuListByRoleId(Long roleId, boolean menuCheckStrictly) {
|
||||
List<SysMenu> menus = this.selectJoinList(SysMenu.class, JoinWrappers.lambda("m", SysMenu.class)
|
||||
List<SysMenu> menus = this.selectJoinList(SysMenu.class, QueryBuilder.lambdaJoin("m", SysMenu.class)
|
||||
.distinct()
|
||||
.select(SysMenu::getMenuId, SysMenu::getParentId, SysMenu::getOrderNum)
|
||||
.leftJoin(SysRoleMenu.class, "srm", SysRoleMenu::getMenuId, SysMenu::getMenuId)
|
||||
@@ -120,7 +123,8 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
.eq("srm", SysRoleMenu::getRoleId, roleId)
|
||||
.eq("sr", SysRole::getStatus, SystemConstants.NORMAL)
|
||||
.orderByAsc("m", SysMenu::getParentId)
|
||||
.orderByAsc("m", SysMenu::getOrderNum));
|
||||
.orderByAsc("m", SysMenu::getOrderNum)
|
||||
.build());
|
||||
Set<Long> parentIds = menuCheckStrictly ? new HashSet<>(StreamUtils.toList(menus, SysMenu::getParentId)) : Collections.emptySet();
|
||||
return menus.stream()
|
||||
.map(SysMenu::getMenuId)
|
||||
@@ -136,7 +140,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
* @return 菜单列表
|
||||
*/
|
||||
default List<SysMenuVo> selectMenuListByUserId(SysMenuBo menu, Long userId) {
|
||||
return this.selectJoinList(SysMenuVo.class, JoinWrappers.lambda("m", SysMenu.class)
|
||||
return this.selectJoinList(SysMenuVo.class, QueryBuilder.lambdaJoin("m", SysMenu.class)
|
||||
.distinct()
|
||||
.selectAll(SysMenu.class)
|
||||
.leftJoin(SysRoleMenu.class, "srm", SysRoleMenu::getMenuId, SysMenu::getMenuId)
|
||||
@@ -144,13 +148,14 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
.leftJoin(SysRole.class, "sr", SysRole::getRoleId, SysRoleMenu::getRoleId)
|
||||
.eq("sur", SysUserRole::getUserId, userId)
|
||||
.eq("sr", SysRole::getStatus, SystemConstants.NORMAL)
|
||||
.like(StringUtils.isNotBlank(menu.getMenuName()), "m", SysMenu::getMenuName, menu.getMenuName())
|
||||
.eq(StringUtils.isNotBlank(menu.getVisible()), "m", SysMenu::getVisible, menu.getVisible())
|
||||
.eq(StringUtils.isNotBlank(menu.getStatus()), "m", SysMenu::getStatus, menu.getStatus())
|
||||
.eq(StringUtils.isNotBlank(menu.getMenuType()), "m", SysMenu::getMenuType, menu.getMenuType())
|
||||
.eq(Objects.nonNull(menu.getParentId()), "m", SysMenu::getParentId, menu.getParentId())
|
||||
.likeIfText("m", SysMenu::getMenuName, menu.getMenuName())
|
||||
.eqIfText("m", SysMenu::getVisible, menu.getVisible())
|
||||
.eqIfText("m", SysMenu::getStatus, menu.getStatus())
|
||||
.eqIfText("m", SysMenu::getMenuType, menu.getMenuType())
|
||||
.eqIfPresent("m", SysMenu::getParentId, menu.getParentId())
|
||||
.orderByAsc("m", SysMenu::getParentId)
|
||||
.orderByAsc("m", SysMenu::getOrderNum));
|
||||
.orderByAsc("m", SysMenu::getOrderNum)
|
||||
.build());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -160,7 +165,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
* @return 菜单列表
|
||||
*/
|
||||
default List<SysMenu> selectMenuTreeByUserId(Long userId) {
|
||||
return this.selectJoinList(SysMenu.class, JoinWrappers.lambda("m", SysMenu.class)
|
||||
return this.selectJoinList(SysMenu.class, QueryBuilder.lambdaJoin("m", SysMenu.class)
|
||||
.distinct()
|
||||
.selectAll(SysMenu.class)
|
||||
.leftJoin(SysRoleMenu.class, "srm", SysRoleMenu::getMenuId, SysMenu::getMenuId)
|
||||
@@ -171,7 +176,8 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo>, MPJBa
|
||||
.in("m", SysMenu::getMenuType, SystemConstants.TYPE_DIR, SystemConstants.TYPE_MENU)
|
||||
.eq("m", SysMenu::getStatus, SystemConstants.NORMAL)
|
||||
.orderByAsc("m", SysMenu::getParentId)
|
||||
.orderByAsc("m", SysMenu::getOrderNum));
|
||||
.orderByAsc("m", SysMenu::getOrderNum)
|
||||
.build());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,10 +3,10 @@ package org.dromara.system.mapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import org.dromara.common.mybatis.annotation.DataColumn;
|
||||
import org.dromara.common.mybatis.annotation.DataPermission;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.common.mybatis.core.query.QueryBuilder;
|
||||
import org.dromara.system.domain.SysPost;
|
||||
import org.dromara.system.domain.SysUserPost;
|
||||
import org.dromara.system.domain.vo.SysPostVo;
|
||||
@@ -71,10 +71,11 @@ public interface SysPostMapper extends BaseMapperPlus<SysPost, SysPostVo>, MPJBa
|
||||
* @return 岗位信息列表
|
||||
*/
|
||||
default List<SysPostVo> selectPostsByUserId(Long userId) {
|
||||
return this.selectJoinList(SysPostVo.class, JoinWrappers.lambda("p", SysPost.class)
|
||||
return this.selectJoinList(SysPostVo.class, QueryBuilder.lambdaJoin("p", SysPost.class)
|
||||
.selectAll(SysPost.class)
|
||||
.leftJoin(SysUserPost.class, "sup", SysUserPost::getPostId, SysPost::getPostId)
|
||||
.eq("sup", SysUserPost::getUserId, userId));
|
||||
.eq("sup", SysUserPost::getUserId, userId)
|
||||
.build());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,11 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.dromara.common.mybatis.annotation.DataColumn;
|
||||
import org.dromara.common.mybatis.annotation.DataPermission;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.common.mybatis.core.query.QueryBuilder;
|
||||
import org.dromara.system.domain.SysRole;
|
||||
import org.dromara.system.domain.SysUserRole;
|
||||
import org.dromara.system.domain.vo.SysRoleVo;
|
||||
@@ -87,11 +87,12 @@ public interface SysRoleMapper extends BaseMapperPlus<SysRole, SysRoleVo>, MPJBa
|
||||
* @return 角色列表
|
||||
*/
|
||||
default List<SysRoleVo> selectRolesByUserId(Long userId) {
|
||||
return this.selectJoinList(SysRoleVo.class, JoinWrappers.lambda("r", SysRole.class)
|
||||
return this.selectJoinList(SysRoleVo.class, QueryBuilder.lambdaJoin("r", SysRole.class)
|
||||
.select(SysRole::getRoleId, SysRole::getRoleName, SysRole::getRoleKey,
|
||||
SysRole::getRoleSort, SysRole::getDataScope, SysRole::getStatus)
|
||||
.leftJoin(SysUserRole.class, "sur", SysUserRole::getRoleId, SysRole::getRoleId)
|
||||
.eq("sur", SysUserRole::getUserId, userId));
|
||||
.eq("sur", SysUserRole::getUserId, userId)
|
||||
.build());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,14 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.dromara.common.core.constant.SystemConstants;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.annotation.DataColumn;
|
||||
import org.dromara.common.mybatis.annotation.DataPermission;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.common.mybatis.core.query.QueryBuilder;
|
||||
import org.dromara.system.domain.SysDept;
|
||||
import org.dromara.system.domain.SysRole;
|
||||
import org.dromara.system.domain.SysUser;
|
||||
@@ -70,20 +68,19 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo>, MPJBa
|
||||
@DataColumn(key = "userName", value = "u.create_by")
|
||||
})
|
||||
default List<SysUserExportVo> selectUserExportList(SysUserBo user, List<Long> deptIds) {
|
||||
MPJLambdaWrapper<SysUser> wrapper = JoinWrappers.lambda("u", SysUser.class)
|
||||
MPJLambdaWrapper<SysUser> wrapper = QueryBuilder.lambdaJoin("u", SysUser.class)
|
||||
.selectAll(SysUser.class)
|
||||
.selectAs("u1", SysUser::getUserName, SysUserExportVo::getLeaderName)
|
||||
.leftJoin(SysDept.class, "d", SysDept::getDeptId, SysUser::getDeptId)
|
||||
.leftJoin(SysUser.class, "u1", SysUser::getUserId, SysDept::getLeader)
|
||||
.eq("u", SysUser::getDelFlag, SystemConstants.NORMAL)
|
||||
.like(StringUtils.isNotBlank(user.getUserName()), "u", SysUser::getUserName, user.getUserName())
|
||||
.like(StringUtils.isNotBlank(user.getNickName()), "u", SysUser::getNickName, user.getNickName())
|
||||
.eq(StringUtils.isNotBlank(user.getStatus()), "u", SysUser::getStatus, user.getStatus())
|
||||
.like(StringUtils.isNotBlank(user.getPhoneNumber()), "u", SysUser::getPhoneNumber, user.getPhoneNumber())
|
||||
.between(user.getParams().get("beginTime") != null && user.getParams().get("endTime") != null,
|
||||
"u", SysUser::getCreateTime, user.getParams().get("beginTime"), user.getParams().get("endTime"))
|
||||
.in(deptIds != null && !deptIds.isEmpty(), "u", SysUser::getDeptId, deptIds)
|
||||
.orderByAsc("u", SysUser::getUserId);
|
||||
.likeIfText("u", SysUser::getUserName, user.getUserName())
|
||||
.likeIfText("u", SysUser::getNickName, user.getNickName())
|
||||
.eqIfText("u", SysUser::getStatus, user.getStatus())
|
||||
.likeIfText("u", SysUser::getPhoneNumber, user.getPhoneNumber())
|
||||
.betweenParams("u", SysUser::getCreateTime, user.getParams(), "beginTime", "endTime")
|
||||
.inIfNotEmpty("u", SysUser::getDeptId, deptIds)
|
||||
.orderByAsc("u", SysUser::getUserId)
|
||||
.build();
|
||||
return this.selectJoinList(SysUserExportVo.class, wrapper);
|
||||
}
|
||||
|
||||
@@ -172,16 +169,16 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo>, MPJBa
|
||||
* @return 用户角色关联查询包装器
|
||||
*/
|
||||
default MPJLambdaWrapper<SysUser> buildUserRoleJoinWrapper(SysUserBo user) {
|
||||
return JoinWrappers.lambda("u", SysUser.class)
|
||||
return QueryBuilder.lambdaJoin("u", SysUser.class)
|
||||
.distinct()
|
||||
.selectAll(SysUser.class)
|
||||
.leftJoin(SysDept.class, "d", SysDept::getDeptId, SysUser::getDeptId)
|
||||
.leftJoin(SysUserRole.class, "sur", SysUserRole::getUserId, SysUser::getUserId)
|
||||
.leftJoin(SysRole.class, "r", SysRole::getRoleId, SysUserRole::getRoleId)
|
||||
.eq("u", SysUser::getDelFlag, SystemConstants.NORMAL)
|
||||
.like(StringUtils.isNotBlank(user.getUserName()), "u", SysUser::getUserName, user.getUserName())
|
||||
.eq(StringUtils.isNotBlank(user.getStatus()), "u", SysUser::getStatus, user.getStatus())
|
||||
.like(StringUtils.isNotBlank(user.getPhoneNumber()), "u", SysUser::getPhoneNumber, user.getPhoneNumber());
|
||||
.likeIfText("u", SysUser::getUserName, user.getUserName())
|
||||
.eqIfText("u", SysUser::getStatus, user.getStatus())
|
||||
.likeIfText("u", SysUser::getPhoneNumber, user.getPhoneNumber())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
package org.dromara.workflow.mapper;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.common.mybatis.core.query.QueryBuilder;
|
||||
import org.dromara.warm.flow.core.enums.NodeType;
|
||||
import org.dromara.warm.flow.orm.entity.FlowDefinition;
|
||||
import org.dromara.warm.flow.orm.entity.FlowHisTask;
|
||||
@@ -19,8 +16,6 @@ import org.dromara.workflow.domain.vo.FlowHisTaskVo;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.workflow.common.constant.FlowConstant.NOT_DELETED;
|
||||
|
||||
/**
|
||||
* 任务信息Mapper接口
|
||||
*
|
||||
@@ -31,55 +26,35 @@ public interface FlwHisTaskMapper extends BaseMapperPlus<FlowHisTask, FlowHisTas
|
||||
|
||||
default Page<FlowHisTaskVo> getListFinishTask(Page<FlowHisTaskVo> page, FlowTaskBo bo, List<String> categoryIds, String userId) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
MPJLambdaWrapper<FlowHisTask> wrapper = JoinWrappers.lambda("a", FlowHisTask.class)
|
||||
.selectAs(FlowHisTask::getId, FlowHisTaskVo::getId)
|
||||
.selectAs(FlowHisTask::getNodeCode, FlowHisTaskVo::getNodeCode)
|
||||
.selectAs(FlowHisTask::getNodeName, FlowHisTaskVo::getNodeName)
|
||||
.selectAs(FlowHisTask::getCooperateType, FlowHisTaskVo::getCooperateType)
|
||||
.selectAs(FlowHisTask::getApprover, FlowHisTaskVo::getApprover)
|
||||
.selectAs(FlowHisTask::getCollaborator, FlowHisTaskVo::getCollaborator)
|
||||
.selectAs(FlowHisTask::getNodeType, FlowHisTaskVo::getNodeType)
|
||||
.selectAs(FlowHisTask::getTargetNodeCode, FlowHisTaskVo::getTargetNodeCode)
|
||||
.selectAs(FlowHisTask::getTargetNodeName, FlowHisTaskVo::getTargetNodeName)
|
||||
.selectAs(FlowHisTask::getDefinitionId, FlowHisTaskVo::getDefinitionId)
|
||||
.selectAs(FlowHisTask::getInstanceId, FlowHisTaskVo::getInstanceId)
|
||||
return QueryBuilder.lambdaJoin("a", FlowHisTask.class)
|
||||
.select(FlowHisTask::getId, FlowHisTask::getNodeCode, FlowHisTask::getNodeName,
|
||||
FlowHisTask::getCooperateType, FlowHisTask::getApprover, FlowHisTask::getCollaborator,
|
||||
FlowHisTask::getNodeType, FlowHisTask::getTargetNodeCode, FlowHisTask::getTargetNodeName,
|
||||
FlowHisTask::getDefinitionId, FlowHisTask::getInstanceId)
|
||||
.selectAs(FlowHisTask::getFlowStatus, FlowHisTaskVo::getFlowTaskStatus)
|
||||
.selectAs(FlowHisTask::getMessage, FlowHisTaskVo::getMessage)
|
||||
.selectAs(FlowHisTask::getExt, FlowHisTaskVo::getExt)
|
||||
.selectAs(FlowHisTask::getCreateTime, FlowHisTaskVo::getCreateTime)
|
||||
.selectAs(FlowHisTask::getUpdateTime, FlowHisTaskVo::getUpdateTime)
|
||||
.selectAs(FlowHisTask::getFormCustom, FlowHisTaskVo::getFormCustom)
|
||||
.selectAs(FlowHisTask::getFormPath, FlowHisTaskVo::getFormPath)
|
||||
.selectAs("b", FlowInstance::getFlowStatus, FlowHisTaskVo::getFlowStatus)
|
||||
.selectAs("b", FlowInstance::getBusinessId, FlowHisTaskVo::getBusinessId)
|
||||
.selectAs("b", FlowInstance::getCreateBy, FlowHisTaskVo::getCreateBy)
|
||||
.selectAs("c", FlowDefinition::getFlowName, FlowHisTaskVo::getFlowName)
|
||||
.selectAs("c", FlowDefinition::getFlowCode, FlowHisTaskVo::getFlowCode)
|
||||
.selectAs("c", FlowDefinition::getCategory, FlowHisTaskVo::getCategory)
|
||||
.selectAs("c", FlowDefinition::getVersion, FlowHisTaskVo::getVersion)
|
||||
.selectAs("biz", FlowInstanceBizExt::getBusinessCode, FlowHisTaskVo::getBusinessCode)
|
||||
.selectAs("biz", FlowInstanceBizExt::getBusinessTitle, FlowHisTaskVo::getBusinessTitle)
|
||||
.select(FlowHisTask::getMessage, FlowHisTask::getExt, FlowHisTask::getCreateTime,
|
||||
FlowHisTask::getUpdateTime, FlowHisTask::getFormCustom, FlowHisTask::getFormPath)
|
||||
.select("b", FlowInstance::getFlowStatus, FlowInstance::getBusinessId, FlowInstance::getCreateBy)
|
||||
.select("c", FlowDefinition::getFlowName, FlowDefinition::getFlowCode, FlowDefinition::getCategory,
|
||||
FlowDefinition::getVersion)
|
||||
.select("biz", FlowInstanceBizExt::getBusinessCode, FlowInstanceBizExt::getBusinessTitle)
|
||||
.leftJoin(FlowInstance.class, "b", FlowInstance::getId, FlowHisTask::getInstanceId)
|
||||
.leftJoin(FlowDefinition.class, "c", FlowDefinition::getId, FlowHisTask::getDefinitionId)
|
||||
.leftJoin(FlowInstanceBizExt.class, "biz", FlowInstanceBizExt::getInstanceId, FlowInstance::getId)
|
||||
.eq("a", FlowHisTask::getDelFlag, NOT_DELETED)
|
||||
.eq("b", FlowInstance::getDelFlag, NOT_DELETED)
|
||||
.eq("c", FlowDefinition::getDelFlag, NOT_DELETED)
|
||||
.in("a", FlowHisTask::getNodeType, List.of("1", "3", "4"))
|
||||
.ne("a", FlowHisTask::getFlowStatus, TaskStatusEnum.COPY.getStatus())
|
||||
.like(StringUtils.isNotBlank(bo.getNodeName()), "a", FlowHisTask::getNodeName, bo.getNodeName())
|
||||
.like(StringUtils.isNotBlank(bo.getFlowName()), "c", FlowDefinition::getFlowName, bo.getFlowName())
|
||||
.like(StringUtils.isNotBlank(bo.getFlowCode()), "c", FlowDefinition::getFlowCode, bo.getFlowCode())
|
||||
.like(StringUtils.isNotBlank(bo.getFlowStatus()), "b", FlowInstance::getFlowStatus, bo.getFlowStatus())
|
||||
.in(CollUtil.isNotEmpty(bo.getCreateByIds()), "b", FlowInstance::getCreateBy, bo.getCreateByIds())
|
||||
.in(CollUtil.isNotEmpty(categoryIds), "c", FlowDefinition::getCategory, categoryIds)
|
||||
.between(params.get("beginTime") != null && params.get("endTime") != null,
|
||||
"a", FlowHisTask::getCreateTime, params.get("beginTime"), params.get("endTime"))
|
||||
.eq(StringUtils.isNotBlank(userId), "a", FlowHisTask::getNodeType, NodeType.BETWEEN.getKey())
|
||||
.eq(StringUtils.isNotBlank(userId), "a", FlowHisTask::getApprover, userId)
|
||||
.likeIfText("a", FlowHisTask::getNodeName, bo.getNodeName())
|
||||
.likeIfText("c", FlowDefinition::getFlowName, bo.getFlowName())
|
||||
.likeIfText("c", FlowDefinition::getFlowCode, bo.getFlowCode())
|
||||
.likeIfText("b", FlowInstance::getFlowStatus, bo.getFlowStatus())
|
||||
.inIfNotEmpty("b", FlowInstance::getCreateBy, bo.getCreateByIds())
|
||||
.inIfNotEmpty("c", FlowDefinition::getCategory, categoryIds)
|
||||
.betweenParams("a", FlowHisTask::getCreateTime, params, "beginTime", "endTime")
|
||||
.eq(userId != null && !userId.isBlank(), "a", FlowHisTask::getNodeType, NodeType.BETWEEN.getKey())
|
||||
.eqIfText("a", FlowHisTask::getApprover, userId)
|
||||
.orderByDesc("a", FlowHisTask::getCreateTime)
|
||||
.orderByDesc("a", FlowHisTask::getUpdateTime);
|
||||
return wrapper.page(page, FlowHisTaskVo.class);
|
||||
.orderByDesc("a", FlowHisTask::getUpdateTime)
|
||||
.page(page, FlowHisTaskVo.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
package org.dromara.workflow.mapper;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.dromara.common.core.enums.BusinessStatusEnum;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.common.mybatis.core.query.QueryBuilder;
|
||||
import org.dromara.warm.flow.core.enums.NodeType;
|
||||
import org.dromara.warm.flow.orm.entity.*;
|
||||
import org.dromara.workflow.domain.FlowInstanceBizExt;
|
||||
@@ -17,8 +14,6 @@ import org.dromara.workflow.domain.vo.FlowTaskVo;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.workflow.common.constant.FlowConstant.NOT_DELETED;
|
||||
|
||||
/**
|
||||
* 任务信息Mapper接口
|
||||
*
|
||||
@@ -29,92 +24,62 @@ public interface FlwTaskMapper extends BaseMapperPlus<FlowTask, FlowTaskVo>, MPJ
|
||||
|
||||
default Page<FlowTaskVo> getListRunTask(Page<FlowTaskVo> page, FlowTaskBo bo, List<String> categoryIds, String userId) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
MPJLambdaWrapper<FlowTask> wrapper = JoinWrappers.lambda("t", FlowTask.class)
|
||||
return QueryBuilder.lambdaJoin("t", FlowTask.class)
|
||||
.distinct()
|
||||
.selectAs(FlowTask::getId, FlowTaskVo::getId)
|
||||
.selectAs(FlowTask::getNodeCode, FlowTaskVo::getNodeCode)
|
||||
.selectAs(FlowTask::getNodeName, FlowTaskVo::getNodeName)
|
||||
.selectAs(FlowTask::getNodeType, FlowTaskVo::getNodeType)
|
||||
.selectAs(FlowTask::getDefinitionId, FlowTaskVo::getDefinitionId)
|
||||
.selectAs(FlowTask::getInstanceId, FlowTaskVo::getInstanceId)
|
||||
.selectAs(FlowTask::getCreateTime, FlowTaskVo::getCreateTime)
|
||||
.selectAs(FlowTask::getUpdateTime, FlowTaskVo::getUpdateTime)
|
||||
.selectAs("i", FlowInstance::getBusinessId, FlowTaskVo::getBusinessId)
|
||||
.selectAs("i", FlowInstance::getFlowStatus, FlowTaskVo::getFlowStatus)
|
||||
.selectAs("i", FlowInstance::getCreateBy, FlowTaskVo::getCreateBy)
|
||||
.selectAs("d", FlowDefinition::getFlowName, FlowTaskVo::getFlowName)
|
||||
.selectAs("d", FlowDefinition::getFlowCode, FlowTaskVo::getFlowCode)
|
||||
.selectAs("d", FlowDefinition::getFormCustom, FlowTaskVo::getFormCustom)
|
||||
.selectAs("d", FlowDefinition::getCategory, FlowTaskVo::getCategory)
|
||||
.selectAs("d", FlowDefinition::getVersion, FlowTaskVo::getVersion)
|
||||
.selectAs("uu", FlowUser::getProcessedBy, FlowTaskVo::getProcessedBy)
|
||||
.selectAs("uu", FlowUser::getType, FlowTaskVo::getType)
|
||||
.selectAs("biz", FlowInstanceBizExt::getBusinessCode, FlowTaskVo::getBusinessCode)
|
||||
.selectAs("biz", FlowInstanceBizExt::getBusinessTitle, FlowTaskVo::getBusinessTitle)
|
||||
.select(FlowTask::getId, FlowTask::getNodeCode, FlowTask::getNodeName, FlowTask::getNodeType,
|
||||
FlowTask::getDefinitionId, FlowTask::getInstanceId, FlowTask::getCreateTime, FlowTask::getUpdateTime)
|
||||
.select("i", FlowInstance::getBusinessId, FlowInstance::getFlowStatus, FlowInstance::getCreateBy)
|
||||
.select("d", FlowDefinition::getFlowName, FlowDefinition::getFlowCode, FlowDefinition::getFormCustom,
|
||||
FlowDefinition::getCategory, FlowDefinition::getVersion)
|
||||
.select("uu", FlowUser::getProcessedBy, FlowUser::getType)
|
||||
.select("biz", FlowInstanceBizExt::getBusinessCode, FlowInstanceBizExt::getBusinessTitle)
|
||||
.selectAs("COALESCE(NULLIF(TRIM(t.form_path), ''), NULLIF(TRIM(d.form_path), ''))", FlowTaskVo::getFormPath)
|
||||
.leftJoin(FlowUser.class, "uu", FlowUser::getAssociated, FlowTask::getId)
|
||||
.leftJoin(FlowDefinition.class, "d", FlowDefinition::getId, FlowTask::getDefinitionId)
|
||||
.leftJoin(FlowInstance.class, "i", FlowInstance::getId, FlowTask::getInstanceId)
|
||||
.leftJoin(FlowInstanceBizExt.class, "biz", FlowInstanceBizExt::getInstanceId, FlowInstance::getId)
|
||||
.eq("t", FlowTask::getNodeType, NodeType.BETWEEN.getKey())
|
||||
.eq("t", FlowTask::getDelFlag, NOT_DELETED)
|
||||
.eq("uu", FlowUser::getDelFlag, NOT_DELETED)
|
||||
.in("uu", FlowUser::getType, List.of("1", "2", "3"))
|
||||
.like(StringUtils.isNotBlank(bo.getNodeName()), "t", FlowTask::getNodeName, bo.getNodeName())
|
||||
.like(StringUtils.isNotBlank(bo.getFlowName()), "d", FlowDefinition::getFlowName, bo.getFlowName())
|
||||
.like(StringUtils.isNotBlank(bo.getFlowCode()), "d", FlowDefinition::getFlowCode, bo.getFlowCode())
|
||||
.like(StringUtils.isNotBlank(bo.getFlowStatus()), "i", FlowInstance::getFlowStatus, bo.getFlowStatus())
|
||||
.in(CollUtil.isNotEmpty(bo.getCreateByIds()), "i", FlowInstance::getCreateBy, bo.getCreateByIds())
|
||||
.in(CollUtil.isNotEmpty(categoryIds), "d", FlowDefinition::getCategory, categoryIds)
|
||||
.between(params.get("beginTime") != null && params.get("endTime") != null,
|
||||
"t", FlowTask::getCreateTime, params.get("beginTime"), params.get("endTime"))
|
||||
.eq(StringUtils.isNotBlank(userId), "uu", FlowUser::getProcessedBy, userId)
|
||||
.eq(StringUtils.isNotBlank(userId), "i", FlowInstance::getFlowStatus, BusinessStatusEnum.WAITING.getStatus())
|
||||
.likeIfText("t", FlowTask::getNodeName, bo.getNodeName())
|
||||
.likeIfText("d", FlowDefinition::getFlowName, bo.getFlowName())
|
||||
.likeIfText("d", FlowDefinition::getFlowCode, bo.getFlowCode())
|
||||
.likeIfText("i", FlowInstance::getFlowStatus, bo.getFlowStatus())
|
||||
.inIfNotEmpty("i", FlowInstance::getCreateBy, bo.getCreateByIds())
|
||||
.inIfNotEmpty("d", FlowDefinition::getCategory, categoryIds)
|
||||
.betweenParams("t", FlowTask::getCreateTime, params, "beginTime", "endTime")
|
||||
.eqIfText("uu", FlowUser::getProcessedBy, userId)
|
||||
.eq(userId != null && !userId.isBlank(), "i", FlowInstance::getFlowStatus, BusinessStatusEnum.WAITING.getStatus())
|
||||
.orderByDesc("t", FlowTask::getCreateTime)
|
||||
.orderByDesc("t", FlowTask::getUpdateTime);
|
||||
return wrapper.page(page, FlowTaskVo.class);
|
||||
.orderByDesc("t", FlowTask::getUpdateTime)
|
||||
.page(page, FlowTaskVo.class);
|
||||
}
|
||||
|
||||
default Page<FlowTaskVo> getTaskCopyByPage(Page<FlowTaskVo> page, FlowTaskBo bo, List<String> categoryIds, String userId) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
MPJLambdaWrapper<FlowUser> wrapper = JoinWrappers.lambda("a", FlowUser.class)
|
||||
.selectAs("b", FlowHisTask::getId, FlowTaskVo::getId)
|
||||
.selectAs("b", FlowHisTask::getUpdateTime, FlowTaskVo::getUpdateTime)
|
||||
.selectAs("c", FlowInstance::getBusinessId, FlowTaskVo::getBusinessId)
|
||||
.selectAs("c", FlowInstance::getFlowStatus, FlowTaskVo::getFlowStatus)
|
||||
.selectAs("c", FlowInstance::getCreateBy, FlowTaskVo::getCreateBy)
|
||||
.selectAs(FlowUser::getProcessedBy, FlowTaskVo::getProcessedBy)
|
||||
.selectAs(FlowUser::getCreateTime, FlowTaskVo::getCreateTime)
|
||||
.selectAs("b", FlowHisTask::getFormCustom, FlowTaskVo::getFormCustom)
|
||||
.selectAs("b", FlowHisTask::getFormPath, FlowTaskVo::getFormPath)
|
||||
.selectAs("b", FlowHisTask::getNodeName, FlowTaskVo::getNodeName)
|
||||
.selectAs("b", FlowHisTask::getNodeCode, FlowTaskVo::getNodeCode)
|
||||
.selectAs("d", FlowDefinition::getFlowName, FlowTaskVo::getFlowName)
|
||||
.selectAs("d", FlowDefinition::getFlowCode, FlowTaskVo::getFlowCode)
|
||||
.selectAs("d", FlowDefinition::getCategory, FlowTaskVo::getCategory)
|
||||
.selectAs("d", FlowDefinition::getVersion, FlowTaskVo::getVersion)
|
||||
.selectAs("biz", FlowInstanceBizExt::getBusinessCode, FlowTaskVo::getBusinessCode)
|
||||
.selectAs("biz", FlowInstanceBizExt::getBusinessTitle, FlowTaskVo::getBusinessTitle)
|
||||
return QueryBuilder.lambdaJoin("a", FlowUser.class)
|
||||
.select(FlowUser::getProcessedBy, FlowUser::getCreateTime)
|
||||
.select("b", FlowHisTask::getId, FlowHisTask::getUpdateTime, FlowHisTask::getFormCustom,
|
||||
FlowHisTask::getFormPath, FlowHisTask::getNodeName, FlowHisTask::getNodeCode)
|
||||
.select("c", FlowInstance::getBusinessId, FlowInstance::getFlowStatus, FlowInstance::getCreateBy)
|
||||
.select("d", FlowDefinition::getFlowName, FlowDefinition::getFlowCode, FlowDefinition::getCategory,
|
||||
FlowDefinition::getVersion)
|
||||
.select("biz", FlowInstanceBizExt::getBusinessCode, FlowInstanceBizExt::getBusinessTitle)
|
||||
.leftJoin(FlowHisTask.class, "b", FlowHisTask::getTaskId, FlowUser::getAssociated)
|
||||
.leftJoin(FlowInstance.class, "c", FlowInstance::getId, FlowHisTask::getInstanceId)
|
||||
.leftJoin(FlowDefinition.class, "d", FlowDefinition::getId, FlowInstance::getDefinitionId)
|
||||
.leftJoin(FlowInstanceBizExt.class, "biz", FlowInstanceBizExt::getInstanceId, FlowInstance::getId)
|
||||
.eq("a", FlowUser::getType, "4")
|
||||
.eq("a", FlowUser::getDelFlag, NOT_DELETED)
|
||||
.eq("b", FlowHisTask::getDelFlag, NOT_DELETED)
|
||||
.eq("d", FlowDefinition::getDelFlag, NOT_DELETED)
|
||||
.like(StringUtils.isNotBlank(bo.getNodeName()), "b", FlowHisTask::getNodeName, bo.getNodeName())
|
||||
.like(StringUtils.isNotBlank(bo.getFlowName()), "d", FlowDefinition::getFlowName, bo.getFlowName())
|
||||
.like(StringUtils.isNotBlank(bo.getFlowCode()), "d", FlowDefinition::getFlowCode, bo.getFlowCode())
|
||||
.like(StringUtils.isNotBlank(bo.getFlowStatus()), "c", FlowInstance::getFlowStatus, bo.getFlowStatus())
|
||||
.in(CollUtil.isNotEmpty(bo.getCreateByIds()), "c", FlowInstance::getCreateBy, bo.getCreateByIds())
|
||||
.in(CollUtil.isNotEmpty(categoryIds), "d", FlowDefinition::getCategory, categoryIds)
|
||||
.between(params.get("beginTime") != null && params.get("endTime") != null,
|
||||
"a", FlowUser::getCreateTime, params.get("beginTime"), params.get("endTime"))
|
||||
.eq(StringUtils.isNotBlank(userId), "a", FlowUser::getProcessedBy, userId)
|
||||
.likeIfText("b", FlowHisTask::getNodeName, bo.getNodeName())
|
||||
.likeIfText("d", FlowDefinition::getFlowName, bo.getFlowName())
|
||||
.likeIfText("d", FlowDefinition::getFlowCode, bo.getFlowCode())
|
||||
.likeIfText("c", FlowInstance::getFlowStatus, bo.getFlowStatus())
|
||||
.inIfNotEmpty("c", FlowInstance::getCreateBy, bo.getCreateByIds())
|
||||
.inIfNotEmpty("d", FlowDefinition::getCategory, categoryIds)
|
||||
.betweenParams("a", FlowUser::getCreateTime, params, "beginTime", "endTime")
|
||||
.eqIfText("a", FlowUser::getProcessedBy, userId)
|
||||
.orderByDesc("a", FlowUser::getCreateTime)
|
||||
.orderByDesc("b", FlowHisTask::getUpdateTime);
|
||||
return wrapper.page(page, FlowTaskVo.class);
|
||||
.orderByDesc("b", FlowHisTask::getUpdateTime)
|
||||
.page(page, FlowTaskVo.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@ import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -16,6 +15,7 @@ import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.StreamUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.query.LambdaJoinQueryBuilder;
|
||||
import org.dromara.common.mybatis.core.query.QueryBuilder;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.warm.flow.core.FlowEngine;
|
||||
@@ -138,43 +138,32 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
||||
* @return 查询条件构造方法
|
||||
*/
|
||||
private MPJLambdaWrapper<FlowInstance> buildQueryWrapper(FlowInstanceBo flowInstanceBo) {
|
||||
MPJLambdaWrapper<FlowInstance> queryWrapper = JoinWrappers.lambda("fi", FlowInstance.class)
|
||||
.selectAs(FlowInstance::getId, FlowInstanceVo::getId)
|
||||
.selectAs(FlowInstance::getCreateTime, FlowInstanceVo::getCreateTime)
|
||||
.selectAs(FlowInstance::getUpdateTime, FlowInstanceVo::getUpdateTime)
|
||||
.selectAs(FlowInstance::getDelFlag, FlowInstanceVo::getDelFlag)
|
||||
.selectAs(FlowInstance::getDefinitionId, FlowInstanceVo::getDefinitionId)
|
||||
.selectAs(FlowInstance::getBusinessId, FlowInstanceVo::getBusinessId)
|
||||
.selectAs(FlowInstance::getNodeType, FlowInstanceVo::getNodeType)
|
||||
.selectAs(FlowInstance::getNodeCode, FlowInstanceVo::getNodeCode)
|
||||
.selectAs(FlowInstance::getNodeName, FlowInstanceVo::getNodeName)
|
||||
.selectAs(FlowInstance::getVariable, FlowInstanceVo::getVariable)
|
||||
.selectAs(FlowInstance::getFlowStatus, FlowInstanceVo::getFlowStatus)
|
||||
.selectAs(FlowInstance::getActivityStatus, FlowInstanceVo::getActivityStatus)
|
||||
.selectAs(FlowInstance::getCreateBy, FlowInstanceVo::getCreateBy)
|
||||
.selectAs(FlowInstance::getExt, FlowInstanceVo::getExt)
|
||||
.selectAs(org.dromara.warm.flow.orm.entity.FlowDefinition::getFlowName, FlowInstanceVo::getFlowName)
|
||||
.selectAs(org.dromara.warm.flow.orm.entity.FlowDefinition::getFlowCode, FlowInstanceVo::getFlowCode)
|
||||
.selectAs(org.dromara.warm.flow.orm.entity.FlowDefinition::getVersion, FlowInstanceVo::getVersion)
|
||||
.selectAs(org.dromara.warm.flow.orm.entity.FlowDefinition::getFormCustom, FlowInstanceVo::getFormCustom)
|
||||
.selectAs(org.dromara.warm.flow.orm.entity.FlowDefinition::getFormPath, FlowInstanceVo::getFormPath)
|
||||
.selectAs(org.dromara.warm.flow.orm.entity.FlowDefinition::getCategory, FlowInstanceVo::getCategory)
|
||||
.selectAs(FlowInstanceBizExt::getBusinessCode, FlowInstanceVo::getBusinessCode)
|
||||
.selectAs(FlowInstanceBizExt::getBusinessTitle, FlowInstanceVo::getBusinessTitle)
|
||||
LambdaJoinQueryBuilder<FlowInstance> queryBuilder = QueryBuilder.lambdaJoin("fi", FlowInstance.class)
|
||||
.select(FlowInstance::getId, FlowInstance::getCreateTime, FlowInstance::getUpdateTime,
|
||||
FlowInstance::getDelFlag, FlowInstance::getDefinitionId, FlowInstance::getBusinessId,
|
||||
FlowInstance::getNodeType, FlowInstance::getNodeCode, FlowInstance::getNodeName,
|
||||
FlowInstance::getVariable, FlowInstance::getFlowStatus, FlowInstance::getActivityStatus,
|
||||
FlowInstance::getCreateBy, FlowInstance::getExt)
|
||||
.select("fd", org.dromara.warm.flow.orm.entity.FlowDefinition::getFlowName,
|
||||
org.dromara.warm.flow.orm.entity.FlowDefinition::getFlowCode,
|
||||
org.dromara.warm.flow.orm.entity.FlowDefinition::getVersion,
|
||||
org.dromara.warm.flow.orm.entity.FlowDefinition::getFormCustom,
|
||||
org.dromara.warm.flow.orm.entity.FlowDefinition::getFormPath,
|
||||
org.dromara.warm.flow.orm.entity.FlowDefinition::getCategory)
|
||||
.select("biz", FlowInstanceBizExt::getBusinessCode, FlowInstanceBizExt::getBusinessTitle)
|
||||
.leftJoin(org.dromara.warm.flow.orm.entity.FlowDefinition.class, "fd", org.dromara.warm.flow.orm.entity.FlowDefinition::getId, FlowInstance::getDefinitionId)
|
||||
.leftJoin(FlowInstanceBizExt.class, "biz", FlowInstanceBizExt::getInstanceId, FlowInstance::getId);
|
||||
queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getNodeName()), "fi", FlowInstance::getNodeName, flowInstanceBo.getNodeName());
|
||||
queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getFlowName()), "fd", org.dromara.warm.flow.orm.entity.FlowDefinition::getFlowName, flowInstanceBo.getFlowName());
|
||||
queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getFlowCode()), "fd", org.dromara.warm.flow.orm.entity.FlowDefinition::getFlowCode, flowInstanceBo.getFlowCode());
|
||||
queryBuilder.likeIfText("fi", FlowInstance::getNodeName, flowInstanceBo.getNodeName());
|
||||
queryBuilder.likeIfText("fd", org.dromara.warm.flow.orm.entity.FlowDefinition::getFlowName, flowInstanceBo.getFlowName());
|
||||
queryBuilder.likeIfText("fd", org.dromara.warm.flow.orm.entity.FlowDefinition::getFlowCode, flowInstanceBo.getFlowCode());
|
||||
if (StringUtils.isNotBlank(flowInstanceBo.getCategory())) {
|
||||
List<Long> categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowInstanceBo.getCategory()));
|
||||
queryWrapper.in(CollUtil.isNotEmpty(categoryIds), "fd", org.dromara.warm.flow.orm.entity.FlowDefinition::getCategory, StreamUtils.toList(categoryIds, Convert::toStr));
|
||||
queryBuilder.inIfNotEmpty("fd", org.dromara.warm.flow.orm.entity.FlowDefinition::getCategory, StreamUtils.toList(categoryIds, Convert::toStr));
|
||||
}
|
||||
queryWrapper.eq(StringUtils.isNotBlank(flowInstanceBo.getBusinessId()), "fi", FlowInstance::getBusinessId, flowInstanceBo.getBusinessId());
|
||||
queryWrapper.in(CollUtil.isNotEmpty(flowInstanceBo.getCreateByIds()), "fi", FlowInstance::getCreateBy, flowInstanceBo.getCreateByIds());
|
||||
queryWrapper.eq("fi", FlowInstance::getDelFlag, "0");
|
||||
queryWrapper.orderByDesc("fi", FlowInstance::getCreateTime);
|
||||
return queryWrapper;
|
||||
queryBuilder.eqIfText("fi", FlowInstance::getBusinessId, flowInstanceBo.getBusinessId());
|
||||
queryBuilder.inIfNotEmpty("fi", FlowInstance::getCreateBy, flowInstanceBo.getCreateByIds());
|
||||
queryBuilder.orderByDesc("fi", FlowInstance::getCreateTime);
|
||||
return queryBuilder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user