using Azure.Storage.Blobs.Models;
using DS.Module.Core;
using DS.Module.Core.Attributes;
using DS.Module.Core.Data;
using DS.Module.DjyServiceStatus;
using DS.WMS.Core.Op.Dtos;
using DS.WMS.Core.Op.Interface;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Owin.Security.Provider;
using Org.BouncyCastle.Crypto;
using SqlSugar;
namespace DS.WMS.OpApi.Controllers
{
///
/// 舱位管理
///
public class BookingSlotServiceController : ApiController
{
private readonly IBookingSlotService _bookingSlotService;
private readonly IBookingSlotStockService _bookingSlotStockService;
///
///
///
///
public BookingSlotServiceController(IBookingSlotService bookingSlotService, IBookingSlotStockService bookingSlotStockService)
{
_bookingSlotService = bookingSlotService;
_bookingSlotStockService = bookingSlotStockService;
}
#region 舱位接收保存、取消接口
///
/// 舱位接收保存、取消接口
///
/// 请求详情(JSON)
/// BC附件
/// BC修改附件
///
[HttpPost]
[Route("ApiReceive")]
public async Task> ApiReceive(string jsonData, IFormFile file = null, IFormFile modifyFile = null)
{
return await _bookingSlotService.ApiReceive(jsonData, null, null);
}
#endregion
#region 获取舱位详情
///
/// 获取舱位详情
///
/// 舱位ID
/// 返回详情
[HttpGet]
[Route("Detail")]
public async Task> Detail([FromQuery] long id)
{
return await _bookingSlotService.Detail(id);
}
#endregion
#region 查询可用的舱位及箱子列表
///
/// 分页查询可用的舱位及箱子列表
///
/// 可选:舱位查询条件
/// 可选:分页信息
/// 可用的舱位列表(含可用的箱子列表)
[HttpGet]
[Route("GetAvailableSlots")]
public async Task>> GetAvailableSlots([FromQuery] BookingSlotBaseDto input,
[FromQuery] PageWithTotal pageInfo)
{
return await _bookingSlotService.GetAvailableSlots(input, pageInfo);
}
#endregion
#region 检查指定订舱记录,是否可以引入舱位列表
///
/// 检查指定订舱记录,是否可以引入舱位列表
///
/// 待引入的舱位列表
/// 返回回执
[HttpPost]
[Route("CheckImportSlots")]
public async Task CheckImportSlots([FromBody] List slots)
{
return null;//await _bookingSlotService.CheckImportSlots(slots, 0);
}
#endregion
#region 为指定订舱记录引入舱位信息
///
/// 为指定订舱记录引入舱位信息
///
/// 引入舱位参数
/// (是否成功,提示消息)
[HttpPost]
[Route("ImportSlots")]
public async Task> ImportSlots([FromBody] ImportSlotsDto model)
{
return await _bookingSlotService.ImportSlots(model);
}
#endregion
#region 舱位库存台账
///
/// 舱位库存台账
///
/// 请求参数
/// 返回列表
[HttpPost]
[Route("PageStock")]
public async Task>> PageStock([FromBody] PageRequest querySearch)
{
return await _bookingSlotService.GetPageStockAsync(querySearch);
}
#endregion
#region 舱位库存刷新
///
/// 舱位库存刷新
///
/// 请求参数
/// 返回列表
[HttpPost]
[Route("RefreshStock")]
public async Task> RefreshStock([FromBody] BookingSlotStockUpdateModel input)
{
return await _bookingSlotService.RefreshStock(input);
}
#endregion
#region 保存舱位
///
/// 保存舱位
///
/// 舱位详情
/// 返回输出
[HttpPost]
[Route("Save")]
public async Task> Save([FromBody] BookingSlotBaseSaveInput input)
{
return await _bookingSlotService.Save(input);
}
#endregion
#region 获取附件
///
/// 获取附件
///
/// 舱位主键
/// 返回附件列表
[HttpGet]
[Route("GetFile")]
public async Task>> GetFile([FromQuery] long id)
{
return await _bookingSlotService.GetFile(id);
}
#endregion
#region 分页查询订舱舱位
///
/// 舱位台账查询
///
/// 查询条件
///
[HttpPost]
[Route("GetPage")]
public async Task>> GetPageAsync(PageRequest querySearch)
{
return await _bookingSlotService.GetPageAsync(querySearch);
}
#endregion
#region 获取舱位变更比对结果
///
/// 获取舱位变更比对结果
///
/// 舱位主键
/// 批次号
/// 返回舱位变更比对结果
[HttpGet]
[Route("GetSlotCompareResult")]
public async Task>> GetSlotCompareResult([FromQuery] long id, [FromQuery] string batchNo)
{
return await _bookingSlotService.GetSlotCompareResult(id, batchNo);
}
#endregion
#region 导入舱位
///
/// 导入舱位
///
/// 导入舱位文件
/// 返回回执
[HttpPost]
[Route("ImportSlotFromFile")]
public async Task>> ImportSlotFromFile(IFormFile file)
{
return await _bookingSlotService.ImportSlotFromFile(file);
}
#endregion
#region 生成订舱订单
///
/// 生成订舱订单
///
/// 生成订舱订单请求
/// 返回回执
[HttpPost]
[Route("CreateBookingOrder")]
public async Task> CreateBookingOrder([FromBody] BookingGenerateDto model)
{
return await _bookingSlotService.CreateBookingOrder(model);
}
#endregion
#region 检索舱位对应的订舱订单(BY 舱位主键)
///
/// 检索舱位对应的订舱订单(BY 舱位主键)
///
///
/// 返回回执
[HttpGet]
[Route("SearchBookingSlotWithOrderById")]
public async Task> SearchBookingSlotWithOrderById([FromQuery] long id)
{
return await _bookingSlotService.SearchBookingSlotWithOrderById(id);
}
#endregion
#region 检索舱位对应的订舱订单(BY 订舱编号)
///
/// 检索舱位对应的订舱订单(BY 订舱编号)
///
/// 订舱编号
/// 租户ID
/// 返回回执
[HttpGet]
[Route("SearchBookingSlotWithOrderByNo")]
public async Task> SearchBookingSlotWithOrderByNo([FromQuery] string slotBookingNo, [FromQuery] long tenantId)
{
return await _bookingSlotService.SearchBookingSlotWithOrderByNo(slotBookingNo, tenantId);
}
#endregion
#region 请求BC比对
///
/// 请求BC比对
///
/// BC详情
/// 返回回执
[HttpPost]
[Route("ExcuteCompare")]
public async Task> ExcuteCompare([FromBody] ParserBCInfoDto bcSrcDto)
{
return null;// await _bookingSlotService.ExcuteCompare(bcSrcDto, null);
}
#endregion
#region 推送BC变更比对
///
/// 推送BC变更比对
///
/// 原舱位详情
///
[HttpPost]
[Route("PushCompareBCInfo")]
public async Task> PushCompareBCInfo([FromBody] ParserBCInfoDto bcSrcDto)
{
return null;// _bookingSlotService.PushCompareBCInfo(bcSrcDto, null, 0, "");
}
#endregion
#region 估算差异重要提醒
///
/// 估算差异重要提醒
///
/// 原舱位详情
/// 新舱位详情
/// 舱位ID
///
[HttpPost]
[Route("MeasureDiffCautionTask")]
public async Task MeasureDiffCautionTask([FromBody] ParserBCInfoDto bcSrcDto)
{
return await _bookingSlotService.MeasureDiffCautionTask(bcSrcDto, null, 0);
}
#endregion
#region 订舱编号检索舱位信息
///
/// 订舱编号检索舱位信息
///
/// 订舱编号
/// 船公司ID
///
[HttpGet("QueryBookingSlot")]
[ApiUser(ApiCode = "BCTaskManage"), AllowAnonymous]
public async Task> QueryBookingSlot([FromQuery] string slotBookingNo, [FromQuery] string CarrierId)
{
return await _bookingSlotService.QueryBookingSlot(slotBookingNo, CarrierId);
}
#endregion
#region 获取舱位详情列表
///
/// 获取舱位详情列表
///
/// 舱位ID组
/// 返回舱位详情
[HttpPost]
[Route("GetSlotList")]
public async Task>> GetSlotList([FromBody] long[] ids)
{
return await _bookingSlotService.GetSlotList(ids);
}
#endregion
#region 获取合票详情(生成合票需要先调此方法)
///
/// 获取合票详情(生成合票需要先调此方法)
///
///
///
[HttpPost]
[Route("GetMergeList")]
public async Task> GetMergeList([FromBody] QueryMergeSlotDto model)
{
return await _bookingSlotService.GetMergeList(model);
}
#endregion
#region 生成合票订舱订单
///
/// 生成合票订舱订单
///
/// 生成订舱订单请求
/// 返回回执
[HttpPost]
[Route("MergeCreateBookingOrder")]
public async Task> MergeCreateBookingOrder([FromBody] BookingGenerateDto model)
{
return await _bookingSlotService.MergeCreateBookingOrder(model);
}
#endregion
#region 作废舱位(可以批量)
///
/// 作废舱位(可以批量)
///
/// 舱位主键数组
/// 返回回执
[HttpPost]
[Route("Delete")]
public async Task Delete([FromBody] long[] ids)
{
return await _bookingSlotService.Delete(ids);
}
#endregion
#region 查询指定舱位可用的箱子列表
///
/// 查询指定舱位可用的箱子列表
///
/// 舱位主键
/// 可用的箱子列表
[HttpGet]
[Route("GetAvailableCtnsBySlot")]
public async Task>> GetAvailableCtnsBySlot(long slotId)
{
return await _bookingSlotService.GetAvailableCtnsBySlot(slotId);
}
#endregion
#region 导出舱位为Excel
///
/// 导出舱位为Excel
///
/// 请求参数
/// 返回文件链接
[HttpPost]
[Route("ExportOrder")]
public async Task> ExportOrder([FromBody] PageRequest querySearch)
{
return await _bookingSlotService.ExportOrder(querySearch);
}
#endregion
#region 获取现舱位查询
///
/// 获取现舱位查询
///
/// 查询条件
///
[HttpPost]
[Route("GetAvailableBookingSlots")]
public async Task>> GetAvailableBookingSlots([FromBody] PageRequest querySearch)
{
return await _bookingSlotService.GetAvailableBookingSlots(querySearch);
}
#endregion
#region 引入现舱关联海运出口
///
/// 引入现舱关联海运出口
///
/// 请求参数
///
[HttpPost]
[Route("BringInBookingSlotToOrder")]
public async Task> BringInBookingSlotToOrder([FromBody] BringInBookingSlotReq model)
{
return await _bookingSlotService.BringInBookingSlotToOrder(model);
}
#endregion
#region 获取舱位用途配置列表
///
/// 获取舱位用途配置列表
///
///
[HttpGet]
[Route("GetSlotUseToConfig")]
public async Task>> GetSlotUseToConfig()
{
return await _bookingSlotService.GetSlotUseToConfig();
}
#endregion
#region 重新计算某租户下面所有的库存
///
/// 重新计算某租户下面所有的库存
///
///
[HttpGet]
[Route("RefreshAllStock")]
public async Task RefreshAllStock()
{
await _bookingSlotStockService.RefreshAllStock();
}
#endregion
#region 重新计算单个统计库存
///
/// 重新计算单个统计库存
///
/// 计算范围
/// 返回回执
[HttpPost]
[Route("CalcBookingSlotStock")]
public async Task> CalcBookingSlotStock([FromBody] BookingSlotStockUpdateModel model)
{
return await _bookingSlotStockService.BookingSlotStock(model);
}
#endregion
}
}