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.OrigReceiptLoadingPackageDTO;
import com.prolog.rdc.tms.model.dto.OrigReceiptLoadingShipBillDetailDTO;
import com.prolog.rdc.tms.model.dto.OrigReceiptLoadingShipbillDTO;
import com.prolog.rdc.tms.model.dto.PendingOrigReceiptConsigneeDTO;
import com.prolog.rdc.tms.model.dto.PendingOrigReceiptExportShipbillDTO;
import com.prolog.rdc.tms.model.dto.PendingOrigReceiptPictureDTO;
import com.prolog.rdc.tms.model.dto.PendingOrigReceiptShipbillDTO;
import com.prolog.rdc.tms.model.dto.PendingReceiptShipbillApprovalDTO;
import com.prolog.rdc.tms.model.vo.ApprovalVO;
import com.prolog.rdc.tms.model.vo.OrigReceiptConfirmVO;
import com.prolog.rdc.tms.model.vo.OrigReceiptLoadingShipbillPageVO;
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.PendingOrigReceiptPrintVO;

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


	/**
	 * 待正本回单运单模式高级查询
	 *
	 * @param pendingOrigReceiptAdvancedPageVO
	 * @return
	 */
	Page<PendingOrigReceiptShipbillDTO> advancedShipbillPage(PendingOrigReceiptAdvancedPageVO pendingOrigReceiptAdvancedPageVO);


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

	/**
	 * 正本回单确认
	 *
	 * @param receiptConfirmVO
	 * @return
	 */
	void receiptConfirm(OrigReceiptConfirmVO receiptConfirmVO);

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

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

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

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

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

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

	/**
	 * 待正本回单打印
	 *
	 * @param pendingOrigReceiptPrintVO
	 * @return
	 */
	Map<String, Object> shipbillPrint(PendingOrigReceiptPrintVO pendingOrigReceiptPrintVO);

	/**
	 * 审核信息查询
	 *
	 * @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);

	/**
	 * 待正本回单查询回单图片
	 * 
	 * @param shipbillIds
	 * @return
	 */
	PendingOrigReceiptPictureDTO listPendingOrigReceiptPictureData(List<String> shipbillIds);
}
