using Furion.DatabaseAccessor;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Furion.FriendlyException;
using Mapster;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Linq.Dynamic.Core;
using Admin.NET.Core;
using Yitter.IdGenerator;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Mvc.RazorPages;
using StackExchange.Redis;
namespace Admin.NET.Application
{
///
/// Pda空托出库
///
[ApiDescriptionSettings("Pda空托出库", Name = "CallEmpty", Order = 100)]
[Route("api/[Controller]")]
public class CallEmptyService : IDynamicApiController, ITransient
{
private readonly IRepository _wmsOrderRep;
private readonly IRepository _wmsOrderDetailsRep;
private readonly IRepository _wmsTaskRep;
private readonly IRepository _wmsPlaceRep;
private readonly IRepository _wmsAreaRep;
private readonly IRepository _wmsWarehouseEntranceRep;
private readonly IRepository _wmsMaterialContainerRep;
private readonly IRepository _wmsContainerRep;
private readonly IRepository _wmsContainerPlaceRep;
private readonly IRepository _wmsMaterialStockRep;
private readonly IRepository _wmsOrderTypeRep;
///
/// 构造函数
///
public CallEmptyService(
IRepository wmsOrderRep,
IRepository wmsOrderDetailsRep,
IRepository wmsTaskRep,
IRepository wmsPlaceRep,
IRepository wmsAreaRep,
IRepository wmsWarehouseEntranceRep,
IRepository wmsMaterialContainerRep,
IRepository wmsContainerRep,
IRepository wmsContainerPlaceRep,
IRepository wmsMaterialStockRep,
IRepository wmsOrderTypeRep
)
{
_wmsOrderRep = wmsOrderRep;
_wmsOrderDetailsRep = wmsOrderDetailsRep;
_wmsTaskRep = wmsTaskRep;
_wmsPlaceRep = wmsPlaceRep;
_wmsAreaRep = wmsAreaRep;
_wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
_wmsMaterialContainerRep = wmsMaterialContainerRep;
_wmsContainerRep = wmsContainerRep;
_wmsContainerPlaceRep = wmsContainerPlaceRep;
_wmsMaterialStockRep = wmsMaterialStockRep;
_wmsOrderTypeRep = wmsOrderTypeRep;
}
///
/// 提交出库
///
///
[HttpPost("PdaContainerOut")]
[UnitOfWork]
public async Task PdaContainerOut([FromBody] PdaContainerOutInput input)
{
//根据输入数量循环出库的托盘数量
for (int i = 1; i < input.Qty+1; i++)
{
//获取库存中的空托盘
var wmsMaterialStockModal = await _wmsMaterialStockRep.FirstOrDefaultAsync(x => x.Source == RuKuSourceEnum.KONGTUO);
//获取库位信息
var wmsPlacModal = await _wmsPlaceRep.FirstOrDefaultAsync(x => x.PlaceCode == wmsMaterialStockModal.PlaceCode);
//任务
var takmodel = new WmsTask()
{
TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
TaskModel = TaskModel.QUANZIDONG,
TaskType = TaskType.CHUKU,
TaskLevel = 1,
TaskStatus = TaskStatusEnum.WEIZHIXING,
OrderNo = "N/A",
OrderDetailsId = 0,
ContainerCode = wmsMaterialStockModal.ContainerCode,
SourcePlace = wmsMaterialStockModal.PlaceCode,
ToPlace = wmsPlacModal.Aisle.ToString(), //目标位
AreaName = "绝缘立库",
IsRead = true, //WCS是否可以读取
SendTimes = 1, //发送次数
Aisle = wmsPlacModal.Aisle,
TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
Description = "空托"
};
await _wmsTaskRep.InsertAsync(takmodel);
}
}
}
}