package com.prolog.rdc.tms.app.dao.mapper;

import java.util.List;

import com.prolog.rdc.tms.app.model.dto.VoiceBroadcastQueryDataDTO;
import com.prolog.rdc.tms.app.model.dto.WarehousePickUpLoadingBillDataDTO;
import com.prolog.rdc.tms.app.model.vo.VoiceBroadcastQueryVO;
import com.prolog.rdc.tms.app.model.vo.business.LoadingScanQueryVO;
import com.prolog.rdc.tms.app.model.vo.business.WaitDeliveredQueryVO;
import com.prolog.rdc.tms.app.model.vo.business.WaitPickUpGoodsQueryByShipbillVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.prolog.framework.dao.mapper.BaseMapper;
import com.prolog.rdc.tms.app.model.dto.DeliveryOrderQueryDTO;
import com.prolog.rdc.tms.app.model.dto.DispatchOrderDetailQueryDTO;
import com.prolog.rdc.tms.app.model.dto.DriverInformationQueryDTO;
import com.prolog.rdc.tms.app.model.dto.DriverVehicleDTO;
import com.prolog.rdc.tms.app.model.dto.WarehousePickUpWaybillDataDTO;
import com.prolog.rdc.tms.app.model.dto.business.AppointmentQueryDTO;
import com.prolog.rdc.tms.app.model.entity.TmsLoadingBillDetailModel;
import com.prolog.rdc.tms.app.model.vo.AutoCheckInVO;
import com.prolog.rdc.tms.app.model.vo.DeliveryOrderQueryVO;
import com.prolog.rdc.tms.app.model.vo.DispatchOrderDetailQueryVO;
import com.prolog.rdc.tms.app.model.vo.DriverInformationQueryVO;
import com.prolog.rdc.tms.app.model.vo.DriverVehicleQueryVO;
import com.prolog.rdc.tms.app.model.vo.WarehousePickUpNumberDataVO;
import com.prolog.rdc.tms.app.model.vo.business.BusinessAppointmentQueryVO;

/**
 * 装车单明细表数据库访问层
 *
 * @author zhangsj
 * @since 2022-04-13 14:13:38
 */
@Repository
public interface TmsLoadingBillDetailMapper extends BaseMapper<TmsLoadingBillDetailModel> {

	/**
	 * 配送单查询
	 *
	 * @param vo
	 * @return
	 */
	List<DeliveryOrderQueryDTO> deliveryOrderQuery(@Param("vo") DeliveryOrderQueryVO vo);

	/**
	 * 派车单明细查询
	 *
	 * @param vo
	 * @return
	 */
	List<DispatchOrderDetailQueryDTO> dispatchOrderDetailQuery(@Param("vo") DispatchOrderDetailQueryVO vo);

	/**
	 * 待预约运单模式查询
	 *
	 * @param appointmentQueryVO
	 * @return
	 */
	List<AppointmentQueryDTO> queryAppointmentShipbill(@Param("vo") BusinessAppointmentQueryVO appointmentQueryVO);

	/**
	 * 待预约派车单模式查询
	 *
	 * @param appointmentQueryVO
	 * @return
	 */
	List<AppointmentQueryDTO> queryAppointmentLoadBill(@Param("vo") BusinessAppointmentQueryVO appointmentQueryVO);

	List<WarehousePickUpWaybillDataDTO> warehousePickUpWaybillQuery(@Param("vo") WarehousePickUpNumberDataVO vo);

	/**
	 * 司机扫仓库派车单取号
	 * @param vo
	 * @return
	 */
	List<WarehousePickUpLoadingBillDataDTO> warehousePickUpLoadingBillQuery(@Param("vo") WarehousePickUpNumberDataVO vo);

	List<DriverInformationQueryDTO> driverInformationQuery(@Param("vo") DriverInformationQueryVO driverInformationQueryVO);

	List<DriverVehicleDTO> driverVehicleQuery(@Param("vo") DriverVehicleQueryVO driverVehicleQueryVO);

	/**
	 * 待自动提货签到运单查询
	 *
	 * @param vo
	 * @return
	 */
	List<TmsLoadingBillDetailModel> queryAutoPickUpSignBillData(@Param("vo") AutoCheckInVO vo);

	/**
	 * 待自动配送签到运单查询
	 *
	 * @param vo
	 * @return
	 */
	List<TmsLoadingBillDetailModel> queryAutoDeliverySignBillData(@Param("vo") AutoCheckInVO vo);

	/**
	 * 业务版-待提货
	 * @param vo
	 * @return
	 */
	List<TmsLoadingBillDetailModel> queryWaitPickUpGoods(@Param("vo") WaitPickUpGoodsQueryByShipbillVO vo);

	/**
	 * 业务版-待送达
	 * @param vo
	 * @return
	 */
	List<TmsLoadingBillDetailModel> queryWaitDelivered(@Param("vo") WaitDeliveredQueryVO vo);

	/**
	 * 业务版-待送达-收货方模式
	 * @param vo
	 * @return
	 */
	List<TmsLoadingBillDetailModel> queryWaitDeliveredGroupByConsignee(@Param("vo") WaitDeliveredQueryVO vo);

	/**
	 * 获取司机月台信息
	 * @param vo
	 * @return
	 */
	List<String> getPlatform(@Param("vo") LoadingScanQueryVO vo);

	/**
	 * 获取司机扫描派车单
	 * @param vo
	 * @return
	 */
	List<String> getLoadingScanLoadingBill(@Param("vo") LoadingScanQueryVO vo);

	/**
	 * 获取司机扫描运单
	 * @param vo
	 * @return
	 */
	List<String> getLoadingScanShipBill(@Param("vo") LoadingScanQueryVO vo);

	/**
	 * 获取司机未扫描运单
	 * @param vo
	 * @return
	 */
	List<String> getLoadingUnScanShipBill(@Param("vo") LoadingScanQueryVO vo);

	/**
	 * 获取司机语音播报数据
	 * @param vo
	 * @return
	 */
	List<VoiceBroadcastQueryDataDTO> getBroadcastData(@Param("vo") VoiceBroadcastQueryVO vo);

}
