package com.prolog.rdc.tms.app.service.business;

import com.prolog.rdc.tms.app.model.dto.PendingPickUpTakeNumberDTO;
import com.prolog.rdc.tms.app.model.dto.business.LoadingBillDetailDTO;
import com.prolog.rdc.tms.app.model.dto.business.TakeNumberPageDTO;
import com.prolog.rdc.tms.app.model.dto.business.TakeNumberPageDetailDTO;
import com.prolog.rdc.tms.app.model.dto.business.TakeNumberQueryVO;
import com.prolog.rdc.tms.app.model.vo.business.AppointDetailQueryVO;
import com.prolog.rdc.tms.app.model.vo.business.TakeNumberAppointQueryVO;
import com.prolog.rdc.tms.app.model.vo.business.TakeNumberByAppointVO;
import com.prolog.rdc.tms.app.model.vo.business.TakeNumberByLoadingBillVO;
import com.prolog.rdc.tms.app.model.vo.business.TakeNumberByShipbillVO;

import java.util.List;

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

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

	/**
	 * 当前仓库、司机没有预约单时,查询运单列表,现场取号
	 *
	 * @param
	 * @return
	 */
	List<LoadingBillDetailDTO> queryShipbill(TakeNumberQueryVO vo);

	/**
	 * 按预约单取号
	 *
	 * @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 vo
	 * @return
	 */
	String takeNumberByLoadingBill(TakeNumberByLoadingBillVO vo);

	/**
	 * 按派车单取号
	 * @param loadingBillIdList
	 * @return
	 */
	PendingPickUpTakeNumberDTO takeNumberByLoadingBillList(List<String> loadingBillIdList);

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

}
