package com.uas.search.constant.model;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 分页参数
 * 
 * @author suntg
 * @since 2016年8月3日下午9:10:47
 */
public class PageParams implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 页码
	 */
	private int page;

	/**
	 * 页大小
	 */
	private int size;

	/**
	 * 过滤
	 */
	private Map<FilterField, Object> filters;

	/**
	 * 排序
	 */
	private List<Sort> sort;

	public PageParams() {
	}

	/**
	 * @param page
	 *            页码
	 * @param size
	 *            页大小
	 */
	public PageParams(int page, int size) {
		this.page = page;
		this.size = size;
	}

	/**
	 * @return 页码
	 */
	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	/**
	 * @return 页大小
	 */
	public int getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}

	/**
	 * @return 过滤
	 */
	public Map<FilterField, Object> getFilters() {
		return filters;
	}

	public void setFilters(Map<FilterField, Object> filters) {
		this.filters = filters;
	}

	public void filter(FilterField key, Object value) {
		if (this.filters == null) {
			this.filters = new HashMap<FilterField, Object>();
		}
		this.filters.put(key, value);
	}

	public void removeFilter(FilterField key) {
		if (this.filters != null) {
			this.filters.remove(key);
		}
	}

	/**
	 * @return 排序
	 */
	public List<Sort> getSort() {
		return sort;
	}

	public void setSort(List<Sort> sort) {
		this.sort = sort;
	}

	@Override
	public String toString() {
		return "PageParams [page=" + page + ", size=" + size + ", filters=" + filters + ", sort=" + sort + "]";
	}

	/**
	 * 过滤的字段
	 * 
	 * @author sunyj
	 * @since 2017年7月8日 下午5:00:55
	 */
	public enum FilterField {

		// 器件搜索
		/**
		 * 类目id
		 */
		COMPONENT_KINDID,

		/**
		 * 品牌id
		 */
		COMPONENT_BRANDID,

		/**
		 * 属性信息
		 */
		COMPONENT_PROPERTIES,

		/**
		 * 有库存
		 */
		COMPONENT_HAS_RESERVE,

		/**
		 * 有样品
		 */
		COMPONENT_HAS_SAMPLE,

		/**
		 * 有现货
		 */
		COMPONENT_HAS_ORIGINAL,

		/**
		 * 有呆滞库存
		 */
		COMPONENT_HAS_INACTION_STOCK,

		// 批次搜索
		/**
		 * 类目id
		 */
		GOODS_KINDID,

		/**
		 * 品牌id
		 */
		GOODS_BRANDID,

		/**
		 * 货源
		 */
		GOODS_STORE_TYPE,

		/**
		 * 货币
		 */
		GOODS_CRNAME,

		/**
		 * 状态
		 */
		GOODS_STATUS,

		/**
		 * 价格区间过滤：人民币最低价格
		 */
		GOODS_MINPRICERMB,

		/**
		 * 价格区间过滤：人民币最高价格
		 */
		GOODS_MAXPRICERMB,

		/**
		 * 价格区间过滤：美元最低价格
		 */
		GOODS_MINPRICEUSD,

		/**
		 * 价格区间过滤：美元最高价格
		 */
		GOODS_MAXPRICEUSD,

		// 以下字段用于单据搜索

		/**
		 * 订单状态
		 */
		ORDER_STATUS,

		/**
		 * 买方个人uu号
		 */
		ORDER_BUYER_UU,

		/**
		 * 买方企业UU号
		 */
		ORDER_BUYER_EN_UU,

		/**
		 * 卖方企业UU号
		 */
		ORDER_SELLER_EN_UU,

		/**
		 * 单据搜索时，若限定时间范围，可以键值对的形式传递参数，该键代表最小（远）时间
		 */
		ORDER_MIN_TIME,

		/**
		 * 单据搜索时，若限定时间范围，可以键值对的形式传递参数，该键代表最大（近）时间
		 */
		ORDER_MAX_TIME;
	}
}
