
package cn.iocoder.yudao.module.order.service.order;

import cn.iocoder.yudao.framework.apollo.core.event.QueryChannelInfoEvent;
import cn.iocoder.yudao.framework.mybatis.core.service.IService;
import cn.iocoder.yudao.module.ecw.dal.dataobject.region.RegionDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.order.dal.dataobject.order.OrderDO;
import cn.iocoder.yudao.module.order.dto.OrderBackInfoDto;
import cn.iocoder.yudao.module.order.dto.OrderRemindExceptionDto;
import cn.iocoder.yudao.module.order.vo.approval.OrderSpecialApplyVO;
import cn.iocoder.yudao.module.order.vo.order.*;
import cn.iocoder.yudao.module.product.dto.FeeDto;

import javax.validation.Valid;
import java.util.Collection;
import java.util.Date;
import java.util.List;

/**
 * 订单 Service 接口
 *
 * @author 系统管理员
 */
public interface OrderAirService extends IService<OrderDO> {
    /**
     * 空运订单确认可出
     *
     * @param orderId 订单id
     */
    void can(Long orderId);


    /**
     * 空运订单确认备货
     *
     * @param orderId 订单id
     */
    void readyStock(Long orderId);

    /**
     * 空运订单备货中
     *
     * @param orderId 订单id
     */
    void readyStockProcessing(Long orderId);

    /**
     * 批量空运订单确认可出
     *
     * @param orderIds 订单id列表
     */
    void canByOrderIds(Collection<Long> orderIds);


    /**
     * 空运订单批量转异
     *
     * @param orderManualExceptionBatchReqVO
     */
    void manualExceptionBatch(OrderManualExceptionBatchReqVO orderManualExceptionBatchReqVO);

    /**
     * 修改空运待备货、备货中、已备货订单不可出
     *
     * @param orderId 订单id
     */
    void notCan(Long orderId);

    /**
     * 批量修改空运待备货、备货中、已备货订单不可出
     *
     * @param orderIds 订单id列表
     */
    void notCanByOrderIds(List<Long> orderIds);

    /**
     * 检查渠道相关的已入仓订单是否渠道不可出
     *
     * @param event 渠道信息
     */
    void inspectWarehouseInOrderChannelNoCan(QueryChannelInfoEvent event);
}
