package com.prolog.rdc.tms.service;

import java.util.List;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.*;
import com.prolog.rdc.tms.model.vo.*;

/**
 * 待理货服务层
 *
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author xyf
 * @since 2022/6/1 12:43
 */
public interface WaitForArrangeGoodsService {

	/**
	 * 运单模式分页查询
	 *
	 * @param vo
	 * @return
	 */
	Page<WaitForArrangeGoodsShipbillPageDTO> queryShipbillTypePage(ShipbillTypeQueryVO vo) throws Exception;

	/**
	 * 运单模式高级查询
	 *
	 * @param vo
	 * @return
	 */
	Page<WaitForArrangeGoodsShipbillPageDTO> advancedQueryShipbillTypePage(ShipbillTypeAdvancedQueryVO vo);

	/**
	 * 收货方模式分页查询
	 *
	 * @param vo
	 * @return
	 */
	Page<WaitForArrangeGoodsReceiverPageDTO> queryReceiverTypePage(ReceiverTypeQueryVO vo) throws Exception;

	/**
	 * 预约单模式分页查询
	 *
	 * @param vo
	 * @return
	 */
	Page<WaitForArrangeGoodsAppointmentDTO> queryAppointmentTypePage(WaitForArrangeGoodsAppointmentVO vo);

	/**
	 * 配载商品详情查询
	 *
	 * @param shipbillId
	 * @return
	 */
	Page<WaitForArrangeGoodsItemDTO> queryItemDetail(int pageNum, int pageSize, String shipbillId);

	/**
	 * 配载包裹详情查询
	 *
	 * @param shipbillId
	 * @return
	 */
	Page<WaitForArrangeGoodsPackageDTO> queryPackageDetail(int pageNum, int pageSize, String shipbillId);

	/**
	 * 开始理货
	 *
	 * @param
	 * @return
	 */
	void startArrangeGoods(List<String> ids) throws Exception;

	/**
	 * 理货完成
	 *
	 * @param
	 * @return
	 */
	void completeArrangeGoods(List<String> ids) throws Exception;

	/**
	 * 配载运单查询
	 *
	 * @param
	 * @return
	 */
	Page<WaitForArrangeGoodsShipbillDTO> queryShipbill(Integer pageNum, Integer pageSize, String shipbillId) throws Exception;

	/**
	 * 待理货导出
	 *
	 * @param
	 * @return
	 */
	List<WaitForArrangeGoodsExportDTO> export(ShipbillTypeQueryVO vo) throws Exception;

	/**
	 * 待理货分页导出
	 *
	 * @param
	 * @return
	 */
	List<WaitForArrangeGoodsExportDTO> exportPage(ShipbillTypeQueryVO vo) throws Exception;

	/**
	 * 待理货选择行导出
	 *
	 * @param
	 * @return
	 */
	List<WaitForArrangeGoodsExportDTO> exportSelected(List<String> ids)  throws Exception;

}
