using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Myshipping.Core;
using NPOI.POIFS.Crypt.Dsig;
using NPOI.SS.Formula.Functions;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Myshipping.Application
{
///
///
///
public interface ITaskManageService
{
///
/// 创建任务
///
/// 任务详情
/// 返回回执
Task CreateTaskJob(TaskManageOrderMessageInfo info);
///
/// 撤销任务
///
/// 任务详情
/// 返回回执
Task CancelTaskJob(TaskManageOrderMessageInfo info);
///
/// 获取查询参数
///
/// 参数类型 STATUS-任务状态;TASK_TYPE-任务类型;SOURCE-任务来源
/// 返回回执
Task GetParaInfo(string ParaType);
///
/// 获取登陆人相关的任务统计信息
///
/// 是否强制计算
/// 返回回执
Task GetCurrentTotalStat(bool isReCalc = false);
///
/// 任务台账查询
///
/// 任务台账查询请求
/// 返回结果
Task> GetPageAsync(QueryTaskManageDto QuerySearch);
///
/// 下载正本提单
///
/// 任务主键数组
/// 返回结果
Task DownloadOriginalTask(string[] PKIds);
///
/// 完成任务(可批量)
///
/// 任务主键数组
/// 返回结果
Task CompleteTask(string[] PKIds);
///
/// 取消任务(可批量)
///
/// 任务主键数组
/// 返回结果
Task CancelTask(string[] PKIds);
///
/// 挂起任务(可批量)
///
/// 任务主键数组
/// 返回结果
Task PendingTask(string[] PKIds);
///
/// 提单纸页数计算
///
/// 任务主键数组
/// 返回结果
Task> LaraPaperCalc(string[] PKIds);
///
/// LARA提单纸登记
///
/// 任务主键数组
/// 返回结果
Task LaraPaperRegist(string[] PKIds);
///
/// 请求提单纸登记
///
/// 提单纸登记请求参数列表
/// 返回结果
Task LaraPaperRegistPost(List laraPaperList);
///
/// 下载任务附件
///
///
/// 返回文件流
Task DownloadTaskAttach(string taskPKId);
///
/// 正本附件批量打印
///
/// 任务主键数组
/// 返回文件流
Task PrintBatch(string[] PKIds);
///
/// 接收换船
///
/// 任务主键
/// 返回结果
Task AcceptChangeShip(string taskPKId);
///
/// 取消换船
///
/// 任务主键
/// 返回结果
Task AcceptCancelChangeShip(string taskPKId);
///
/// 转发电放邮件
///
/// 任务主键
/// 指定邮件地址
/// 返回结果
Task SendTelexEmail(string taskPKId, string toMail);
///
/// 发送下货纸
///
/// 任务主键
/// 文件功能 (9原始)
/// 返回结果
Task SendShippingOrder(string taskPKId, string fileRole = "9");
///
/// 获取订舱详情
///
/// 任务主键
/// 返回结果
Task GetBookingOrderInfo(string taskPKId);
///
/// 获取单票账单详情
///
/// 任务主键
/// 返回结果
Task GetTaskPerBillInfo(string taskPKId);
///
/// 获取提单纸登记记录
///
/// 查询条件
/// 返回结果
Task> GetLaraPaperRecordPageAsync(QueryTaskManageBaseDto querySearch);
///
/// 导出LARA提单纸登记记录
///
/// 排序字段
/// 当前页码
/// 页码容量
/// 排序方法,默认降序
/// 返回结果
Task LaraPaperRecordExport(string sortField, int pageNo = 1, int pageSize = 30, bool descSort = true);
///
/// 保存SI信息
///
/// 订舱信息
/// 返回结果
Task SaveBookingSI(TaskBookingOrderDto model);
///
/// 获取SI反馈信息
///
/// 任务主键
/// 返回结果
Task GetSIFeedBackInfo(string taskPKId);
///
/// 获取VGM比较结果
///
/// 任务主键
/// 返回结果
Task GetVGMCompareResult(string taskPKId);
///
/// 更新订舱(VGM比较更新)
///
/// 任务主键
/// 返回结果
Task SaveBookingVGM(string taskPKId);
///
/// 获取换船详情
///
/// 任务主键
/// 返回结果
Task GetChangeShipInfo(string taskPKId);
///
/// 获取取消换船详情
///
/// 任务主键
/// 返回结果
Task GetAbortChangeShipInfo(string taskPKId);
///
/// 手工批量重新比对BC
///
/// 任务主键数组
/// 返回结果
Task ManualReCompareBC(string[] PKIds);
///
/// 下载截单EDI
///
/// 任务主键
/// 订单号
/// 是否使用货代代码
/// 货代代码
/// 货代称呼
/// 文件功能 (9原始,1 更新,5 退舱 )
/// 发送类型 B-订舱 E-截单
///
Task DownloadClosingEDI(string taskPKId, string orderNo, bool useForwarderCode,
string forwarderCode, string forwarderName, string fileRole, string sendType);
///
/// 发送截单EDI
///
/// 任务主键
/// 订单号
/// 是否使用货代代码
/// 货代代码
/// 货代称呼
/// 文件功能 (9原始,1 更新,5 退舱 )
/// 发送类型 E-截单
/// 返回结果
Task SendClosingEDI(string taskPKId, string orderNo, bool useForwarderCode,
string forwarderCode, string forwarderName, string fileRole, string sendType);
///
/// 计算LARA纸计算页数
///
/// 请求LARA纸详情
/// 返回结果
Task> CalcLaraPageNumbers(CalcLaraPageNumbersDto model);
///
/// 创建BC任务
///
/// 文件
/// BC变更内容后文件
/// BC任务详情JSON
/// 返回回执
Task CreateBCTaskJob(IFormFile file, IFormFile modifyFile, string jsonData);
///
/// 获取任务列表
///
/// 查询条件
/// 返回结果
//Task> GetTaskList(QueryTaskManageDto queryTaskManageDto);
///
/// 创建DRAFT任务
///
/// 文件
/// BC变更内容后文件
/// BC任务详情JSON
/// 返回回执
Task CreateDRAFTTaskJob(IFormFile file, IFormFile modifyFile, string jsonData);
///
/// 创建截单回执任务
///
/// 文件
/// 截单回执变更内容后文件
/// 截单回执任务详情JSON
/// 返回回执
Task CreateSISubmittedTaskJob(IFormFile file, IFormFile modifyFile, string jsonData);
///
/// 创建Advisory任务
///
/// 文件
/// Advisory任务详情JSON
/// 返回回执
Task CreateAdvisoryTaskJob(IFormFile file, IFormFile modifyFile, string jsonData);
}
}