|
|
using Furion.FriendlyException;
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using Myshipping.Application.Entity;
|
|
|
using Myshipping.Application.Event;
|
|
|
using Myshipping.Application.Service.BookingSlot.Dto;
|
|
|
using Myshipping.Core;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
namespace Myshipping.Application
|
|
|
{
|
|
|
public interface IBookingSlotService
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 舱位接收保存、取消接口
|
|
|
/// </summary>
|
|
|
/// <param name="jsonData">请求详情</param>
|
|
|
/// <param name="file">BC附件</param>
|
|
|
/// <param name="modifyFile">BC变更附件</param>
|
|
|
/// <returns></returns>
|
|
|
Task<TaskManageOrderResultDto> ApiReceive(string jsonData, IFormFile file = null, IFormFile modifyFile = null);
|
|
|
|
|
|
Task<BookingSlotBaseSaveOutput> Detail(long id);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 查询可用的舱位及箱子列表
|
|
|
/// </summary>
|
|
|
/// <param name="slotInput">筛选条件1:舱位信息、箱型</param>
|
|
|
/// <param name="slotIdListInput">筛选条件2:舱位主键列表</param>
|
|
|
/// <param name="pageInfo">筛选条件3:分页</param>
|
|
|
/// <returns>可用的舱位列表(含可用的箱子列表)</returns>
|
|
|
Task<List<BookingSlotBaseWithCtnDto>> GetAvailableSlots(BookingSlotBaseDto slotInput = null,
|
|
|
List<long> slotIdListInput = null,
|
|
|
PageWithTotal pageInfo = null);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 检查指定订舱记录,是否可以引入舱位列表
|
|
|
/// </summary>
|
|
|
/// <param name="slots">待引入的舱位列表</param>
|
|
|
/// <param name="bookingOrderId">待关联的订舱记录</param>
|
|
|
/// <returns>(指定订舱记录是否已经引入过舱位数据,现有舱位及箱子是否满足需求,提示信息)</returns>
|
|
|
Task<(bool isExists, bool isEnough, string message)> CheckImportSlots(List<BookingSlotBaseWithCtnDto> slots, long bookingOrderId);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 为指定订舱记录引入舱位信息
|
|
|
/// </summary>
|
|
|
/// <param name="slots">待引入的舱位列表</param>
|
|
|
/// <param name="bookingOrderId">待关联的订舱记录</param>
|
|
|
/// <param name="isCheck">是否进行剩余量检查</param>
|
|
|
/// <param name="generateModel">额外的用于生成管理记录的信息</param>
|
|
|
/// <returns>(是否成功,提示消息)</returns>
|
|
|
Task<(bool isSuccess, string message)> ImportSlots(List<BookingSlotBaseWithCtnDto> slots, long bookingOrderId, bool isCheck, BookingGenerateDto generateModel = null);
|
|
|
|
|
|
Task<dynamic> PageStock(BookingSlotStockPageInput input);
|
|
|
Task RefreshStock(BookingSlotStockUpdateModel input);
|
|
|
Task<BookingSlotBaseSaveOutput> Save(BookingSlotBaseSaveInput input);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取附件
|
|
|
/// </summary>
|
|
|
/// <param name="id">舱位主键</param>
|
|
|
/// <returns>返回附件列表</returns>
|
|
|
Task<List<BookingFile>> GetFile(long id);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 分页查询订舱舱位
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
Task<dynamic> Page(BookingSlotBasePageInput input);
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 舱位接收保存、取消接口
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <param name="file"></param>
|
|
|
/// <param name="modifyFile"></param>
|
|
|
/// <returns></returns>
|
|
|
Task<long> InnerApiReceive(BookingSlotBaseApiDto dto, DynameFileInfo file = null, DynameFileInfo modifyFile = null);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 获取舱位变更比对结果
|
|
|
/// </summary>
|
|
|
/// <param name="id">舱位主键</param>
|
|
|
/// <param name="batchNo">批次号</param>
|
|
|
/// <returns>返回舱位变更比对结果</returns>
|
|
|
Task<List<CompareResultDetailInfo>> GetSlotCompareResult(long id, string batchNo);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 导入舱位
|
|
|
/// </summary>
|
|
|
/// <param name="file">导入舱位文件</param>
|
|
|
/// <returns>返回回执</returns>
|
|
|
Task<TaskManageOrderResultDto> ImportSlotFromFile(IFormFile file);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 生成订舱订单
|
|
|
/// </summary>
|
|
|
/// <param name="model">生成订舱订单请求</param>
|
|
|
/// <returns>返回回执</returns>
|
|
|
Task<TaskManageOrderResultDto> CreateBookingOrder(BookingGenerateDto model);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 检索舱位对应的订舱订单(BY 舱位主键)
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns>返回回执</returns>
|
|
|
|
|
|
Task<BookingSlotWithOrderDto> SearchBookingSlotWithOrderById(long id);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 检索舱位对应的订舱订单(BY 订舱编号)
|
|
|
/// </summary>
|
|
|
/// <param name="slotBookingNo">订舱编号</param>
|
|
|
/// <param name="tenantId">租户ID</param>
|
|
|
/// <returns>返回回执</returns>
|
|
|
|
|
|
Task<BookingSlotWithOrderDto> SearchBookingSlotWithOrderByNo(string slotBookingNo, long tenantId);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 请求BC比对
|
|
|
/// </summary>
|
|
|
/// <param name="bcSrcDto">BC详情</param>
|
|
|
/// <param name="bcTargetDto">BC变更后详情</param>
|
|
|
/// <returns>返回回执</returns>
|
|
|
Task<TaskManageExcuteResultDto> ExcuteCompare(TaskBCInfoDto bcSrcDto, TaskBCInfoDto bcTargetDto);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 推送BC变更比对
|
|
|
/// </summary>
|
|
|
/// <param name="bcSrcDto">原舱位详情</param>
|
|
|
/// <param name="bcTargetDto">变更后舱位详情</param>
|
|
|
/// <param name="slotId">舱位主键</param>
|
|
|
/// <param name="reqBatchNo">请求批次号用来区分对应的哪个批次任务</param>
|
|
|
/// <returns></returns>
|
|
|
Task PushCompareBCInfo(TaskBCInfoDto bcSrcDto, TaskBCInfoDto bcTargetDto, long slotId, string reqBatchNo);
|
|
|
|
|
|
/// <summary>
|
|
|
/// 估算差异重要提醒
|
|
|
/// </summary>
|
|
|
/// <param name="bcSrcDto">原舱位详情</param>
|
|
|
/// <param name="bcTargetDto">新舱位详情</param>
|
|
|
/// <param name="slotId">舱位ID</param>
|
|
|
/// <returns></returns>
|
|
|
Task MeasureDiffCautionTask(TaskBCInfoDto bcSrcDto, TaskBCInfoDto bcTargetDto, long slotId);
|
|
|
}
|
|
|
} |