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.StorageHalfwayExportDTO;
import com.prolog.rdc.tms.model.dto.StorageHalfwayGetShipbillDTO;
import com.prolog.rdc.tms.model.dto.StorageHalfwayItemDetailDTO;
import com.prolog.rdc.tms.model.dto.StorageHalfwayPackageDetailDTO;
import com.prolog.rdc.tms.model.dto.StorageHalfwayQueryByLoadbillDTO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayAbnormalRegisterByShipbillVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayAbnormalRegisterVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayAdvancedQueryVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayDeliveredConfirmByShipbillVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayDeliveredConfirmVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayExportAllVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayExportPageVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayFeedBackByShipbillVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayFeedBackVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayGetShipbillVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayItemDetailVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayPackageDetailVO;
import com.prolog.rdc.tms.model.vo.StorageHalfwayQueryByLoadbillVO;

/**
 * 运输管理-入库在途 服务层
 *
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author zhangsj
 * @since 2022/6/17 11:11
 */
public interface StorageHalfwayService {

    /**
     * 派车单查询
     *
     * @param storageHalfwayQueryByLoadbillVO
     * @return
     */
    Page<StorageHalfwayQueryByLoadbillDTO> queryLoadbillPageData(StorageHalfwayQueryByLoadbillVO storageHalfwayQueryByLoadbillVO);

    /**
     * 派车单高级查询
     *
     * @param storageHalfwayAdvancedQueryVO
     * @return
     */
    Page<StorageHalfwayQueryByLoadbillDTO> advancedQueryLoadbillPageData(StorageHalfwayAdvancedQueryVO storageHalfwayAdvancedQueryVO);

    /**
     * 配载运单查询
     *
     * @param storageHalfwayGetShipbillVO
     * @return
     */
    Page<StorageHalfwayGetShipbillDTO> getShipbillData(StorageHalfwayGetShipbillVO storageHalfwayGetShipbillVO);

    /**
     * 配载商品查询
     *
     * @param storageHalfwayItemDetailVO
     * @return
     */
    Page<StorageHalfwayItemDetailDTO> itemDetailData(StorageHalfwayItemDetailVO storageHalfwayItemDetailVO);

    /**
     * 配载包裹查询
     *
     * @param storageHalfwayPackageDetailVO
     * @return
     */
    Page<StorageHalfwayPackageDetailDTO> packageDetailData(StorageHalfwayPackageDetailVO storageHalfwayPackageDetailVO);

    /**
     * 运单-送达确认
     *
     * @param storageHalfwayDeliveredConfirmByShipbillVO
     */
    void shipbillDeliveredConfirmData(StorageHalfwayDeliveredConfirmByShipbillVO storageHalfwayDeliveredConfirmByShipbillVO);

    /**
     * 运单客服反馈
     *
     * @param storageHalfwayFeedBackByShipbillVO
     */
    void shipbillFeedBackData(StorageHalfwayFeedBackByShipbillVO storageHalfwayFeedBackByShipbillVO);

    /**
     * 运单异常登记
     *
     * @param storageHalfwayAbnormalRegisterByShipbillVO
     */
    void shipbillAbnormalRegisterData(StorageHalfwayAbnormalRegisterByShipbillVO storageHalfwayAbnormalRegisterByShipbillVO);

    /**
     * 派车单送达确认
     *
     * @param storageHalfwayDeliveredConfirmVO
     */
    void deliveredConfirmData(StorageHalfwayDeliveredConfirmVO storageHalfwayDeliveredConfirmVO);

    /**
     * 派车单客服反馈
     *
     * @param storageHalfwayFeedBackVO
     */
    void feedBackData(StorageHalfwayFeedBackVO storageHalfwayFeedBackVO);

    /**
     * 派车单异常登记
     *
     * @param storageHalfwayAbnormalRegisterVO
     */
    void abnormalRegisterData(StorageHalfwayAbnormalRegisterVO storageHalfwayAbnormalRegisterVO);

    /**
     * 导出所有数据
     *
     * @param storageHalfwayExportAllVO
     * @return
     */
    List<StorageHalfwayExportDTO> exportAllData(StorageHalfwayExportAllVO storageHalfwayExportAllVO);

    /**
     * 导出当前页数据
     *
     * @param storageHalfwayExportPageVO
     * @return
     */
    List<StorageHalfwayExportDTO> exportPageData(StorageHalfwayExportPageVO storageHalfwayExportPageVO);

    /**
     * 导出选择行数据
     *
     * @param loadbillIds
     * @return
     */
    List<StorageHalfwayExportDTO> exportSelectLineData(List<String> loadbillIds);

    /**
     * 入库在途打印
     *
     * @param loadbillIds
     * @return
     */
    Map<String, Object> printStorageHalfwayData(List<String> loadbillIds);

}
