package com.prolog.rdc.tms.service;

import java.util.List;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.AllShipbillItemDTO;
import com.prolog.rdc.tms.model.dto.AllShipbillPackageDTO;
import com.prolog.rdc.tms.model.dto.LoadingBillDetailDTO;
import com.prolog.rdc.tms.model.dto.TakeNumberInfoDTO;
import com.prolog.rdc.tms.model.dto.TakeNumberPageDTO;
import com.prolog.rdc.tms.model.dto.TakeNumberPageDetailDTO;
import com.prolog.rdc.tms.model.vo.AllShipbillItemQueryVO;
import com.prolog.rdc.tms.model.vo.AllShipbillPackageQueryVO;
import com.prolog.rdc.tms.model.vo.AppointDetailQueryVO;
import com.prolog.rdc.tms.model.vo.AppointItemQueryVO;
import com.prolog.rdc.tms.model.vo.AppointPackQueryVO;
import com.prolog.rdc.tms.model.vo.TakeNumberAppointQueryVO;
import com.prolog.rdc.tms.model.vo.TakeNumberByAppointVO;
import com.prolog.rdc.tms.model.vo.TakeNumberByShipbillVO;
import com.prolog.rdc.tms.model.vo.TakeNumberQueryVO;

/**
 *
 *
 * 取号管理服务层
 *
 * @author :xiaoyf
 *
 *
 */
public interface TakeNumberService {

	/**
	 * 通过运单号查询取号信息
	 *
	 * @param
	 * @return
	 */
	TakeNumberInfoDTO getTakeNumberInfoByShipbillNo(String shipbillNo) throws Exception;

	/**
	 * 预约单查询
	 *
	 * @param vo
	 * @return
	 */
	List<TakeNumberPageDTO> queryPage(TakeNumberAppointQueryVO vo) throws Exception;

	/**
	 * 配载运单查询
	 *
	 * @param vo
	 * @return
	 */
	List<TakeNumberPageDetailDTO> queryAppointDetail(AppointDetailQueryVO vo) throws Exception;

	/**
	 * 按预约单取号
	 *
	 * @param
	 * @return
	 */
	String takeNumberByAppoint(TakeNumberByAppointVO vo) throws Exception;

	/**
	 * 运单列表查询
	 *
	 * @param
	 * @return
	 */
	List<LoadingBillDetailDTO> queryShipbill(TakeNumberQueryVO vo);

	/**
	 * 商品查询
	 *
	 * @param
	 * @return
	 */
	Page<AllShipbillItemDTO> listItemDetailData(AppointItemQueryVO vo);

	/**
	 * 包裹查询
	 *
	 * @param
	 * @return
	 */
	Page<AllShipbillPackageDTO> listPackageData(AppointPackQueryVO vo);

	/**
	 * 按运单取号
	 *
	 * @param
	 * @return
	 */
	String takeNumberByShipbill(TakeNumberByShipbillVO vo) throws Exception;

	/**
	 * 商品详情查询
	 *
	 * @param allShipbillItemQueryVO
	 * @return
	 */
	Page<AllShipbillItemDTO> listItemDetailData(AllShipbillItemQueryVO allShipbillItemQueryVO);

	/**
	 * 包裹详情查询
	 *
	 * @param allShipbillPackageQueryVO
	 * @return
	 */
	Page<AllShipbillPackageDTO> listPackageData(AllShipbillPackageQueryVO allShipbillPackageQueryVO);

}
