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 Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DS.WMS.Core.Op.Interface { /// /// 舱位管理 /// public interface IBookingSlotService { /// /// 舱位接收保存、取消接口 /// /// 请求详情(JSON) /// BC附件 /// BC修改附件 /// Task> ApiReceive(string jsonData, IFormFile file = null, IFormFile modifyFile = null); /// /// 舱位接收保存、取消接口(任务台使用) /// Task> ApiReceiveTask(TaskFlowDataContext dataContext); /// /// 获取舱位详情 /// /// 舱位ID /// 返回详情 Task> Detail(long id); // /// 分页查询可用的舱位及箱子列表 /// /// 可选:舱位查询条件 /// 可选:分页信息 Task>> GetAvailableSlots(BookingSlotBaseDto input, PageWithTotal pageInfo); /// /// 查询可用的舱位及箱子列表 /// /// 筛选条件1:舱位信息、箱型 /// 筛选条件2:舱位主键列表 /// 筛选条件3:分页 /// 可用的舱位列表(含可用的箱子列表) Task>> GetAvailableSlots(BookingSlotBaseDto slotInput = null, List slotIdListInput = null, PageWithTotal pageInfo = null); /// /// 检查指定订舱记录,是否可以引入舱位列表 /// /// 待引入的舱位列表 /// 待关联的订舱记录 /// (指定订舱记录是否已经引入过舱位数据,现有舱位及箱子是否满足需求,提示信息) Task<(bool isExists, bool isEnough, string message)> CheckImportSlots(List slots, long bookingOrderId); /// /// 为指定订舱记录引入舱位信息 /// /// 引入的舱位请求参数 /// (是否成功,提示消息) Task> ImportSlots(ImportSlotsDto model); /// /// 库存台账查询 /// /// 查询条件 /// Task>> GetPageStockAsync(PageRequest querySearch); /// /// 刷新库存 /// /// 请求参数 /// 返回回执 Task> RefreshStock(BookingSlotStockUpdateModel input); /// /// 保存舱位 /// /// 舱位详情 /// 返回输出 Task> Save(BookingSlotBaseSaveInput input); /// /// 获取附件 /// /// 舱位主键 /// 返回附件列表 Task>> GetFile(long id); /// /// 舱位台账查询 /// /// 查询条件 /// Task>> GetPageAsync(PageRequest querySearch); /// /// 舱位接收保存、取消接口 /// /// /// /// /// Task> InnerApiReceive(BookingSlotBaseApiDto dto, DynameFileInfo file = null, DynameFileInfo modifyFile = null); /// /// 获取舱位变更比对结果 /// /// 舱位主键 /// 批次号 /// 返回舱位变更比对结果 Task>> GetSlotCompareResult(long id, string batchNo); /// /// 导入舱位 /// /// 导入舱位文件 /// 返回回执 Task>> ImportSlotFromFile(IFormFile file); /// /// 生成订舱订单 /// /// 生成订舱订单请求 /// 返回回执 Task> CreateBookingOrder(BookingGenerateDto model); /// /// 检索舱位对应的订舱订单(BY 舱位主键) /// /// /// 返回回执 Task> SearchBookingSlotWithOrderById(long id); /// /// 检索舱位对应的订舱订单(BY 订舱编号) /// /// 订舱编号 /// 租户ID /// 返回回执 Task> SearchBookingSlotWithOrderByNo(string slotBookingNo, long tenantId); /// /// 请求BC比对 /// /// BC详情 /// BC变更后详情 /// 返回回执 Task> ExcuteCompare(ParserBCInfoDto bcSrcDto, ParserBCInfoDto bcTargetDto); /// /// 推送BC变更比对 /// /// 原舱位详情 /// 变更后舱位详情 /// 舱位主键 /// 请求批次号用来区分对应的哪个批次任务 /// Task> PushCompareBCInfo(ParserBCInfoDto bcSrcDto, ParserBCInfoDto bcTargetDto, long slotId, string reqBatchNo); /// /// 估算差异重要提醒 /// /// 原舱位详情 /// 新舱位详情 /// 舱位ID /// Task MeasureDiffCautionTask(ParserBCInfoDto bcSrcDto, ParserBCInfoDto bcTargetDto, long slotId); /// /// 订舱编号检索舱位信息 /// /// 订舱编号 /// 船公司ID /// Task> QueryBookingSlot(string slotBookingNo, string CarrierId); /// /// 获取舱位详情列表 /// /// 舱位ID组 /// 返回舱位详情 Task>> GetSlotList(long[] ids); /// /// 获取合票详情(生成合票需要先调此方法) /// /// /// Task> GetMergeList(QueryMergeSlotDto model); /// /// 生成合票订舱订单 /// /// 生成订舱订单请求 /// 返回回执 Task> MergeCreateBookingOrder(BookingGenerateDto model); /// /// 导出舱位为Excel /// /// 请求参数 /// Task> ExportOrder(PageRequest querySearch); /// /// 作废舱位(可以批量) /// /// 舱位主键数组 /// 返回回执 Task Delete(long[] ids); /// /// 查询指定舱位可用的箱子列表 /// /// 舱位主键 /// 可用的箱子列表 Task>> GetAvailableCtnsBySlot(long slotId); /// /// 生成订舱 /// /// 舱位详情 /// 舱位附件列表 /// 订舱请求详情 /// 合票的主舱位提单号(合票时必传) /// 返回订舱ID Task GenerateBookingOrder(BookingSlotBase bookingSlotBase, List bookingSlotFileList, BookingGenerateDto generateModel, string masterBookingSlotNo); /// /// 获取现舱位查询 /// /// 查询条件 /// Task>> GetAvailableBookingSlots(PageRequest querySearch); /// /// 引入现舱关联海运出口 /// /// 请求参数 /// Task> BringInBookingSlotToOrder(BringInBookingSlotReq model); } }