package com.hzs.sale.deliver.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.sale.deliver.SaDeliverItems;
import com.hzs.sale.deliver.vo.DeliverBarCodeVO;

import java.util.List;

/**
 * 发货单明细表 服务类
 *
 * @author hzs
 * @since 2022-08-31
 */
public interface ISaDeliverItemsService extends IService<SaDeliverItems> {

    /**
     * 查询发货条码数据
     *
     * @param idList      发货单ID列表
     * @param orderIdList 订单ID列表
     * @param pkCountry   国家ID
     * @param bind        查询绑定用户（0=是，其它为否；如果是则只查询绑定过条码的）
     * @return
     */
    List<DeliverBarCodeVO> deliverCodeData(List<Long> idList, List<Long> orderIdList, Integer pkCountry, Integer bind);

    /**
     * 根据订单ID和不包含的订单明细ID列表，查询指定状态订单明细数据
     *
     * @param pkOrder         订单ID
     * @param pkOrderItemList 不包含的订单明细ID列表
     * @param orderStatusList 订单状态列表
     * @param pkCountry       国家ID
     * @return
     */
    List<SaDeliverItems> queryDeliverItemsByOrder(Long pkOrder,
                                                  List<Long> pkOrderItemList,
                                                  List<Integer> orderStatusList,
                                                  Integer pkCountry);

    /*
     * @description: 查询订单是否绑定追溯码
     * @author: sui q
     * @date: 2023/7/21 17:02
     * @param: null null
     **/
    Boolean validateOrderBindBarCode(String orderCode, List<Long> itemIdList);

    /*
     * @description: 删除发货单
     * @author: sui q
     * @date: 2023/9/14 15:47
     * @param: null null
     **/
    void deleteSaDeliverItems(Long pkOrder, List<Long> pkOrderItemsList);

}
