package com.prolog.rdc.tms.app.service.business;



import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.app.model.dto.AppointmentBillQueryForCarrierDTO;
import com.prolog.rdc.tms.app.model.dto.business.BookingGetShipbillDTO;
import com.prolog.rdc.tms.app.model.dto.business.BookingItemDetailDTO;
import com.prolog.rdc.tms.app.model.dto.business.BookingPackageDetailDTO;
import com.prolog.rdc.tms.app.model.dto.business.BookingQueryDTO;
import com.prolog.rdc.tms.app.model.vo.AppointmentBillQueryForCarrierVO;
import com.prolog.rdc.tms.app.model.vo.business.BookingGetShipbillVO;
import com.prolog.rdc.tms.app.model.vo.business.BookingItemDetailVO;
import com.prolog.rdc.tms.app.model.vo.business.BookingPackageDetailVO;
import com.prolog.rdc.tms.app.model.vo.business.BookingQueryVO;

import java.util.List;

/**
 * 园区管理-预约管理服务层
 *
 * Company: 湖北普罗格科技股份有限公司
 *
 * @author xiaoyf
 * @since 2022/7/5 10:29
 */
public interface BookingService {

    /**
     * 主界面分页查询
     *
     * @param
     * @return
     */
    Page<BookingQueryDTO> queryPage(BookingQueryVO bookingQueryVO);

    /**
     * 承运商预约列表分页查询
     * @param carrierVO
     * @return
     */
    Page<AppointmentBillQueryForCarrierDTO> pageForCarrier(AppointmentBillQueryForCarrierVO carrierVO);

    /**
     * 配载运单查询
     *
     * @param bookingGetShipbillVO
     * @return
     */
    Page<BookingGetShipbillDTO> getShipbillData(BookingGetShipbillVO bookingGetShipbillVO);

    /**
     * 配载商品查询
     *
     * @param bookingItemDetailVO
     * @return
     */
    Page<BookingItemDetailDTO> itemDetailData(BookingItemDetailVO bookingItemDetailVO);

    /**
     * 配载包裹查询
     *
     * @param bookingPackageDetailVO
     * @return
     */
    Page<BookingPackageDetailDTO> packageDetailData(BookingPackageDetailVO bookingPackageDetailVO);

    /**
     * 预约单审核
     *
     * @param appointmentIds
     */
    void reviewData(List<String> appointmentIds);

    /**
     * 预约单取消
     *
     * @param appointmentIds
     */
    void cancelData(List<String> appointmentIds);

    void cancelAppointment(List<String> shipbillIds);
}
