package com.uas.platform.b2b.service;

import com.uas.platform.b2b.erp.model.VendorRecommend;
import com.uas.platform.b2b.model.Product;
import com.uas.platform.b2b.model.Vendor;
import com.uas.platform.b2b.model.VendorContact;
import com.uas.platform.core.model.PageInfo;
import org.springframework.data.domain.Page;
import org.springframework.ui.ModelMap;

import java.util.List;

/**
 * 客户&供应商服务
 * 
 * @author Administrator
 *
 */
public interface VendorService {

	public Page<Vendor> findAllByPageInfo(PageInfo pageInfo);

	public Vendor addVendor(Vendor vendor);

	/**
	 * 查找使用了ERP系统的客户
	 * 
	 * @return
	 */
	public List<Vendor> findMyCustomersUsingErp();

	/**
	 * 查找使用了ERP系统的客户
	 * 
	 * @param custUU
	 *            指定客户ID
	 * @return
	 */
	public List<Vendor> findMyCustomerUsingErp(long custUU);

	/**
	 * 通过id查看供应商详情
	 * 
	 * @param id
	 * @return
	 */
	public Vendor findById(Long id);

	/**
	 * 保存供应商联系人
	 * 
	 * @return
	 */
	public VendorContact saveContact(VendorContact vendor);

    ModelMap getVendorsAndCustomers(Long enUU);

	/**
	 * 获取当前企业推荐供应商
	 *
     * @param enUU 当前企业UU
	 * @param productMatchCondition 物料模糊匹配条件
	 * @param enterpriseMatchCondition 企业搜索匹配条件
	 * @param productCondition 物料精确匹配条件
	 * @param page 页面
	 * @param size 每页条数
	 * @return
	 */
	com.uas.sso.support.Page<VendorRecommend> getVendorRecommend(Long enUU, String productMatchCondition, String enterpriseMatchCondition, int page, int size);

	/**
	 * 获取推荐企业物料列表（匹配到的排前面）
	 * @param page 页数
	 * @param size 每页条数
	 * @param productMatchCondition 列表的物料匹配搜索条件
	 * @param whereCondition where条件（product的筛选条件拼接）
     * @param enUU 当前企业UU
     * @param vendUU 供应商企业UU
	 * @return
	 */
    com.uas.sso.support.Page<Product> getProductsByVendorRecommend(int page, int size, Long enUU, Long vendUU, String productMatchCondition,  String whereCondition);

	/**
	 * 根据条件获取物料型号和品牌值对
	 *
	 * @param field 需要的字段名
	 * @param condition 物料模糊匹配条件
	 * @return 物料型号和品牌值对List
	 */
	List<Product> getProductAssociate(String field, String condition);
}
