package com.tanpu.community.util; import com.tanpu.community.api.beans.req.page.Page; import com.tanpu.community.api.beans.req.page.Pageable; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; /** * @author: zhoupeng * @email: zhoupeng@wealthgrow.cn */ public class PageUtils { public static <T> Page<T> page(Pageable pageable, List<T> list) { if (CollectionUtils.isEmpty(list)) { if(pageable==null){ return new Page<T>(1,0, (long)list.size(),1, list); } return new Page<T>(pageable, 0L, new ArrayList<>()); } else { if(pageable==null){ return new Page<T>(1,list.size(), (long)list.size(),1, list); } // 记录总数 Integer count = list.size(); // 页数 int pageCount; if (count % pageable.getPageSize() == 0) { pageCount = count / pageable.getPageSize(); } else { pageCount = count / pageable.getPageSize() + 1; } // 开始索引 int fromIndex; // 结束索引 int toIndex; // 防止索引越界 if (Integer.valueOf(0).equals(pageable.getPageNumber())) { pageable.setPageNumber(1); } if (!pageable.getPageNumber().equals(pageCount)) { fromIndex = (pageable.getPageNumber() - 1) * pageable.getPageSize(); toIndex = fromIndex + pageable.getPageSize(); } else { fromIndex = (pageable.getPageNumber() - 1) * pageable.getPageSize(); toIndex = count; } if (pageable.getPageSize() * (pageable.getPageNumber() - 1) >= list.size()) { return new Page<>(pageable, 0L, new ArrayList<>()); } else { Page<T> tPage = new Page<>(pageable, (long) list.size(), new ArrayList<>(list).subList(fromIndex, toIndex)); int totalPage = list.size() / pageable.getPageSize(); if (list.size() % pageable.getPageSize() == 0) { tPage.setTotalPages(totalPage); } else { tPage.setTotalPages(totalPage + 1); } return tPage; } } } public static <T> Page<T> page(Page<String> o, List<T> list) { return new Page<>(o.getPageNum(),o.getPageSize(),o.getTotalSize(),o.getTotalPages(),list); } }