using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_DTO.CalcOut;
namespace WIDESEA_WMSServer.Controllers.Outbound
{
[Route("api/[controller]")]
[ApiController]
public class OutboundController : ControllerBase
{
private readonly WIDESEA_IOutboundService.IOutboundService _outboundService;
public OutboundController(WIDESEA_IOutboundService.IOutboundService outboundService)
{
_outboundService = outboundService;
}
///
/// 分拣出库操作
///
/// 分拣出库请求
/// 分拣出库响应
[HttpPost, Route("ProcessPickingOutbound"), AllowAnonymous]
public WebResponseContent ProcessPickingOutbound([FromBody] PickingOutboundRequestDTO request)
{
try
{
if (!ModelState.IsValid)
return WebResponseContent.Instance.Error(string.Join("; ", ModelState.Values
.SelectMany(v => v.Errors)
.Select(e => e.ErrorMessage)));
return _outboundService.ProcessPickingOutbound(request);
}
catch (Exception ex)
{
return WebResponseContent.Instance.Error($"分拣出库操作失败: {ex.Message}");
}
}
object lockObj = new object();
[HttpPost, Route("CompleteOutboundWithBarcode"), AllowAnonymous]
public WebResponseContent CompleteOutboundWithBarcode([FromBody] OutboundCompleteRequestDTO request)
{
try
{
lock (lockObj)
{
if (!ModelState.IsValid)
return WebResponseContent.Instance.Error(string.Join("; ", ModelState.Values
.SelectMany(v => v.Errors)
.Select(e => e.ErrorMessage)));
return _outboundService.CompleteOutboundWithBarcode(request);
}
}
catch (Exception ex)
{
return WebResponseContent.Instance.Error($"出库扫描操作失败: {ex.Message}");
}
}
[HttpPost, Route("CompleteOutboundWithPallet"), AllowAnonymous]
public WebResponseContent CompleteOutboundWithPallet([FromBody] OutboundCompletePalletRequestDTO request)
{
try
{
lock (lockObj)
{
if (!ModelState.IsValid)
return WebResponseContent.Instance.Error(string.Join("; ", ModelState.Values
.SelectMany(v => v.Errors)
.Select(e => e.ErrorMessage)));
return _outboundService.CompleteOutboundWithPallet(request);
}
}
catch (Exception ex)
{
return WebResponseContent.Instance.Error($"整箱出库操作失败: {ex.Message}");
}
}
[HttpPost,HttpGet, Route("GetOrderInfo"), AllowAnonymous]
public WebResponseContent GetOrderInfo(string orderNo)
{
return _outboundService.GetOrderInfo(orderNo);
}
[HttpPost, Route("QueryPickingTasks"), AllowAnonymous]
public WebResponseContent QueryPickingTasks(string palletCode, string orderNo)
{
return _outboundService.QueryPickingTasks(palletCode, orderNo);
}
[HttpPost, Route("QueryPickedList"), AllowAnonymous]
public WebResponseContent QueryPickedList(string orderNo, string palletCode)
{
return _outboundService.QueryPickedList(orderNo, palletCode);
}
[HttpPost, Route("EmptyBox"), AllowAnonymous]
public async Task EmptyBox([FromBody] ReturnToWarehouseDTO returnToWarehouse)
{
return await _outboundService.EmptyBox(returnToWarehouse.palletCode);
}
[HttpPost, Route("ReturnToWarehouse"), AllowAnonymous]
public async Task ReturnToWarehouse([FromBody]ReturnToWarehouseDTO returnToWarehouse)
{
return await _outboundService.ReturnToWarehouse(returnToWarehouse.palletCode, returnToWarehouse.orderNo, returnToWarehouse.station);
}
[HttpPost, Route("RecheckPicking"), AllowAnonymous]
public WebResponseContent RecheckPicking([FromBody] RecheckPickingDTO pickingDTO)
{
return _outboundService.RecheckPicking(pickingDTO);
}
}
}