package com.uas.search.console.service;

import com.uas.search.console.model.OrderInvoiceSimpleInfo;
import com.uas.search.console.model.OrderSimpleInfo;
import com.uas.search.console.model.PurchaseInvoiceSimpleInfo;
import com.uas.search.console.model.PurchaseSimpleInfo;
import com.uas.search.model.BaseOrder;
import com.uas.search.model.PageParams;
import com.uas.search.model.SPage;

/**
 * search-console下自用订单搜索接口
 * 
 * @author sunyj
 * @since 2016年10月14日 下午3:16:37
 */
public interface InnerOrderSearchService {

	/**
	 * 根据关键词和其他信息搜索销售单id信息
	 * 
	 * @param keyword
	 *            关键词，可以是：销售单号、买方个人姓名、买方企业名称、卖方企业名称、明细中的单号、器件型号、 器件品牌名称、器件类目名称
	 * @param params
	 *            其他信息，可能带有翻页信息，filter中可以有：订单状态码（List
	 *            <Integer>，多个状态之间取"或"的关系）、买方个人UU号、买方企业UU号、卖方企业UU号、订单日期范围最大值、
	 *            订单日期最小值
	 * @return 符合条件的单据。<br>
	 *         如果关键词命中主表中的信息，结果有主表信息不带从表；<br>
	 *         如果关键词没命中主表信息，命中了从表中的信息，结果有主表带被命中的从表信息；<br>
	 *         如果都没有命中，则不命中。
	 */
	public SPage<BaseOrder> searchOrderIds(String keyword, PageParams params);

	/**
	 * 根据关键词和其他信息搜索销售发货单id信息
	 * 
	 * @param keyword
	 *            关键词，可以是：发货单号、买方个人姓名、买方企业名称、明细中的单号、器件型号、 器件品牌名称、器件类目名称
	 * @param params
	 *            其他信息，可能带有翻页信息，filter中可以有：订单状态码（List
	 *            <Integer>，多个状态之间取"或"的关系）、买方个人UU号、买方企业UU号、订单日期范围最大值、订单日期最小值
	 * @return 符合条件的单据。<br>
	 *         如果关键词命中主表中的信息，结果有主表信息不带从表；<br>
	 *         如果关键词没命中主表信息，命中了从表中的信息，结果有主表带被命中的从表信息；<br>
	 *         如果都没有命中，则不命中。
	 */
	public SPage<BaseOrder> searchOrderInvoiceIds(String keyword, PageParams params);

	/**
	 * 根据关键词和其他信息搜索采购单id信息
	 * 
	 * @param keyword
	 *            模糊搜索关键词，可以是：采购单号、卖方企业名称、明细中的单号、器件型号、器件品牌名称、 器件类目名称
	 * @param params
	 *            关键词，可能带有翻页信息，filter中可以有：订单状态码（List
	 *            <Integer>，多个状态之间取"或"的关系）、卖方企业UU号、订单日期范围最大值、订单日期最小值
	 * @return 符合条件的单据。<br>
	 *         如果关键词命中主表中的信息，结果有主表信息不带从表；<br>
	 *         如果关键词没命中主表信息，命中了从表中的信息，结果有主表带被命中的从表信息；<br>
	 *         如果都没有命中，则不命中。
	 */
	public SPage<BaseOrder> searchPurchaseIds(String keyword, PageParams params);

	/**
	 * 根据关键词和其他信息搜索采购发货单id信息
	 * 
	 * @param keyword
	 *            关键词，可以是：发货单号、卖方企业名称、明细中的单号、器件型号、 器件品牌名称、器件类目名称
	 * @param params
	 *            其他信息，可能带有翻页信息，filter中可以有：订单状态码（List
	 *            <Integer>，多个状态之间取"或"的关系）、卖方企业UU号、订单日期范围最大值、订单日期最小值
	 * @return 符合条件的单据。<br>
	 *         如果关键词命中主表中的信息，结果有主表信息不带从表；<br>
	 *         如果关键词没命中主表信息，命中了从表中的信息，结果有主表带被命中的从表信息；<br>
	 *         如果都没有命中，则不命中。
	 */
	public SPage<BaseOrder> searchPurchaseInvoiceIds(String keyword, PageParams params);

	/**
	 * 根据id获取索引中的销售单数据
	 * 
	 * @param id
	 * @return
	 */
	public OrderSimpleInfo getOrder(Long id);

	/**
	 * 根据id获取索引中的销售发货单数据
	 * 
	 * @param id
	 * @return
	 */
	public OrderInvoiceSimpleInfo getOrderInvoice(Long id);

	/**
	 * 根据id获取索引中的采购单数据
	 * 
	 * @param id
	 * @return
	 */
	public PurchaseSimpleInfo getPurchase(Long id);

	/**
	 * 根据id获取索引中的采购发货单数据
	 * 
	 * @param id
	 * @return
	 */
	public PurchaseInvoiceSimpleInfo getPurchaseInvoice(Long id);

}
