Skip to content
CuiPage.java 3.87 KiB
Newer Older
杨郁彬's avatar
杨郁彬 committed
package com.cesgroup.bdc.util;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;

import java.util.Collections;
import java.util.List;

/**
 * cui简单分页模型
 *
 * @author: shen.shaohua
 * @since: 2019/7/15 13:58
 */
public class CuiPage<T> implements IPage<T> {
	private static final long serialVersionUID = 3680640738282033255L;

	/**
	 * 查询数据列表
	 */
	private List<T> records = Collections.emptyList();
	/**
	 * 总数
	 */
	private long total = 0;
	/**
	 * 每页显示条数,默认 10
	 */
	private long size = 10;
	/**
	 * 当前页
	 */
	private long current = 1;
	/**
	 * SQL 排序 ASC 数组
	 */
	private String[] ascs;
	/**
	 * SQL 排序 DESC 数组
	 */
	private String[] descs;
	/**
	 * 自动优化 COUNT SQL
	 */
	private boolean optimizeCountSql = true;
	/**
	 * 是否进行 count 查询
	 */
	private boolean isSearchCount = true;

	public CuiPage() {

	}

	/**
	 * 分页构造函数
	 *
	 * @param current 当前页
	 * @param size    每页显示条数
	 */
	public CuiPage(long current, long size) {
		this(current, size, 0);
	}

	public CuiPage(long current, long size, long total) {
		this(current, size, total, true);
	}

	public CuiPage(long current, long size, boolean isSearchCount) {
		this(current, size, 0, isSearchCount);
	}

	public CuiPage(long current, long size, long total, boolean isSearchCount) {
		if (current > 1) {
			this.current = current;
		}
		this.size = size;
		this.total = total;
		this.isSearchCount = isSearchCount;
	}

	/**
	 * P_pageNumber 当前页
	 *
	 * @param current
	 * @return
	 */
	public CuiPage<T> setP_pageNumber(long current) {
		this.current = current;
		return this;
	}

	/**
	 * P_pagesize 每页条数
	 *
	 * @param size
	 * @return
	 */
	public CuiPage<T> setP_pagesize(long size) {
		this.size = size;
		return this;
	}

	/**
	 * 是否存在上一页
	 *
	 * @return true / false
	 */
	public boolean hasPrevious() {
		return this.current > 1;
	}

	/**
	 * 是否存在下一页
	 *
	 * @return true / false
	 */
	public boolean hasNext() {
		return this.current < this.getPages();
	}

	@Override
	public List<T> getRecords() {
		return this.records;
	}

	@Override
	public CuiPage<T> setRecords(List<T> records) {
		this.records = records;
		return this;
	}

	@Override
	public long getTotal() {
		return this.total;
	}

	@Override
	public CuiPage<T> setTotal(long total) {
		this.total = total;
		return this;
	}

	@Override
	public long getSize() {
		return this.size;
	}

	@Override
	public CuiPage<T> setSize(long size) {
		this.size = size;
		return this;
	}

	@Override
	public long getCurrent() {
		return this.current;
	}

	@Override
	public CuiPage<T> setCurrent(long current) {
		this.current = current;
		return this;
	}

	@Override
	public String[] ascs() {
		return ascs;
	}

	public CuiPage<T> setAscs(List<String> ascs) {
		if (CollectionUtils.isNotEmpty(ascs)) {
			this.ascs = ascs.toArray(new String[0]);
		}
		return this;
	}

	/**
	 * 升序
	 *
	 * @param ascs 多个升序字段
	 */
	public CuiPage<T> setAsc(String... ascs) {
		this.ascs = ascs;
		return this;
	}

	@Override
	public String[] descs() {
		return descs;
	}

	public CuiPage<T> setDescs(List<String> descs) {
		if (CollectionUtils.isNotEmpty(descs)) {
			this.descs = descs.toArray(new String[0]);
		}
		return this;
	}

	/**
	 * 降序
	 *
	 * @param descs 多个降序字段
	 */
	public CuiPage<T> setDesc(String... descs) {
		this.descs = descs;
		return this;
	}

	@Override
	public boolean optimizeCountSql() {
		return optimizeCountSql;
	}

	@Override
	public boolean isSearchCount() {
		if (total < 0) {
			return false;
		}
		return isSearchCount;
	}

	public CuiPage<T> setSearchCount(boolean isSearchCount) {
		this.isSearchCount = isSearchCount;
		return this;
	}

	public CuiPage<T> setOptimizeCountSql(boolean optimizeCountSql) {
		this.optimizeCountSql = optimizeCountSql;
		return this;
	}
}