using DS.Module.Core;
using DS.Module.Core.Data;
using DS.Module.DjyServiceStatus;
using DS.WMS.Core.Op.Dtos;
using DS.WMS.Core.Op.Entity;
using DS.WMS.Core.TaskPlat.Dtos;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;
namespace DS.WMS.Core.TaskPlat.Interface
{
public interface ITaskManageBCService
{
///
/// 通过任务信息(BC)生成订舱或舱位
///
/// 生成订舱或者舱位请求
/// 返回回执
Task> CreateBookingAndSlot(BookingOrSlotGenerateDto model);
///
/// 通过任务主键获取BC详情
///
/// BC任务主键
Task> GetInfoByTaskId(long taskId);
///
/// 获取当前比对结果
///
/// BC任务主键
/// 返回回执
Task>> GetCompareResult(long taskId);
///
/// 同步舱位变更
///
/// BC任务主键
/// 返回回执
Task SyncBookingSlotChange(long taskPKId);
///
/// 同步舱位变更(任务自动)
///
/// 上下文
/// 返回回执
Task SyncBookingSlotChangeTask(TaskFlowDataContext dataContext);
///
/// 对比BC与海运出口订单
///
Task> CompareBcWithSeaExportTask(TaskFlowDataContext dataContext);
///
/// 读取BC详情
///
/// 船公司代码
/// BC文件
/// 返回解析详情
Task> GetReadBC(string carrierCode, IFormFile file);
///
/// 读取BC擦写后文件流
///
/// 船公司代码
/// BC文件
/// 返回解析详情
Task> GetModifyBCFile(string carrierCode, IFormFile file);
///
/// 通过BC任务匹配订单(任务台使用)
///
Task> BcMatchSeaExportTask(TaskFlowDataContext dataContext);
///
/// 上传BC文件并触发执行BC任务
///
/// 船公司代码
/// 任务主键
/// BC文件
Task UploadBcThenRunTask(string carrierCode, long taskId, IFormFile file);
///
/// 结束BC任务并创建下一步任务
///
Task BCTaskCompleteThenNext(TaskFlowDataContext dataContext);
///
/// BC更新海运出口订单信息
///
Task BCUpdateOrderInfo(TaskFlowDataContext dataContext);
///
/// 发送邮件通知给客户
///
/// BC变更任务主键
/// 邮件模板主键
/// 返回回执
Task> InnerSendEmailToCustomer(long taskPKId, long businessTaskMailId);
///
/// 发送邮件通知给客户(任务自动机调取)
///
/// 数据上下文
/// 返回回执
Task> SendEmailToCustomerTask(TaskFlowDataContext dataContext);
///
/// 手工发送邮件通知给客户
///
/// BC变更任务主键
/// 返回回执
Task> ManualSendEmailToCustomer(long taskPKId);
}
}