package com.prolog.rdc.tms.service;

import java.util.List;
import java.util.Map;

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

/**
 * 运输管理-待回单服务层
 *
 * @author lhb
 * @since 2022-06-01 14:45:00
 */
public interface PendingReceiptService {
	/**
	 * 待回单运单模式分页查询
	 *
	 * @param pendingReceiptPageVO
	 * @return
	 */
	Page<PendingReceiptShipbillPageDTO> shipbillPage(PendingReceiptPageVO pendingReceiptPageVO);

	/**
	 * 待回单运单模式高级查询
	 *
	 * @param pendingReceiptAdvancedPageVO
	 * @return
	 */
	Page<PendingReceiptShipbillPageDTO> advancedShipbillPage(PendingReceiptAdvancedPageVO pendingReceiptAdvancedPageVO);

	/**
	 * 待回单收货方模式分页查询
	 *
	 * @param pendingReceiptPageVO
	 * @return
	 */
	Page<PendingReceiptConsigneePageDTO> consigneePage(PendingReceiptPageVO pendingReceiptPageVO);

	/**
	 * 回单确认
	 *
	 * @param receiptConfirmVO
	 * @return
	 */
	void receiptConfirm(ReceiptConfirmVO receiptConfirmVO);

	/**
	 * 配载运单查询
	 *
	 * @param vo
	 * @return
	 */
	Page<ReceiptLoadingShipbillDTO> loadingShipbillQuery(ReceiptLoadingShipbillPageVO vo);

	/**
	 * 配载商品查询
	 *
	 * @param vo
	 * @return
	 */
	Page<ReceiptLoadingShipBillDetailDTO> loadingShipbillDetail(ReceiptLoadingShipbillPageVO vo);

	/**
	 * 配载包裹查询
	 *
	 * @param vo
	 * @return
	 */
	Page<ReceiptLoadingPackageDTO> loadingShipbillPackage(ReceiptLoadingShipbillPageVO vo);

	/**
	 * 导出所有数据
	 *
	 * @param vo
	 * @return
	 */
	List<PendingReceiptExportShipbillDTO> exportAllShipbill(PendingReceiptExportAllDataVO vo);

	/**
	 * 导出当前页数据
	 *
	 * @param vo
	 * @return
	 */
	List<PendingReceiptExportShipbillDTO> exportCurrentPageShipbill(PendingReceiptExportCurrPgDataVO vo);

	/**
	 * 导出选择行数据
	 *
	 * @param shipbillIdList
	 * @return
	 */
	List<PendingReceiptExportShipbillDTO> exportSelectLineShipbill(List<String> shipbillIdList);

	/**
	 * 待回单打印
	 *
	 * @param receiptLoadingShipbillPrintVO
	 * @return
	 */
	Map<String, Object> shipbillPrint(ReceiptLoadingShipbillPrintVO receiptLoadingShipbillPrintVO);

	/**
	 * 审核信息查询
	 *
	 * @param vo
	 * @return
	 */
	PendingReceiptShipbillApprovalDTO getApprovalInfo(ApprovalVO vo);

	/**
	 * 审批作废
	 * @param vo
	 */
	void invalidApproval(ApprovalVO vo);

	/**
	 * 审批流撤回
	 * @param vo
	 */
	void retractApproval(ApprovalVO vo);

	/**
	 * 审批流提交
	 * @param vo
	 */
	void submitApproval(ApprovalVO vo);

	/**
	 * 审批流审核
	 * @param vo
	 */
	void reviewApproval(ApprovalVO vo);
}
