package com.prolog.rdc.tms.service;

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

import com.prolog.framework.core.pojo.Page;
import com.prolog.product.core.framework.entity.UserEntity;
import com.prolog.rdc.tms.model.dto.PendingReviewDetailDTO;
import com.prolog.rdc.tms.model.dto.PendingReviewExportDetailDataDTO;
import com.prolog.rdc.tms.model.dto.PendingReviewPackageDTO;
import com.prolog.rdc.tms.model.dto.PendingReviewPackageDetailDTO;
import com.prolog.rdc.tms.model.dto.PendingReviewPageDTO;
import com.prolog.rdc.tms.model.dto.PendingReviewParseAddressPageDTO;
import com.prolog.rdc.tms.model.dto.PendingReviewViewDTO;
import com.prolog.rdc.tms.model.vo.*;

/**
 * 调度管理-待审核服务层
 *
 * @author lhb
 * @since 2022-04-11 14:45:00
 */
public interface PendingReviewService {

	/**
	 * 待审核分页查询
	 *
	 * @param pendingReviewPageVO
	 * @return
	 */
	Page<PendingReviewPageDTO> pagePendingReviewData(PendingReviewPageVO pendingReviewPageVO);

	/**
	 * 待审核高级查询
	 *
	 * @param advancedQueryVO
	 * @return
	 */
	Page<PendingReviewPageDTO> pageAdvanced(PendingReviewAdvancedQueryVO advancedQueryVO);

	/**
	 * 待审核商品信息查询
	 *
	 * @param pendingReviewDetailVO
	 * @return
	 */
	Page<PendingReviewDetailDTO> listShipbillDetailData(PendingReviewDetailVO pendingReviewDetailVO);

	/**
	 * 待审核包裹信息查询
	 *
	 * @param pendingReviewShipbillPackageListVO
	 * @return
	 */
	Page<PendingReviewPackageDTO> listShipbillPackageData(PendingReviewShipbillPackageListVO pendingReviewShipbillPackageListVO);

	/**
	 * 运单审核
	 *
	 * @param shipbillIds
	 * @return
	 */
	void reviewShipbillData(List<String> shipbillIds);

	/**
	 * 自动运单审核
	 *
	 * @param shipbillIds
	 * @return
	 */
	void autoReview(List<String> shipbillIds, UserEntity user, Date date);
	/**
	 * 运单待审核-回退
	 *
	 * @param vo
	 * @return
	 */
	void goBackShipbill(ShipbillGoBackVO vo);

	/**
	 * 地址解析查询
	 *
	 * @param pendingReviewParseAddressPageVO
	 */
	Page<PendingReviewParseAddressPageDTO> parseAddressQueryData(PendingReviewParseAddressPageVO pendingReviewParseAddressPageVO);

	/**
	 * 待审核-地址解析
	 *
	 * @param vo
	 * @return
	 */
	void parseAddressData(PendingReviewParseAddressVO vo);

	/**
	 * 待审核导出所有数据
	 *
	 * @param pendingReviewExportAllDataVO
	 * @return
	 */
	List<PendingReviewExportDetailDataDTO> exportAllDetailData(PendingReviewExportAllDataVO pendingReviewExportAllDataVO);

	/**
	 * 待审核导出当前页数据
	 *
	 * @param pendingReviewExportCurrentPageDataVO
	 * @return
	 */
	List<PendingReviewExportDetailDataDTO> exportCurrentPageDetailData(PendingReviewExportCurrentPageDataVO pendingReviewExportCurrentPageDataVO);

	/**
	 * 待审核导出选择行数据
	 *
	 * @param shipbillIdList
	 * @return
	 */
	List<PendingReviewExportDetailDataDTO> exportSelectLineData(List<String> shipbillIdList);

	/**
	 * 待审核运单打印
	 *
	 * @param shipbillId
	 * @return
	 */
	Map<String, Object> shipbillPrint(String shipbillId);

	/**
	 * 待审核运单查看
	 * 
	 * @param pendingReviewViewVO
	 * @return
	 */
	PendingReviewViewDTO viewShipbillData(PendingReviewViewVO pendingReviewViewVO);

	/**
	 * 待审核商品包裹信息查询
	 * 
	 * @param pendingReviewPackageByDetailVO
	 * @return
	 */
	Page<PendingReviewPackageDTO> viewDetailPackage(PendingReviewPackageByDetailVO pendingReviewPackageByDetailVO);

	/**
	 * 待审核包裹商品信息查询
	 * 
	 * @param pendingReviewDetailByPackageVO
	 * @return
	 */
	Page<PendingReviewPackageDetailDTO> viewPackageDetail(PendingReviewDetailByPackageVO pendingReviewDetailByPackageVO);
}
