using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using XYY.Api.Order.Model.Order;
using XYY.Common.Standard;
using XYY.Data.Standard.Order;
using XYY.Model.Standard.Channel;
using XYY.Model.Standard.Dto.order;
using XYY.Model.Standard.Order;
using XYY.Service.Standard.ChannelApi.Base;

namespace XYY.Service.Standard.Order
{
    public interface IOrderService
    {

        Task UpdateLastInfo(Order_Order order);

        Task<PageResult<BagDeclareLog>> GetBagDeclareLogs(QueryModel queryModel);
        Task<UploadResult> DataUpload(Order_Order order, List<Order_OrderGoods> goods, Logistics_Channel channel, ExtendArg arg);
        Task<string> DrawPdfLabel(UploadResult result, Logistics_Channel channel, Order_Order order, List<Order_OrderGoods> goods);
        Task THInputOrder(Stream stream);
        Task ImportPPXFba(Stream stream);
        Task OrderConfim(int qty);
        Task BagConfim();
        Task BagConfimWithAwb(string ladingBillNumber);
        Task<IEnumerable<SysWarehouseFileLog>> GetWaitDownFile(int qty = 200);
        Task UpdateDownFile(List<SysWarehouseFileLog> transfernums);
        Task<PageResult<View_QueryOverCancelOrders>> QueryOverCancelOrders(QueryModel queryModel);
        Task CustomerConfim(int qty);

        Task CancelOrders(List<string> SystemNos, Logistics_Channel channel);
        /// <summary>
        /// 改为mq执行，这里的方法暂不使用
        /// </summary>
        /// <param name="SystemNoStr"></param>
        /// <returns></returns>
        Task CancelOrdersByNoStr(List<string> SystemNoStr);
        Task<List<dynamic>> GetZZESBUpdateData(string lading);
        Task<bool> AsyncServiceTrackingNumber(int qty);
        /// <summary>
        /// 获取已装箱订单Id
        /// 获取一批订单内的已装箱及之后状态的订单Id
        /// </summary>
        /// <param name="SystemNos"></param>
        /// <returns></returns>
        Task<List<string>> GetPackingOrderId(List<string> SystemNos);
        Task ReBagDeclare(string laddingBillNumber, string serviceCode);

        Task<List<BagDeclareErrosResult>> GetBagDeclareError(string laddingBillNumber, string serviceCode);

        Task<List<IBBagLabbelResult>> GetIBBagLabel(List<int> boxIds);
        Task CancelIBBagLabel(List<int> boxIds);


        Task<PageResult<CustomerOrder>> GetOrderPager(QueryModel queryModel);
        Task<List<OrderQtys>> GetOrderQty(QueryModel qm);
        Task<CustomerOrder> Get(int id);
        Task<CustomerOrder> GetCustomerDraftOrder(int id);
        Task<List<CustomerOrder>> GetCustomerOrderList(QueryModel queryModel);

        Task<List<Order_OrderGoods>> GetGoods(int orderId);
        Task<List<string>> ConfimChannelOrders(List<string> numbers, string serviceCode);
        Task ConfimChannelOrdersByBox(List<int> boxIds); 
    }
}
