using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Mvc;
|
using Newtonsoft.Json;
|
using System.Data.Common;
|
using System.Diagnostics.Eventing.Reader;
|
using System.Threading.Tasks;
|
using WIDESEA_Common.AllocateEnum;
|
using WIDESEA_Core;
|
using WIDESEA_Core.Attributes;
|
using WIDESEA_Core.BaseController;
|
using WIDESEA_DTO.Allocate;
|
using WIDESEA_IAllocateService;
|
using WIDESEA_IInboundService;
|
using WIDESEA_Model.Models;
|
using WIDESEA_WMSServer.Controllers.Check;
|
|
|
namespace WIDESEA_WMSServer.Controllers.Allocate
|
{
|
|
/// <summary>
|
/// 调拨单
|
/// </summary>
|
[Route("api/AllocateOrder")]
|
[ApiController]
|
public class AllocateOrderController : ApiBaseController<IAllocateService, Dt_AllocateOrder>
|
{
|
private readonly ILogger<AllocateOrderController> _logger;
|
public AllocateOrderController(IAllocateService service, ILogger<AllocateOrderController> logger) : base(service)
|
{
|
_logger = logger;
|
}
|
|
[HttpPost, Route("ReceiveAllocateOrder"), MethodParamsValidate, AllowAnonymous]
|
public async Task<WebResponseContent> ReceiveAllocateOrder([FromBody] AllocateDto model)
|
{
|
_logger.LogInformation("AllocateOrderController ReceiveAllocateOrder: " + JsonConvert.SerializeObject(model));
|
Dt_AllocateOrder allocateOrder = new Dt_AllocateOrder
|
{
|
OrderNo = model.OrderNo,
|
UpperOrderNo = model.OrderNo,
|
BusinessType = model.BusinessType,
|
FactoryArea = model.FactoryArea,
|
IsBatch = model.IsBatch,
|
CreateType = model.OperationType,
|
FromWarehouse = model.fromWarehouse,
|
ToWarehouse = model.toWarehouse,
|
Details = new List<Dt_AllocateOrderDetail>()
|
};
|
Enum.TryParse<BusinessTypeEnum>(allocateOrder.BusinessType, out var businessType);
|
//allocateOrder.OrderType = businessType == BusinessTypeEnum.智仓调外部仓库 ? 215 : 115;
|
if (businessType == BusinessTypeEnum.智仓调外部仓库)
|
{
|
allocateOrder.OrderType = 215;
|
}
|
else if (businessType == BusinessTypeEnum.外部仓库调智仓)
|
{
|
allocateOrder.OrderType = 115;
|
}
|
|
foreach (var detailDto in model.Details)
|
{
|
if (businessType == BusinessTypeEnum.外部仓库调智仓 && (detailDto.Barcodes == null || !detailDto.Barcodes.Any()))
|
{
|
return WebResponseContent.Instance.Error($"条码不能为空");
|
}
|
if (detailDto.Barcodes != null && detailDto.Barcodes.Any())
|
{
|
foreach (var barcodeDto in detailDto.Barcodes)
|
{
|
Dt_AllocateOrderDetail orderDetail = new Dt_AllocateOrderDetail
|
{
|
WarehouseCode = detailDto.WarehouseCode,
|
MaterielCode = detailDto.MaterialCode,
|
LineNo = detailDto.LineNo,
|
OrderQuantity = detailDto.Qty,
|
SupplyCode = barcodeDto.SupplyCode,
|
Unit = detailDto.Unit,
|
Barcode = barcodeDto.Barcode,
|
BatchNo = barcodeDto.BatchNo,
|
BarcodeQty = barcodeDto.Qty,
|
BarcodeUnit = barcodeDto.Unit,
|
ValidDate = barcodeDto.validDate,
|
|
};
|
allocateOrder.Details.Add(orderDetail);
|
}
|
}
|
else
|
{
|
Dt_AllocateOrderDetail orderDetail = new Dt_AllocateOrderDetail
|
{
|
WarehouseCode = detailDto.WarehouseCode,
|
MaterielCode = detailDto.MaterialCode,
|
LineNo = detailDto.LineNo,
|
OrderQuantity = detailDto.Qty,
|
Unit = detailDto.Unit
|
|
};
|
allocateOrder.Details.Add(orderDetail);
|
}
|
allocateOrder.Details.AddRange(allocateOrder.Details);
|
}
|
var content = await Service.ReceiveAllocateOrder(allocateOrder, model.OperationType);
|
|
if (content.Status) return WebResponseContent.Instance.OK(200);
|
else return WebResponseContent.Instance.Error(content.Message);
|
}
|
}
|
|
}
|