import com.baomidou.mybatisplus.plugins.Page;
import com.sun.collierycommon.domain.PageParamDTO;
import com.sun.collierycommon.domain.PageResultDTO;
import java.util.List;
/**
* @Description:分页工具类
* @Author: sunboqiang
* @Company: 洛阳图联科技有限公司
* @Date: 2019/10/31 9:13
*/
public class SmartPaginationUtil {
public static <T> PageResultDTO<T> convert2PageInfoDTO(Page<T> page) {
PageResultDTO<T> result = new PageResultDTO<>();
result.setPageNum(page.getCurrent());
result.setPageSize(page.getSize());
result.setTotal(Long.valueOf(page.getTotal()));
result.setPages(page.getPages());
result.setList(page.getRecords());
return result;
}
public static <T> Page<T> convert2PageQueryInfo(PageParamDTO baseDTO) {
Page<T> page = new Page<>();
Boolean sort = baseDTO.getSort();
if (null != sort) {
page.setAsc(sort);
}
if (null != baseDTO.getSortField()){
page.setOrderByField(baseDTO.getSortField());
}
page.setCurrent(baseDTO.getPageNum());
page.setSize(baseDTO.getPageSize());
if (null != baseDTO.getSearchCount()) {
page.setSearchCount(baseDTO.getSearchCount());
}
return page;
}
/**
* @Description:转换为 PageResultDTO 对象
* @Author: sunboqiang
* @Date: 2019/10/31 9:40
*/
public static <T, E> PageResultDTO<T> convert2PageInfoDTO(Page page, List<E> sourceList, Class<T> targetClazz) {
PageResultDTO pageResultDTO = setPage(page);
List<T> records = SmartBeanUtil.copyList(sourceList, targetClazz);
page.setRecords(records);
pageResultDTO.setList(records);
return pageResultDTO;
}
/**
* 转换为 PageResultDTO 对象
*/
public static <T, E> PageResultDTO<T> convert2PageInfoDTO(Page page, List<E> sourceList) {
PageResultDTO pageResultDTO = setPage(page);
page.setRecords(sourceList);
pageResultDTO.setList(sourceList);
return pageResultDTO;
}
private static PageResultDTO setPage(Page page) {
PageResultDTO pageResultDTO = new PageResultDTO();
pageResultDTO.setPageNum(page.getCurrent());
pageResultDTO.setPageSize(page.getSize());
pageResultDTO.setTotal(Long.valueOf(page.getTotal()));
pageResultDTO.setPages(page.getPages());
return pageResultDTO;
}
}
serve层中分页方法的使用
public ResponseDTO<PageResultDTO<ProductionDigProgressListVO>> list(ProductionDigProgressParamDTO param,SystemUserVo userVo){
Page page= SmartPaginationUtil.convert2PageQueryInfo(param);
EntityWrapper<ProductionDigProgressEntity> wrapper= new EntityWrapper<>();
wrapper.eq("deleted", DeletedEnum.NO_DELETED.getValue());
wrapper.eq("company_id", userVo.getCompanyId());
wrapper.like(StringUtils.isNotBlank(param.getName()),"name",param.getName());
wrapper.like(StringUtils.isNotBlank(param.getTeamName()),"team_name",param.getTeamName());
List<ProductionDigProgressListVO> pageList= Lists.newArrayList();
List<ProductionDigProgressEntity> list= productionDigProgressDao.selectPage(page,wrapper);
if(CollectionUtils.isNotEmpty(list)){
pageList=SmartBeanUtil.copyList(list,ProductionDigProgressListVO.class);
}
return ResponseDTO.succData(SmartPaginationUtil.convert2PageInfoDTO(page,pageList));
}