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.DeliveryConfirmExportDTO;
import com.prolog.rdc.tms.model.dto.DeliveryConfirmGetShipbillDTO;
import com.prolog.rdc.tms.model.dto.DeliveryConfirmItemDetailDTO;
import com.prolog.rdc.tms.model.dto.DeliveryConfirmPackageDetailDTO;
import com.prolog.rdc.tms.model.dto.DeliveryConfirmQueryByLoadbillDTO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmAbnormalRegisterByShipbillVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmAbnormalRegisterVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmAdvancedQueryVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmDeleteDetailVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmExportAllVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmExportPageVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmFeedBackByShipbillVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmFeedBackVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmGetShipbillVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmItemDetailVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmPackageDetailVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmQueryByLoadbillVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmStartShipmentByShipbillVO;
import com.prolog.rdc.tms.model.vo.DeliveryConfirmStartShipmentVO;

/**
 * 提货确认服务层
 *
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author zhangsj
 * @since 2022/6/23 10:02
 */
public interface DeliveryConfirmService {
    /**
     * 派车单查询
     *
     * @param deliveryConfirmQueryByLoadbillVO
     * @return
     */
    Page<DeliveryConfirmQueryByLoadbillDTO> queryLoadbillPageData(DeliveryConfirmQueryByLoadbillVO deliveryConfirmQueryByLoadbillVO);

    /**
     * 派车单高级查询
     *
     * @param deliveryConfirmAdvancedQueryVO
     * @return
     */
    Page<DeliveryConfirmQueryByLoadbillDTO> advancedQueryLoadbillPageData(DeliveryConfirmAdvancedQueryVO deliveryConfirmAdvancedQueryVO);

    /**
     * 配载运单查询
     *
     * @param deliveryConfirmGetShipbillVO
     * @return
     */
    Page<DeliveryConfirmGetShipbillDTO> getShipbillData(DeliveryConfirmGetShipbillVO deliveryConfirmGetShipbillVO);

    /**
     * 配载商品查询
     *
     * @param deliveryConfirmItemDetailVO
     * @return
     */
    Page<DeliveryConfirmItemDetailDTO> itemDetailData(DeliveryConfirmItemDetailVO deliveryConfirmItemDetailVO);

    /**
     * 配载包裹查询
     *
     * @param deliveryConfirmPackageDetailVO
     * @return
     */
    Page<DeliveryConfirmPackageDetailDTO> packageDetailData(DeliveryConfirmPackageDetailVO deliveryConfirmPackageDetailVO);

    /**
     * 运单启运登记
     *
     * @param deliveryConfirmStartShipmentByShipbillVO
     */
    void shipbillStartShipmentData(DeliveryConfirmStartShipmentByShipbillVO deliveryConfirmStartShipmentByShipbillVO);

    /**
     * 运单客服反馈
     *
     * @param deliveryConfirmFeedBackByShipbillVO
     */
    void shipbillFeedBackData(DeliveryConfirmFeedBackByShipbillVO deliveryConfirmFeedBackByShipbillVO);

    /**
     * 运单异常登记
     *
     * @param deliveryConfirmAbnormalRegisterByShipbillVO
     */
    void shipbillAbnormalRegisterData(DeliveryConfirmAbnormalRegisterByShipbillVO deliveryConfirmAbnormalRegisterByShipbillVO);

    /**
     * 派车单启运登记
     *
     * @param deliveryConfirmStartShipmentVO
     */
    void startShipmentData(DeliveryConfirmStartShipmentVO deliveryConfirmStartShipmentVO);

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

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

    /**
     * 导出所有数据
     *
     * @param deliveryConfirmExportAllVO
     * @return
     */
    List<DeliveryConfirmExportDTO> exportAllData(DeliveryConfirmExportAllVO deliveryConfirmExportAllVO);

    /**
     * 导出当前页数据
     *
     * @param deliveryConfirmExportPageVO
     * @return
     */
    List<DeliveryConfirmExportDTO> exportPageData(DeliveryConfirmExportPageVO deliveryConfirmExportPageVO);

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

    /**
     * 提货确认打印
     *
     * @param loadbillIds
     * @return
     */
    Map<String, Object> printDeliveryConfirmData(List<String> loadbillIds);

    /**
     * 配载运单剔除
     *
     * @param deliveryConfirmDeleteDetailVO
     */
    void deleteDetailSendCarData(DeliveryConfirmDeleteDetailVO deliveryConfirmDeleteDetailVO);
}
