package com.nuvole.common.domain.result; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; import com.nuvole.util.BeanUtil; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map; // @formatter:off /** * .-~~~~~~~~~-._ _.-~~~~~~~~~-. * __.' @Author ~. .~ 代码无Bug `.__ * .'// liu.q \./ (秘籍) \\`. * .'// [916000612@qq.com] | 欲练神功 引刀自宫 \\`. * .'// .-~"""""""~~~~-._ | _,-~~~~"""""""~-. \\`. * .'//.-" 2019-04-09 `-. | .-' 11:35 "-.\\`. * .'//______.============-.. \ | / ..-============.______\\`. *.'______________________________\|/______________________________`. * * @Description : */ // @formatter:on @Data @NoArgsConstructor @ApiModel("列表 返回结果列表封装") public class PageBean implements Serializable { private static final long serialVersionUID = 1000L; @ApiModelProperty("总记录数") private Integer total; //总记录数 @ApiModelProperty("结果集") private List rows; //结果集 @ApiModelProperty("第几页") private int pageNumber; //第几页 @ApiModelProperty("每页记录数") private int pageSize; //每页记录数 @ApiModelProperty("总页数") private int pages; // 总页数 @ApiModelProperty("当前页的数量<=pageSize") private int size; //当前页的数量<=pageSize public PageBean(Object obj) { Map map = BeanUtil.obj2Map(obj); if(map!=null){ this.pageNumber = Convert.toInt(map.get("pageNum")); this.pageSize = Convert.toInt(map.get("pageSize")); this.total = Convert.toInt(map.get("total")); this.pages = Convert.toInt(map.get("pages")); this.rows = obj == null ? new ArrayList<>() : (List)obj; this.size = this.rows.size(); } } public void setData(List list){ if(list != null && list.size() >0){ this.total = list.size(); //分页 if (this.total > 0) { int start = Convert.toInt(NumberUtil.mul(pageNumber-1, pageSize)); int end = Convert.toInt(NumberUtil.mul(pageNumber,pageSize)); if (start <= total) { if (end > total) { end = total; } this.rows = list.subList(start, end); } else { this.rows = new ArrayList<>(); } } } } }