package com.ediagnosis.cdr.context; import com.ediagnosis.cdr.context.values.PageVo; import com.mybatisflex.core.paginate.Page; import org.springframework.beans.BeanUtils; import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; /** * @author monojun * @description 拷贝工具 * @createTime 2025年07月03日 */ public class PageConvertUtils { /** * 拷贝 Page 到 PageVo * * @param source 原始分页数据 * @param function 转换函数 T -> R * @param 源类型 * @param 目标类型 * @return PageInfo */ public static PageVo copyPageInfo(Page source, Function function) { PageVo result = new PageVo<>(); // 拷贝分页信息(排除list) BeanUtils.copyProperties(source, result, "list"); result.setPageNo(source.getPageNumber()); result.setPageSize(source.getPageSize()); result.setTotalCount(source.getTotalRow()); result.setTotalPage(source.getTotalPage()); List collect = source.getRecords().stream() .map(function) .collect(Collectors.toList()); result.setContent(collect); return result; } }