Merge remote-tracking branch 'origin/test'

This commit is contained in:
周敏 2025-02-18 10:15:28 +08:00
commit 8683437d64

View File

@ -1,6 +1,7 @@
package cn.axzo.foundation.util;
import cn.axzo.foundation.page.IPageReq;
import cn.axzo.foundation.page.PageReqV2;
import cn.axzo.foundation.page.PageResp;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.BooleanUtils;
@ -10,6 +11,40 @@ import java.util.function.Function;
public class PageUtils {
/**
* <pre>
* 快捷拉取所有分页数据默认从第一页开始拉取直到返回的记录行数小于 预期的行数
* 分页大小 pageReq.getPageSize()可通过该参数调整
* </pre>
* XXX: 注意判断数据查询的完成条件 当前也页的记录行数 小于 分页大小所以对于会破坏查询条件的请求参数该方法不保证会返回所有数据
*
*
* <pre>
* 示例代码
* import cn.axzo.foundation.util.PageUtils;
* // case 1. nodeUserService定义了以下方法
* PageResp<OrgNodeUserDTO> list(ListOrgNodeUserReq req); // ListOrgNodeUserReq extends PageReqV2
* // 获取所有分页数据
* List<OrgNodeUserDTO> nodeUsers = PageUtil.drainAll(req, nodeUserService::list);
*
* // case 2. nodeUserApi定义了以下方法
* ApiResult<PageResp<OrgNodeUserDTO>> list(ListOrgNodeUserReq req); // ListOrgNodeUserReq extends PageReqV2
* List<OrgNodeUserDTO> nodeUsers = PageUtil.drainAll(req, r -> nodeUserApi.list(r).getData());
* </pre>
*
* @param pageReq
* @param function
* @param <T>
* @param <R>
* @return
*/
public static <T, R extends PageReqV2> List<T> drainAll(R pageReq, Function<R, PageResp<T>> function) {
return PageUtils.drainAll(pageNumber -> {
pageReq.setPage(pageNumber);
return function.apply(pageReq);
});
}
/**
* 将所有的数据通过page接口写入到list. 并返回
* function中需要参数为新的pageNum, 默认从第一页开始加载. 直到返回的记录行数小于 预期的行数