using Autofac.Core;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.Attributes;
using WIDESEA_Core.BaseController;
using WIDESEA_Core.CodeConfigEnum;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Outbound;
using WIDESEA_IOutboundService;
using WIDESEA_Model.Models;
using WIDESEA_WMSServer.Controllers.Inbound;
namespace WIDESEA_WMSServer.Controllers.Outbound
{
///
/// 出库单
///
[Route("api/OutboundOrder")]
[ApiController]
public class OutboundOrderController : ApiBaseController
{
private readonly ILogger _logger;
public OutboundOrderController(IOutboundOrderService service, ILogger logger) : base(service)
{
_logger = logger;
}
///
/// 接收MES出库单信息
///
///
///
[HttpPost, Route("ReceiveOutBoundOrder"), AllowAnonymous, MethodParamsValidate]
public async Task ReceiveOutBoundOrder([FromBody] OutboundRequestModel model)
{
_logger.LogInformation("OutboundOrderController ReceiveOutBoundOrder: " + JsonConvert.SerializeObject(model));
Dt_OutboundOrder dt_OutboundOrder = new Dt_OutboundOrder() { Details = new List() };
foreach (var detailitem in model.details)
{
Dt_OutboundOrderDetail inboundOrderDetail = new Dt_OutboundOrderDetail()
{
lineNo = detailitem.lineNo,
MaterielCode = detailitem.materialCode,
SupplyCode = detailitem.supplyCode,
BatchNo = detailitem.batchNo,
Unit = detailitem.unit,
WarehouseCode = detailitem.warehouseCode,
MoveQty = detailitem.moveQty,
BarcodeMoveQty=detailitem.moveQty,
BarcodeQty=detailitem.qty,
BarcodeUnit=detailitem.unit,
OrderQuantity = detailitem.qty
};
dt_OutboundOrder.Details.Add(inboundOrderDetail);
}
dt_OutboundOrder.UpperOrderNo = model.orderNo;
dt_OutboundOrder.BusinessType = model.business_type;
dt_OutboundOrder.IsBatch = model.isBatch;
dt_OutboundOrder.FactoryArea = model.factoryArea;
var content =await Service.ReceiveOutboundOrder(dt_OutboundOrder, model.operationType);
if (content.Status) return WebResponseContent.Instance.OK(200);
else return WebResponseContent.Instance.Error(content.Message);
}
///
/// 根据ID获取出库单
/// ss
[HttpGet, Route("GetById"), AllowAnonymous, MethodParamsValidate]
public async Task GetById(int id)
{
var order = await Service.GetById(id);
if (order == null)
{
return WebResponseContent.Instance.Error("未找到出库单信息");
}
return WebResponseContent.Instance.OK(null, order);
}
}
}