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.DispatchAdsQueryDTO;
import com.prolog.rdc.tms.model.dto.DispatcheItemByPackagePageDTO;
import com.prolog.rdc.tms.model.dto.DispatcheItemPageDTO;
import com.prolog.rdc.tms.model.dto.DispatchePackageByItemPageDTO;
import com.prolog.rdc.tms.model.dto.DispatchePackagePageDTO;
import com.prolog.rdc.tms.model.dto.DispatchePageDTO;
import com.prolog.rdc.tms.model.dto.DispatcheViewDTO;
import com.prolog.rdc.tms.model.dto.ExportDispatchDTO;
import com.prolog.rdc.tms.model.vo.DetailItemByPackagePageVO;
import com.prolog.rdc.tms.model.vo.DetailItemPageVO;
import com.prolog.rdc.tms.model.vo.DetailPackageByItemPageVO;
import com.prolog.rdc.tms.model.vo.DetailPackagePageVO;
import com.prolog.rdc.tms.model.vo.DispatchAdvanceQueryVO;
import com.prolog.rdc.tms.model.vo.DispatchExportAllVO;
import com.prolog.rdc.tms.model.vo.DispatchExportPageVO;
import com.prolog.rdc.tms.model.vo.DispatchPageVO;
import com.prolog.rdc.tms.model.vo.DispatcheViewVO;

/**
 * 调度管理-已调度服务层
 *
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author zhangsj
 * @since 2022/4/11 14:01
 */
public interface DispatchService {

	/**
	 * 分页查询
	 * 
	 * @param dispatchPageVO
	 * @return
	 */
	Page<DispatchePageDTO> pageDispatchData(DispatchPageVO dispatchPageVO);

	/**
	 * 已调度高级查询
	 *
	 * @param advancedQueryVO
	 * @return
	 */
	Page<DispatchAdsQueryDTO> pageAdvanced(DispatchAdvanceQueryVO advancedQueryVO);

	/**
	 * 查询商品
	 * 
	 * @param detailItemPageVO
	 * @return
	 */
	Page<DispatcheItemPageDTO> pageDetailItemData(DetailItemPageVO detailItemPageVO);

	/**
	 * 查询包裹
	 * 
	 * @param detailPackagePageVO
	 * @return
	 */
	Page<DispatchePackagePageDTO> pageDetailPackageData(DetailPackagePageVO detailPackagePageVO);

	/**
	 * 根据商品查询包裹
	 * 
	 * @param detailPackageByItemPageVO
	 * @return
	 */
	Page<DispatchePackageByItemPageDTO> pagePackageByItemData(DetailPackageByItemPageVO detailPackageByItemPageVO);

	/**
	 * 根据包裹查询商品
	 * 
	 * @param detailItemByPackagePageVO
	 * @return
	 */
	Page<DispatcheItemByPackagePageDTO> pageItemByPackageData(DetailItemByPackagePageVO detailItemByPackagePageVO);

	/**
	 * 导出所有数据
	 * 
	 * @param dispatchExportAllVO
	 * @return
	 */
	List<ExportDispatchDTO> exportAllDispatchData(DispatchExportAllVO dispatchExportAllVO);

	/**
	 * 导出当前页数据
	 * 
	 * @param dispatchExportPageVO
	 * @return
	 */
	List<ExportDispatchDTO> exportPageDispatchData(DispatchExportPageVO dispatchExportPageVO);

	/**
	 * 导出选中数据
	 * 
	 * @param ids
	 * @return
	 */
	List<ExportDispatchDTO> exportChooseDispatchData(List<String> ids);

	/**
	 * 打印已调度运单
	 * 
	 * @param id
	 * @return
	 */
	Map<String, Object> printDispatchData(String id);

	/**
	 * 已调度运单查看
	 * 
	 * @param dispatcheViewVO
	 * @return
	 */
	DispatcheViewDTO viewDispatchData(DispatcheViewVO dispatcheViewVO);

	/**
	 * 已调度运单撤销
	 * 
	 * @param ids
	 */
	void undoDispatchData(List<String> ids,String processType);
}
