From d91c1e51789283d30ae5f3b906c4a8facda808c9 Mon Sep 17 00:00:00 2001 From: zengxiaobo Date: Mon, 13 May 2024 14:08:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9PageUtil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/foundation/util/PageUtils.java | 43 +++++++++++++++++++ .../dao/support/converter/PageConverter.java | 27 ++++-------- 2 files changed, 51 insertions(+), 19 deletions(-) create mode 100644 common-lib/src/main/java/cn/axzo/foundation/util/PageUtils.java diff --git a/common-lib/src/main/java/cn/axzo/foundation/util/PageUtils.java b/common-lib/src/main/java/cn/axzo/foundation/util/PageUtils.java new file mode 100644 index 0000000..4e83038 --- /dev/null +++ b/common-lib/src/main/java/cn/axzo/foundation/util/PageUtils.java @@ -0,0 +1,43 @@ +package cn.axzo.foundation.util; + +import cn.axzo.foundation.page.IPageReq; +import cn.axzo.foundation.page.PageResp; +import com.google.common.collect.Lists; +import org.apache.commons.lang3.BooleanUtils; + +import java.util.List; +import java.util.function.Function; + +public class PageUtils { + + /** + * 将所有的数据通过page接口写入到list. 并返回 + * function中需要参数为新的pageNum, 默认从第一页开始加载. 直到返回的记录行数小于 预期的行数 + */ + public static List drainAll(Function> function) { + return drainAll(function, null); + } + + /** + * 将所有的数据通过page接口写入到list. 并返回 + * function中需要参数为新的pageNum, 默认从第一页开始加载. 直到返回的记录行数小于 预期的行数 + * breaker可以自行决定何时中断,允许为空,为空表示会拉取所有 + */ + public static List drainAll(Function> function, Function, Boolean> breaker) { + List totalData = Lists.newArrayList(); + int pageNum = IPageReq.DEFAULT_PAGE_NUMBER; + while (true) { + PageResp result = function.apply(pageNum); + totalData.addAll(result.getData()); + + if (result.getData().size() < result.getSize()) { + break; + } + if (breaker != null && BooleanUtils.isTrue(breaker.apply(totalData))) { + break; + } + pageNum += 1; + } + return totalData; + } +} diff --git a/dao-support-lib/src/main/java/cn/axzo/foundation/dao/support/converter/PageConverter.java b/dao-support-lib/src/main/java/cn/axzo/foundation/dao/support/converter/PageConverter.java index 3ef1200..4670e18 100644 --- a/dao-support-lib/src/main/java/cn/axzo/foundation/dao/support/converter/PageConverter.java +++ b/dao-support-lib/src/main/java/cn/axzo/foundation/dao/support/converter/PageConverter.java @@ -3,11 +3,10 @@ package cn.axzo.foundation.dao.support.converter; import cn.axzo.foundation.dao.support.mysql.MybatisPlusConverterUtils; import cn.axzo.foundation.page.IPageReq; import cn.axzo.foundation.page.PageResp; +import cn.axzo.foundation.util.PageUtils; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; -import com.google.common.collect.Lists; import lombok.experimental.UtilityClass; -import org.apache.commons.lang3.BooleanUtils; import java.util.List; import java.util.Optional; @@ -88,7 +87,10 @@ public class PageConverter { /** * 将所有的数据通过page接口写入到list. 并返回 * function中需要参数为新的pageNum, 默认从第一页开始加载. 直到返回的记录行数小于 预期的行数 + * + * 建议使用PageUtils.drainAll */ + @Deprecated public static List drainAll(Function> function) { return drainAll(function, null); } @@ -97,24 +99,11 @@ public class PageConverter { * 将所有的数据通过page接口写入到list. 并返回 * function中需要参数为新的pageNum, 默认从第一页开始加载. 直到返回的记录行数小于 预期的行数 * breaker可以自行决定何时中断,允许为空,为空表示会拉取所有 + * + * 建议使用PageUtils.drainAll */ + @Deprecated public static List drainAll(Function> function, Function, Boolean> breaker) { - List totalData = Lists.newArrayList(); - int pageNum = IPageReq.DEFAULT_PAGE_NUMBER; - while (true) { - PageResp result = function.apply(pageNum); - totalData.addAll(result.getData()); - - if (result.getData().size() < result.getSize()) { - break; - } - if (breaker != null && BooleanUtils.isTrue(breaker.apply(totalData))) { - break; - } - pageNum += 1; - } - return totalData; + return PageUtils.drainAll(function, breaker); } - - }