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

import java.util.List;

import com.prolog.rdc.tms.model.dto.AppointmentLoadingBillQueryDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.prolog.framework.dao.mapper.BaseMapper;
import com.prolog.rdc.tms.model.dto.AbnormalShipbillPageDTO;
import com.prolog.rdc.tms.model.dto.AppointmentConsigneeQueryDTO;
import com.prolog.rdc.tms.model.dto.AppointmentQueryDTO;
import com.prolog.rdc.tms.model.dto.AppointmentShipperQueryDTO;
import com.prolog.rdc.tms.model.dto.DispatchAdsQueryDTO;
import com.prolog.rdc.tms.model.dto.FinishShipbillDTO;
import com.prolog.rdc.tms.model.dto.PendingOrigReceiptConsigneeDTO;
import com.prolog.rdc.tms.model.dto.PendingOrigReceiptShipbillDTO;
import com.prolog.rdc.tms.model.dto.PendingReceiptConsigneePageDTO;
import com.prolog.rdc.tms.model.dto.PendingReceiptShipbillPageDTO;
import com.prolog.rdc.tms.model.dto.WaitForArrangeGoodsReceiverPageDTO;
import com.prolog.rdc.tms.model.dto.WaitForArrangeGoodsShipbillPageDTO;
import com.prolog.rdc.tms.model.entity.TmsLoadingBillDetailModel;
import com.prolog.rdc.tms.model.vo.AbnormalShipbillAdvancedQueryVO;
import com.prolog.rdc.tms.model.vo.AppointmentAdsQueryVO;
import com.prolog.rdc.tms.model.vo.AppointmentQueryVO;
import com.prolog.rdc.tms.model.vo.DispatchAdvanceQueryVO;
import com.prolog.rdc.tms.model.vo.FinishAdsQueryVO;
import com.prolog.rdc.tms.model.vo.FinishShipbillQueryVO;
import com.prolog.rdc.tms.model.vo.PendingOrigReceiptAdvancedPageVO;
import com.prolog.rdc.tms.model.vo.PendingOrigReceiptExportAllDataVO;
import com.prolog.rdc.tms.model.vo.PendingOrigReceiptExportCurrPgDataVO;
import com.prolog.rdc.tms.model.vo.PendingOrigReceiptPageVO;
import com.prolog.rdc.tms.model.vo.PendingReceiptAdvancedPageVO;
import com.prolog.rdc.tms.model.vo.PendingReceiptExportAllDataVO;
import com.prolog.rdc.tms.model.vo.PendingReceiptExportCurrPgDataVO;
import com.prolog.rdc.tms.model.vo.PendingReceiptPageVO;
import com.prolog.rdc.tms.model.vo.ReceiverTypeQueryVO;
import com.prolog.rdc.tms.model.vo.ShipbillTypeAdvancedQueryVO;
import com.prolog.rdc.tms.model.vo.ShipbillTypeQueryVO;

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

	/**
	 * 待理货-运单模式查询
	 *
	 * @param vo
	 * @return
	 */
	List<WaitForArrangeGoodsShipbillPageDTO> queryShipbillTypePage(@Param("vo") ShipbillTypeQueryVO vo);

	/**
	 * 待理货-收货方模式查询(新)
	 *
	 * @param vo
	 * @return
	 */
	List<WaitForArrangeGoodsReceiverPageDTO> queryReceiverTypeSql(@Param("vo") ReceiverTypeQueryVO vo);

	/**
	 * 待回单-运单模式查询
	 *
	 * @param vo
	 * @return
	 */
	List<PendingReceiptShipbillPageDTO> queryPendingReceiptShipbill(@Param("vo") PendingReceiptPageVO vo);

	/**
	 * 待回单-收货方模式查询
	 *
	 * @param vo
	 * @return
	 */
	List<PendingReceiptConsigneePageDTO> queryPendingReceiptConsignee(@Param("vo") PendingReceiptPageVO vo);

	/**
	 * 待回单-导出所有数据
	 *
	 * @param vo
	 * @return
	 */
	List<PendingReceiptShipbillPageDTO> exportAllShipbillData(@Param("vo") PendingReceiptExportAllDataVO vo);

	/**
	 * 待回单-导出当前页数据
	 *
	 * @param vo
	 * @return
	 */
	List<PendingReceiptShipbillPageDTO> exportCurrentPageShipbillData(@Param("vo") PendingReceiptExportCurrPgDataVO vo);

	/**
	 * 待回单-查询选择行数据
	 *
	 * @param shipbillIds
	 * @return
	 */
	List<PendingReceiptShipbillPageDTO> querySelectLineShipbillData(@Param("shipbillIds") String[] shipbillIds);

	/**
	 * 待正本回单-运单模式查询
	 *
	 * @param vo
	 * @return
	 */
	List<PendingOrigReceiptShipbillDTO> queryPendingOrigReceiptShipbill(@Param("vo") PendingOrigReceiptPageVO vo);

	/**
	 * 待正本回单-收货方模式查询
	 *
	 * @param vo
	 * @return
	 */
	List<PendingOrigReceiptConsigneeDTO> queryPendingOrigReceiptConsignee(@Param("vo") PendingOrigReceiptPageVO vo);

	/**
	 * 待正本回单-导出所有数据
	 *
	 * @param vo
	 * @return
	 */
	List<PendingOrigReceiptShipbillDTO> exportAllOrigShipbillData(@Param("vo") PendingOrigReceiptExportAllDataVO vo);

	/**
	 * 待正本回单-导出当前页数据
	 *
	 * @param vo
	 * @return
	 */
	List<PendingOrigReceiptShipbillDTO> exportCurrentPageOrigShipbillData(@Param("vo") PendingOrigReceiptExportCurrPgDataVO vo);

	/**
	 * 待正本回单-查询选择行数据
	 *
	 * @param shipbillIds
	 * @return
	 */
	List<PendingOrigReceiptShipbillDTO> querySelectLineOrigShipbillData(@Param("shipbillIds") String[] shipbillIds);

	/**
	 * 完成运单-运单查询
	 *
	 * @param vo
	 * @return
	 */
	List<FinishShipbillDTO> queryFinishShipbill(@Param("vo") FinishShipbillQueryVO vo);

	/**
	 * 完成运单-导出选择行数据
	 *
	 * @param shipbillIds
	 * @return
	 */
	List<FinishShipbillDTO> exportFinishSelectLineShipbill(@Param("shipbillIds") String[] shipbillIds);

	/**
	 * 已调度高级查询
	 *
	 * @param vo
	 * @return
	 */
	List<DispatchAdsQueryDTO> dispatchAdvancedQuery(@Param("vo") DispatchAdvanceQueryVO vo);

	/**
	 * 已完成高级查询
	 *
	 * @param vo
	 * @return
	 */
	List<FinishShipbillDTO> finishAdvancedQuery(@Param("vo") FinishAdsQueryVO vo);

	/**
	 * 待理货-高级查询
	 *
	 * @param vo
	 * @return
	 */
	List<WaitForArrangeGoodsShipbillPageDTO> advancedQueryShipbillTypePage(@Param("vo") ShipbillTypeAdvancedQueryVO vo);

	/**
	 * 待理货-高级查询
	 *
	 * @param pendingReceiptAdvancedPageVO
	 * @return
	 */
	List<PendingReceiptShipbillPageDTO> advancedQueryPendingReceiptShipbill(@Param("vo") PendingReceiptAdvancedPageVO pendingReceiptAdvancedPageVO);

	/**
	 * 待理货-高级查询
	 *
	 * @param pendingOrigReceiptAdvancedPageVO
	 * @return
	 */
	List<PendingOrigReceiptShipbillDTO> advancedQueryPendingOrigReceiptShipbill(@Param("vo") PendingOrigReceiptAdvancedPageVO pendingOrigReceiptAdvancedPageVO);

	/**
	 * 异常订单-高级查询
	 *
	 * @param abnormalShipbillAdvancedQueryVO
	 * @return
	 */
	List<AbnormalShipbillPageDTO> advancedQueryAbnormalShipbillPage(AbnormalShipbillAdvancedQueryVO abnormalShipbillAdvancedQueryVO);

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

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

	/**
	 * 待预约高级查询
	 *
	 * @param appointmentAdsQueryVO
	 * @return
	 */
	List<AppointmentQueryDTO> queryAppointmentAdvanced(@Param("vo") AppointmentAdsQueryVO appointmentAdsQueryVO);

	/**
	 * 待预约收货方模式查询
	 *
	 * @param appointmentQueryVO
	 * @return
	 */
	List<AppointmentConsigneeQueryDTO> queryAppointmentConsignee(@Param("vo") AppointmentQueryVO appointmentQueryVO);

	/**
	 * 待预约-查询选择行数据
	 *
	 * @param shipbillIds
	 * @return
	 */
	List<AppointmentQueryDTO> queryAppointSelectLineData(@Param("shipbillIds") String[] shipbillIds);

	/**
	 * 待预约发货方模式查询
	 *
	 * @param appointmentQueryVO
	 * @return
	 */
	List<AppointmentShipperQueryDTO> queryAppointmentShipper(@Param("vo") AppointmentQueryVO appointmentQueryVO);

	/**
	 * 回单审批信息查询
	 *
	 * @param vo
	 * @return
	 */
	List<PendingReceiptShipbillPageDTO> queryReceiptApprovalInfo(@Param("vo") ShipbillTypeQueryVO vo);

	/**
	 * 正本回单审批信息查询
	 *
	 * @param vo
	 * @return
	 */
	List<PendingOrigReceiptShipbillDTO> queryOrigReceiptApprovalInfo(@Param("vo") ShipbillTypeQueryVO vo);
}
