using Admin.NET.Core.Service;
using Admin.NET.Application.Entity;
using Microsoft.AspNetCore.Http;
using System.Data;
using System.Web;
using System.Text;
namespace Admin.NET.Application;
///
/// 操作任务服务
///
[ApiDescriptionSettings(ApplicationConst.WmsTaskGroupName, Order = 100)]
public class WmsOperationTaskService : IDynamicApiController, ITransient
{
private readonly SqlSugarRepository _rep;
private readonly SqlSugarRepository _wmsStockQuanRep;
public WmsOperationTaskService(SqlSugarRepository rep, SqlSugarRepository wmsStockQuanRep)
{
_rep = rep;
_wmsStockQuanRep = wmsStockQuanRep;
}
///
/// 强制出库
///
///
///
[HttpPost]
[ApiDescriptionSettings(Name = "ForceOutbound")]
[Description("WmsOperationTask/ForceOutbound")]
public async Task ForceOutbound(ForceOutboundInput input)
{
if (input == null || input.PackageCodeList?.Count == 0)
{
throw Oops.Oh("参数不能为空");
}
List updateQuanList = new List();
foreach (var item in input.PackageCodeList)
{
var quanList = await _wmsStockQuanRep.AsQueryable().Where(x => x.PackageCode == item).ToListAsync();
var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.齐包待出库).Count();
if (isExist > 0)
{
throw Oops.Oh($"包{item}中其中有板状态是'{StockStatusEnum.齐包待出库.ToString()}',不允许强制出库");
}
//更新状态
foreach (var quan in quanList)
{
quan.StockStatus = StockStatusEnum.人工强制待出库;
quan.UpdateTime = DateTime.Now;
quan.OperReason = "人工强制待出库";
}
updateQuanList.AddRange(quanList);
}
await _wmsStockQuanRep.UpdateRangeAsync(updateQuanList);
}
}