public static <T> PageInfo<T> getPageInfo(int currentPage, int pageSize, List<T> list) {
int total = list.size();
if (total > pageSize) {
int toIndex = pageSize * currentPage;
if (toIndex > total) {
toIndex = total;
}
list = list.subList(pageSize * (currentPage - 1), toIndex);
}
Page<T> page = new Page<>(currentPage, pageSize);
page.addAll(list);
page.setPages((total + pageSize - 1) / pageSize);
page.setTotal(total);
PageInfo<T> pageInfo = new PageInfo<>(page);
return pageInfo;
}
/**
* 手动分页
*
* @param list 分页的结果集
* @param pageNum 当前页页码
* @param pageSize 每页的数量
*/
public PageBaseVo(List<T> list, Integer pageNum, Integer pageSize) {
int total = list.size();
pageNum = pageSize == null || pageNum == 0 ? 1 : pageNum;
pageSize = pageSize == null || pageSize == 0 ? total : pageSize;
int fromIndex = (pageNum - 1) * pageSize;
int toIndex = fromIndex + pageSize;
this.pageNum = pageNum;
this.pageSize = pageSize;
this.total = (long) total;
this.pages = (total - 1) / (pageSize + 1);
if (fromIndex >= total) {
this.size = 0;
this.list = new ArrayList<>();
return;
}
if (toIndex > total) {
toIndex = total;
}
this.size = toIndex - fromIndex;
this.list = list.subList(fromIndex, toIndex);
}
PageInfo<Res> pageInfo = PageBaseVo.getPageInfo(req.getPageNum(),req.getPageSize(),list);
return new PageBaseVo<>(pageInfo, pageInfo.getList());