using Admin.NET.Core.Service;
|
using Admin.NET.Application.Entity;
|
using Microsoft.AspNetCore.Http;
|
using System.Data;
|
using System.Web;
|
using System.Text;
|
using DocumentFormat.OpenXml.Office.CustomUI;
|
using Microsoft.CodeAnalysis.Operations;
|
|
namespace Admin.NET.Application;
|
/// <summary>
|
/// 操作任务服务
|
/// </summary>
|
[ApiDescriptionSettings(ApplicationConst.WmsTaskGroupName, Order = 100)]
|
public class WmsOperationTaskService : IDynamicApiController, ITransient
|
{
|
private readonly SqlSugarRepository<WmsRbLineTask> _rep;
|
private readonly SqlSugarRepository<WmsStockQuan> _wmsStockQuanRep;
|
private readonly SqlSugarRepository<Mes_Package_Gather> _mesPackageGatherRep;
|
private readonly SqlSugarRepository<SysConfig> _sysConfigRep;
|
private readonly SqlSugarRepository<Mes_BatchOrderUPI_New> _mesBatchOrderUpiRep;
|
public WmsOperationTaskService(SqlSugarRepository<WmsRbLineTask> rep, SqlSugarRepository<WmsStockQuan> wmsStockQuanRep
|
, SqlSugarRepository<Mes_Package_Gather> mesPackageGatherRep
|
, SqlSugarRepository<SysConfig> sysConfigRep
|
, SqlSugarRepository<Mes_BatchOrderUPI_New> mesBatchOrderUpiRep
|
)
|
{
|
_sysConfigRep = sysConfigRep;
|
_mesPackageGatherRep = mesPackageGatherRep;
|
_rep = rep;
|
_wmsStockQuanRep = wmsStockQuanRep;
|
_mesBatchOrderUpiRep = mesBatchOrderUpiRep;
|
}
|
|
|
|
/// <summary>
|
/// 强制出库
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[ApiDescriptionSettings(Name = "ForceOutbound")]
|
[Description("WmsOperationTask/ForceOutbound")]
|
public async Task ForceOutbound(ForceOutboundInput input)
|
{
|
if (input == null || input.PackageCodeList?.Count == 0)
|
{
|
throw Oops.Oh("参数不能为空");
|
}
|
List<WmsStockQuan> updateQuanList = new List<WmsStockQuan>();
|
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);
|
|
}
|
|
/// <summary>
|
/// 判断齐套
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[ApiDescriptionSettings(Name = "ValdateQiTao")]
|
[Description("WmsOperationTask/ValdateQiTao")]
|
public async Task<ValidateQiTaoOutput> ValdateQiTao(ValidateQiTaoInput input)
|
{
|
ValidateQiTaoOutput output = new ValidateQiTaoOutput();
|
if (input == null || input.PackageCode == null)
|
{
|
throw Oops.Oh("参数不能为空");
|
}
|
var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
|
if (singlePackage == null)
|
{
|
throw Oops.Oh($"没有找到包号{input.PackageCode}的汇总数据");
|
}
|
|
var setValue = "";
|
var _QiTaoReuslt = "";
|
var other_orderList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5 && x.PackageCode != input.PackageCode).ToListAsync();
|
var num = other_orderList.Where(x => x.UpiStatus == UpiStatusEnum.初始 || x.UpiStatus == UpiStatusEnum.不齐包).Count();
|
if (num > 0)
|
{
|
//不齐套
|
setValue = $"{input.PackageCode}|不齐套";
|
_QiTaoReuslt = "不齐套";
|
}
|
else
|
{
|
setValue = $"{input.PackageCode}|齐套";
|
_QiTaoReuslt = "齐套";
|
}
|
|
var sysConfig = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.WmsBZ30_QiTao);
|
if (sysConfig == null)
|
{
|
throw Oops.Oh($"没有配置 判断齐套 值");
|
}
|
if (!string.IsNullOrEmpty(sysConfig.Value) && sysConfig.Value!="无")
|
{
|
throw Oops.Oh($"判断齐套值已经存在值{sysConfig.Value},不允许操作");
|
}
|
sysConfig.Value = setValue;
|
await _sysConfigRep.UpdateAsync(sysConfig);
|
|
output = singlePackage.Adapt<ValidateQiTaoOutput>();
|
output.QiTaoReuslt = _QiTaoReuslt;
|
return output;
|
}
|
|
|
/// <summary>
|
/// 核对标签
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[ApiDescriptionSettings(Name = "ValdateLabel")]
|
[Description("WmsOperationTask/ValdateLabel")]
|
public async Task<Mes_Package_Gather> ValdateLabel(ValidateLabelInput input)
|
{
|
if (input == null || input.PackageCode == null || input.Upi == null)
|
{
|
throw Oops.Oh("参数不能为空");
|
}
|
|
var singleUpi = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.UPI == input.Upi).FirstAsync();
|
if (singleUpi == null)
|
{
|
throw Oops.Oh($"没有找到部件条码{input.Upi}的数据");
|
}
|
if (singleUpi.PackageCode != input.PackageCode)
|
{
|
throw Oops.Oh($"部件条码{input.Upi}所属包是{singleUpi.PackageCode},跟扫描的包号{input.PackageCode}不符");
|
}
|
|
var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
|
if (singlePackage == null)
|
{
|
throw Oops.Oh($"没有找到包号{input.PackageCode}的汇总数据");
|
}
|
return singlePackage;
|
}
|
}
|