package com.uas.platform.b2b.service;

import java.util.List;

import org.springframework.data.domain.Page;

import com.uas.platform.b2b.model.MakeOrder;
import com.uas.platform.b2b.model.MakeOrderReply;
import com.uas.platform.core.model.PageInfo;

public interface MakeOrderService {

	/**
	 * 批量保存、修改委外加工单
	 * 
	 * @param orders
	 * @return
	 */
	public void saveOrders(List<MakeOrder> orders);

	/**
	 * 分页查找委外加工单据
	 * 
	 * @param pageInfo
	 * @param keyword
	 * @return
	 */
	public Page<MakeOrder> findAllByPageInfo(PageInfo pageInfo, String keyword);

	/**
	 * 获取需要上传到供应商ERP的客户委外订单
	 * 
	 * @return
	 */
	public List<MakeOrder> findNotUploadOrder();

	/**
	 * 平台的委外加工单传到供应商ERP之后，修改平台里面的委外加工单的上传状态
	 * 
	 * @param idArray
	 */
	public void onMakeDownSuccess(String[] idArray);

	/**
	 * 回复单个明细
	 * 
	 * @param reply
	 */
	public MakeOrderReply reply(MakeOrderReply reply);

	/**
	 * 批量回复
	 * 
	 * @param replies
	 */
	public List<MakeOrderReply> reply(List<MakeOrderReply> replies);

	/**
	 * 查找所有待上传到卖家的回复记录
	 * 
	 * @return
	 */
	public List<MakeOrderReply> findNotBackReply();

	/**
	 * 回复记录成功上传到卖家ERP后修改传输状态
	 * 
	 * @return
	 */
	public void onReplyBackSuccess(String[] idArray);

	/**
	 * 查找所有待上传到买家的回复记录
	 * 
	 * @return
	 */
	public List<MakeOrderReply> findNotSendReply();

	/**
	 * 回复记录成功上传到买家ERP后修改传输状态
	 * 
	 * @return
	 */
	public void onReplySendSuccess(String[] idArray);

	/**
	 * 用订单ID查找订单
	 * 
	 * @param id
	 * @return
	 */
	public MakeOrder findById(Long id);

	/**
	 * 打印订单，订单打印此次 +1
	 * 
	 * @param id
	 */
	public void print(Long id);

	/**
	 * 获取未传输的结案、反结案单据
	 * 
	 * @return
	 */
	public List<MakeOrder> findNotSendEnd();

	/**
	 * 结案、反结案委外加工单传输到卖方ERP成功之后，修改加工单的结案传输状态
	 * 
	 * @param ids
	 */
	public void onEndDownSuccess(String[] ids);

}