package com.prolog.rdc.tms.service;

import java.util.List;

import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.OutsourceTrackExportDTO;
import com.prolog.rdc.tms.model.dto.OutsourceTrackItemDTO;
import com.prolog.rdc.tms.model.dto.OutsourceTrackPackageDTO;
import com.prolog.rdc.tms.model.dto.OutsourceTrackPageDTO;
import com.prolog.rdc.tms.model.dto.OutsourceTrackShipbillDTO;
import com.prolog.rdc.tms.model.vo.ConsignmentHandoverVO;
import com.prolog.rdc.tms.model.vo.OutsourceTrackAdvancedQueryVO;
import com.prolog.rdc.tms.model.vo.OutsourceTrackExportVO;
import com.prolog.rdc.tms.model.vo.OutsourceTrackItemQueryVO;
import com.prolog.rdc.tms.model.vo.OutsourceTrackPackageQueryVO;
import com.prolog.rdc.tms.model.vo.OutsourceTrackQueryVO;
import com.prolog.rdc.tms.model.vo.OutsourceTrackShipbillQueryVO;
import com.prolog.rdc.tms.model.vo.ReturnOrderConfirmVO;

/**
 * 运输管理——外包跟踪服务层
 *
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author xyf
 * @since 2022/6/1 12:43
 */
public interface OutsourceTrackService {

	/**
	 * 主界面分页查询
	 *
	 * @param vo
	 * @return
	 */
	Page<OutsourceTrackPageDTO> queryOutsourceTrackPage(OutsourceTrackQueryVO vo) throws Exception;

	/**
	 * 主界面高级查询
	 *
	 * @param vo
	 * @return
	 */
	Page<OutsourceTrackPageDTO> advancedQueryPage(OutsourceTrackAdvancedQueryVO vo);

	/**
	 * 配载运单查询
	 *
	 * @param vo
	 * @return
	 */
	Page<OutsourceTrackShipbillDTO> queryOutsourceTrackShipbill(OutsourceTrackShipbillQueryVO vo) throws Exception;

	/**
	 * 配载商品查询
	 *
	 * @param vo
	 * @return
	 */
	Page<OutsourceTrackItemDTO> queryOutsourceTrackItem(OutsourceTrackItemQueryVO vo) throws Exception;

	/**
	 * 配载包裹查询
	 *
	 * @param vo
	 * @return
	 */
	Page<OutsourceTrackPackageDTO> queryOutsourceTrackPackage(OutsourceTrackPackageQueryVO vo) throws Exception;

	/**
	 * 托运交接
	 *
	 * @param vo
	 * @return
	 */
	void consignmentHandover(ConsignmentHandoverVO vo) throws Exception;

	/**
	 * 正本回单确认
	 *
	 * @param vo
	 * @return
	 */
	void returnOrderConfirm(ReturnOrderConfirmVO vo) throws Exception;

	/**
	 * 主界所有数据导出
	 *
	 * @param vo
	 * @return
	 */
	List<OutsourceTrackExportDTO> exportAllOutsourceTrack(OutsourceTrackExportVO vo) throws Exception;

	/**
	 * 主界面分页导出
	 *
	 * @param vo
	 * @return
	 */
	List<OutsourceTrackExportDTO> exportPageOutsourceTrack(OutsourceTrackExportVO vo) throws Exception;

	/**
	 * 主界面导出
	 *
	 * @param ids
	 * @return
	 */
	List<OutsourceTrackExportDTO> exportSelected(List<String> ids) throws Exception;

}
