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;
using Admin.NET.Application.Service.WmsTask.WmsRbLineTask.Dto;
using Furion.DatabaseAccessor;
using Admin.NET.Application.Service.WmsCommonnQuery.Dto;
using Admin.NET.Application.CommonHelper;
namespace Admin.NET.Application;
///
/// 操作任务服务
///
[ApiDescriptionSettings(ApplicationConst.WmsTaskGroupName, Order = 100)]
public class WmsOperationTaskService : IDynamicApiController, ITransient
{
private readonly SqlSugarRepository _rep;
private readonly SqlSugarRepository _wmsStockQuanRep;
private readonly SqlSugarRepository _mesPackageGatherRep;
private readonly SqlSugarRepository _sysConfigRep;
private readonly SqlSugarRepository _mesBatchOrderUpiRep;
private readonly SqlSugarRepository _mesOrderGatherRep;
private readonly SqlSugarRepository _wmsRecordUpiProcessRep;
private readonly SqlSugarRepository _wmsRecordPackageProcessRep;
private readonly SqlSugarRepository _mes_Upi_LineQueueRep;
private readonly SqlSugarRepository _mes_Package_LineQueueRep;
private readonly SqlSugarRepository _wmsRecordUpiNgRep;
private readonly WmsCommonnQueryService _wmsCommonnQueryService;
public WmsOperationTaskService(
SqlSugarRepository mes_Upi_LineQueueRep,
SqlSugarRepository rep, SqlSugarRepository wmsStockQuanRep
, SqlSugarRepository mesPackageGatherRep
, SqlSugarRepository sysConfigRep
, SqlSugarRepository mesBatchOrderUpiRep
, SqlSugarRepository mesOrderGatherRep
, SqlSugarRepository wmsRecordUpiProcessRep
, SqlSugarRepository wmsRecordPackageProcessRep
, SqlSugarRepository wmsRecordUpiNgRep
, WmsCommonnQueryService wmsCommonnQueryService
, SqlSugarRepository mes_Package_LineQueueRep
)
{
_mes_Package_LineQueueRep = mes_Package_LineQueueRep;
_wmsCommonnQueryService = wmsCommonnQueryService;
_wmsRecordUpiNgRep = wmsRecordUpiNgRep;
_sysConfigRep = sysConfigRep;
_mesPackageGatherRep = mesPackageGatherRep;
_rep = rep;
_wmsStockQuanRep = wmsStockQuanRep;
_mesBatchOrderUpiRep = mesBatchOrderUpiRep;
_mesOrderGatherRep = mesOrderGatherRep;
_wmsRecordUpiProcessRep = wmsRecordUpiProcessRep;
_wmsRecordPackageProcessRep = wmsRecordPackageProcessRep;
_mes_Upi_LineQueueRep = mes_Upi_LineQueueRep;
}
///
/// 强制出库
///
///
///
[HttpPost]
[ApiDescriptionSettings(Name = "ForceOutbound")]
[Description("WmsOperationTask/ForceOutbound")]
[UnitOfWork]
public async Task ForceOutbound(ForceOutboundInput input)
{
if (input == null || input.PackageCodeList?.Count == 0)
{
throw Oops.Oh("参数不能为空");
}
//验证传递的包是否都在齐包之内。
List packList = await _wmsCommonnQueryService.PackList(new Service.WmsCommonnQuery.Dto.PackListInput() { IsPack = false });
List updateQuanList = new List();
foreach (var item in input.PackageCodeList)
{
var isExistCount = packList.Where(x => x.PackageCode == item).Count();
if (isExistCount == 0)
{
throw Oops.Oh($"包{item}不是缺包状态,请检查!");
}
var quanList = await _wmsStockQuanRep.AsQueryable().Where(x => x.PackageCode == item).ToListAsync();
var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.齐包待出库 || x.StockStatus == StockStatusEnum.人工齐包出库任务已创建).Count();
if (isExist > 0)
{
throw Oops.Oh($"包{item}中其中有板状态是'{StockStatusEnum.齐包待出库.ToString()}' 或'{StockStatusEnum.人工齐包出库任务已创建.ToString()}',不允许强制出库");
}
//更新状态
foreach (var quan in quanList)
{
if (quan.StockStatus != StockStatusEnum.在库 && quan.StockStatus != StockStatusEnum.已冻结)
{
throw Oops.Oh($"部件条码{quan.Upi}的库存状态不是'{StockStatusEnum.在库.ToString()}或{StockStatusEnum.已冻结.ToString()}'状态");
}
quan.StockStatus = StockStatusEnum.人工强制待出库;
quan.StockStatusName = StockStatusEnum.人工强制待出库.ToString();
quan.UpdateTime = DateTime.Now;
quan.OperReason = "人工强制待出库";
}
updateQuanList.AddRange(quanList);
var packageObj = await _mesPackageGatherRep.GetFirstAsync(x => x.PackageCode == item);
packageObj.UpiFlag = UpiFlagEnum.NG;
packageObj.UpiStatus = UpiStatusEnum.已下线;
await _mesPackageGatherRep.UpdateAsync(packageObj);
//下线更新 订单表数据 _mesOrderGatherRep
await UpdateOrderGather(packageObj, true);
foreach (var quan in quanList)
{
//清理 队列表
var removeUpiList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.Upi == quan.Upi).ToListAsync();
if (removeUpiList?.Count > 0)
{
await _mes_Upi_LineQueueRep.DeleteAsync(removeUpiList);
}
var removePackageList = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == quan.PackageCode).ToListAsync();
if (removePackageList?.Count > 0)
{
await _mes_Package_LineQueueRep.DeleteAsync(removePackageList);
}
}
}
//模式判断
var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep);
var res = await client.ValidateModeAsync(1);
if (res.result == false)
{
throw Oops.Oh(res.resMsg);
}
await _wmsStockQuanRep.UpdateRangeAsync(updateQuanList);
}
///
/// 人工齐包出库
///
///
///
[HttpPost]
[ApiDescriptionSettings(Name = "PersonOutbound")]
[Description("WmsOperationTask/PersonOutbound")]
[UnitOfWork]
public async Task PersonOutbound(PersonOutboundInput input)
{
if (input == null || input.PackageCodeList?.Count == 0)
{
throw Oops.Oh("参数不能为空");
}
//验证传递的包是否都在齐包之内。
List packList = await _wmsCommonnQueryService.PackList(new Service.WmsCommonnQuery.Dto.PackListInput() { IsPack = true });
List updateQuanList = new List();
foreach (var item in input.PackageCodeList)
{
var isExistCount = packList.Where(x => x.PackageCode == item).Count();
if (isExistCount == 0)
{
throw Oops.Oh($"包{item}不是齐包状态,请检查!");
}
var quanList = await _wmsStockQuanRep.AsQueryable().Where(x => x.PackageCode == item).ToListAsync();
var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.人工强制待出库 || x.StockStatus == StockStatusEnum.人工强制任务已创建).Count();
if (isExist > 0)
{
throw Oops.Oh($"包{item}中其中有板状态是'{StockStatusEnum.人工强制待出库.ToString()}'或'{StockStatusEnum.人工强制任务已创建.ToString()}',不允许人工齐包出库");
}
//更新状态
foreach (var quan in quanList)
{
if (quan.StockStatus != StockStatusEnum.在库 && quan.StockStatus != StockStatusEnum.已冻结)
{
throw Oops.Oh($"部件条码{quan.Upi}的库存状态不是'{StockStatusEnum.在库.ToString()}或{StockStatusEnum.已冻结.ToString()}'状态");
}
quan.StockStatus = StockStatusEnum.齐包待出库;
quan.StockStatusName = StockStatusEnum.齐包待出库.ToString();
quan.UpdateTime = DateTime.Now;
quan.OperReason = "人工齐包出库";
}
updateQuanList.AddRange(quanList);
var packageObj = await _mesPackageGatherRep.GetFirstAsync(x => x.PackageCode == item);
packageObj.UpiStatus = UpiStatusEnum.已齐包;
packageObj.IsQiBao = true;
await _mesPackageGatherRep.UpdateAsync(packageObj);
}
//模式判断
var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep);
var res = await client.ValidateModeAsync(2);
if (res.result == false)
{
throw Oops.Oh(res.resMsg);
}
await _wmsStockQuanRep.UpdateRangeAsync(updateQuanList);
}
///
/// 判断齐套
///
///
///
[HttpPost]
[ApiDescriptionSettings(Name = "ValdateQiTao")]
[Description("WmsOperationTask/ValdateQiTao")]
[UnitOfWork]
public async Task ValdateQiTao(ValidateQiTaoInput input)
{
ValidateQiTaoOutput output = new ValidateQiTaoOutput();
if (input == null || input.PackageCode == null)
{
throw Oops.Oh("参数不能为空");
}
var package = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
if (package == null)
{
throw Oops.Oh($"没有找到包号{input.PackageCode}的汇总数据");
}
var sysConfig = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.WmsBZ30_QiTao);
if (sysConfig == null)
{
throw Oops.Oh($"没有配置 判断齐套 值");
}
if (!string.IsNullOrEmpty(sysConfig.Value) && sysConfig.Value.Trim() != "无")
{
throw Oops.Oh($"判断齐套值已经存在值{sysConfig.Value},不允许操作");
}
//记录工作时间和工作人
var curUserName = App.User.FindFirst(ClaimConst.RealName)?.Value;
var setValue = "";
var _QiTaoReuslt = "";
bool isNeedQueryQiTao = true;
var order = await _mesOrderGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5).FirstAsync();
if (order == null)
{
}
else
{
if (order.IsKitting != null)
{
_QiTaoReuslt = (bool)order.IsKitting ? "齐套" : "不齐套";
isNeedQueryQiTao = false;
}
}
if (isNeedQueryQiTao)
{
var other_orderList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == package.Info5 && x.PackageCode != input.PackageCode).ToListAsync();
var num = other_orderList.Where(x => x.UpiStatus == UpiStatusEnum.初始).Count();
if (num > 0)
{
//不齐套
_QiTaoReuslt = "不齐套";
}
else
{
_QiTaoReuslt = "齐套";
}
}
setValue = $"{input.PackageCode}|{_QiTaoReuslt}|" + curUserName;
if (package.UpiStatus == UpiStatusEnum.已下线)
{
throw Oops.Oh($"包已下线,齐套结果[{_QiTaoReuslt}]");
}
if (order == null)
{
Mes_Order_Gather newOrder = new Mes_Order_Gather()
{
Info5 = package.Info5,
IsKitting = _QiTaoReuslt == "齐套" ? true : false,
PlanNo = package.PlanNo,
OrderId = package.OrderId
};
await _mesOrderGatherRep.InsertAsync(newOrder);
}
else
{
order.IsKitting = _QiTaoReuslt == "齐套" ? true : false;
await _mesOrderGatherRep.UpdateAsync(order);
}
sysConfig.Value = setValue;
await _sysConfigRep.UpdateAsync(sysConfig);
//*/
var sysConfig_wms_unline_oper = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_oper);
if (sysConfig_wms_unline_oper == null)
{
throw Oops.Oh($"没有配置 包装下线操作人 值");
}
if (sysConfig_wms_unline_oper.Value != curUserName)
{
sysConfig_wms_unline_oper.Value = curUserName;
await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_oper);
var sysConfig_wms_unline_time = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_time);
if (sysConfig_wms_unline_time == null)
{
throw Oops.Oh($"没有配置 包装下线登陆时间 值");
}
sysConfig_wms_unline_time.Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_time);
}
output = package.Adapt();
output.QiTaoReuslt = _QiTaoReuslt;
return output;
}
///
/// 核对标签
///
///
///
[HttpPost]
[ApiDescriptionSettings(Name = "ValdateLabel")]
[Description("WmsOperationTask/ValdateLabel")]
[UnitOfWork]
public async Task 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}的汇总数据");
}
var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
wmsRecordPackage = singlePackage.Adapt();
wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordPackage.CreateTime = DateTime.Now;
wmsRecordPackage.CreateUserName = _cretaorName;
wmsRecordPackage.Location = "BZ29";
wmsRecordPackage.OperRemark = "核对标签";
await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
wmsRecordUpi = singleUpi.Adapt();
wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordUpi.CreateTime = DateTime.Now;
wmsRecordUpi.CreateUserName = _cretaorName;
wmsRecordUpi.Location = "BZ29";
wmsRecordUpi.OperRemark = "核对标签";
await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
return singlePackage;
}
///
/// NG包下线或 正常包 下线 -扫描包号
///
///
///
[HttpPost]
[ApiDescriptionSettings(Name = "UnlineForNGPackage")]
[Description("WmsOperationTask/UnlineForNGPackage")]
[UnitOfWork]
public async Task UnlineForNGPackage(UnlineForNGPackageInput input)
{
if (input == null)
{
throw Oops.Oh("参数不能为空");
}
if (string.IsNullOrEmpty(input.PackageCode))
{
throw Oops.Oh("包号不能为空");
}
//if (string.IsNullOrEmpty(input.Reason))
//{
// throw Oops.Oh("原因不能为空");
//}
string _OperRemark = "正常人工下线";
UpiFlagEnum upiFlagEnum = UpiFlagEnum.正常;
if (input.IsNG)
{
upiFlagEnum = UpiFlagEnum.NG;
_OperRemark = "NG下线";
}
var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
if (singlePackage == null)
{
throw Oops.Oh($"没有找到包号{input.PackageCode}的汇总数据");
}
if (singlePackage.UpiStatus == UpiStatusEnum.已下线)
{
throw Oops.Oh($"包号{input.PackageCode}已经下线");
}
singlePackage.UpiFlag = upiFlagEnum;
singlePackage.UpdateTime = DateTime.Now;
singlePackage.UpiStatus = UpiStatusEnum.已下线;
singlePackage.AreaCode = AreaCodeEnum.下线区域;
var upiLineQueueList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
if (upiLineQueueList?.Count > 0)
{
await _mes_Upi_LineQueueRep.DeleteAsync(upiLineQueueList);
}
var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync();
if (upiList == null)
{
throw Oops.Oh($"没有找到包号{input.PackageCode}的板件数据");
}
var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
foreach (var item in upiList)
{
item.UpiFlag = UpiFlagEnum.NG;
item.UpdateTime = DateTime.Now;
item.UpiStatus = UpiStatusEnum.已下线;
item.AreaCode = AreaCodeEnum.下线区域;
WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
wmsRecordUpi = item.Adapt();
wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordUpi.CreateTime = DateTime.Now;
wmsRecordUpi.CreateUserName = _cretaorName;
wmsRecordUpi.Location = "";
wmsRecordUpi.OperRemark = _OperRemark;
await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg();
wmsRecordUpiNg = item.Adapt();
wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordUpiNg.CreateTime = DateTime.Now;
wmsRecordUpiNg.CreateUserName = _cretaorName;
wmsRecordUpiNg.OperRemark = _OperRemark;
await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg);
//清理 队列表
var removeUpiList = await _mes_Upi_LineQueueRep.AsQueryable().Where(x => x.Upi == item.UPI).ToListAsync();
if (removeUpiList?.Count > 0)
{
await _mes_Upi_LineQueueRep.DeleteAsync(removeUpiList);
}
var removePackageList = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == item.PackageCode).ToListAsync();
if (removePackageList?.Count > 0)
{
await _mes_Package_LineQueueRep.DeleteAsync(removePackageList);
}
}
//下线更新 订单表数据 _mesOrderGatherRep
await UpdateOrderGather(singlePackage, input.IsNG);
WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
wmsRecordPackage = singlePackage.Adapt();
wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordPackage.Location = "";
wmsRecordPackage.OperRemark = _OperRemark;
wmsRecordPackage.CreateTime = DateTime.Now;
wmsRecordPackage.CreateUserName = _cretaorName;
await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
await _mesPackageGatherRep.UpdateAsync(singlePackage);
await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
}
///
/// 下线更新 订单表数据
///
///
///
private async Task UpdateOrderGather(Mes_Package_Gather singlePackage, bool isNG)
{
//下线更新 订单表数据 _mesOrderGatherRep
bool isAdd = false;
var order = await _mesOrderGatherRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).FirstAsync();
if (order == null)
{
isAdd = true;
order = new Mes_Order_Gather()
{
Info5 = singlePackage.Info5,
OrderId = singlePackage.OrderId,
PlanNo = singlePackage.PlanNo,
};
}
var packageList = await _mesPackageGatherRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync();
order.PackageNum = packageList.Count();
order.UnLinePackageNum = packageList.Where(x => x.UpiStatus == UpiStatusEnum.已下线).Count() + 1;
order.NgPackageNum = packageList.Where(x => x.UpiStatus == UpiStatusEnum.已下线 && x.UpiFlag == UpiFlagEnum.NG).Count();
if (isNG)
{
order.NgPackageNum = order.NgPackageNum + 1;
}
order.NoUnLinePackageNum = order.PackageNum - order.UnLinePackageNum;
order.AllPackageArea = packageList.Sum(x => Convert.ToDecimal(x.Info13));
order.ScanPackageArea = packageList.Where(x => x.UpiStatus == UpiStatusEnum.已下线 && x.UpiFlag == (int)UpiFlagEnum.正常).Sum(x => Convert.ToDecimal(x.Info13));
if (isNG == false)
{
order.ScanPackageArea = order.ScanPackageArea + Convert.ToDecimal(singlePackage.Info13);
}
order.NoScanPackageArea = order.AllPackageArea - order.ScanPackageArea;
if (isAdd)
{
await _mesOrderGatherRep.InsertAsync(order);
}
else
{
await _mesOrderGatherRep.UpdateAsync(order);
}
}
///
/// 标记NG-扫描件号
///
///
///
[HttpPost]
[ApiDescriptionSettings(Name = "SetNG")]
[Description("WmsOperationTask/SetNG")]
[UnitOfWork]
public async Task SetNG(SetNGInput input)
{
if (input == null)
{
throw Oops.Oh("参数不能为空");
}
if (string.IsNullOrEmpty(input.Upi))
{
throw Oops.Oh("部件条码不能为空");
}
//if (string.IsNullOrEmpty(input.Reason))
//{
// throw Oops.Oh("原因不能为空");
//}
var singleUpi = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.UPI == input.Upi).FirstAsync();
if (singleUpi == null)
{
throw Oops.Oh($"没有找到部件条码{input.Upi}的数据");
}
var packageCode = singleUpi.PackageCode;
var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == packageCode).FirstAsync();
if (singlePackage == null)
{
throw Oops.Oh($"没有找到包号{packageCode}的汇总数据");
}
var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
singlePackage.UpiFlag = UpiFlagEnum.NG;
singlePackage.UpdateTime = DateTime.Now;
singlePackage.UpdateUserName = _cretaorName;
var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == packageCode).ToListAsync();
if (upiList == null)
{
throw Oops.Oh($"没有找到包号{packageCode}的板件数据");
}
foreach (var item in upiList)
{
item.UpiFlag = UpiFlagEnum.NG;
item.UpdateTime = DateTime.Now;
item.UpdateUserName = _cretaorName;
WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
wmsRecordUpi = item.Adapt();
wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordUpi.CreateTime = DateTime.Now;
wmsRecordUpi.CreateUserName = _cretaorName;
wmsRecordUpi.Location = "";
wmsRecordUpi.OperRemark = "标记NG";
await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg();
wmsRecordUpiNg = item.Adapt();
wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordUpiNg.CreateTime = DateTime.Now;
wmsRecordUpiNg.CreateUserName = _cretaorName;
wmsRecordUpiNg.OperRemark = "标记NG";
await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg);
}
WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
wmsRecordPackage = singlePackage.Adapt();
wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordPackage.Location = "";
wmsRecordPackage.OperRemark = "标记NG";
wmsRecordPackage.CreateTime = DateTime.Now;
wmsRecordPackage.CreateUserName = _cretaorName;
await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
await _mesPackageGatherRep.UpdateAsync(singlePackage);
await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
}
///
/// 取消NG-扫描件号
///
///
///
[HttpPost]
[ApiDescriptionSettings(Name = "CancelNG")]
[Description("WmsOperationTask/CancelNG")]
[UnitOfWork]
public async Task CancelNG(CancelNGInput input)
{
if (input == null)
{
throw Oops.Oh("参数不能为空");
}
if (string.IsNullOrEmpty(input.Upi))
{
throw Oops.Oh("部件条码不能为空");
}
//if (string.IsNullOrEmpty(input.Reason))
//{
// throw Oops.Oh("原因不能为空");
//}
var singleUpi = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.UPI == input.Upi).FirstAsync();
if (singleUpi == null)
{
throw Oops.Oh($"没有找到部件条码{input.Upi}的数据");
}
var packageCode = singleUpi.PackageCode;
var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == packageCode).FirstAsync();
if (singlePackage == null)
{
throw Oops.Oh($"没有找到包号{packageCode}的汇总数据");
}
var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value;
singlePackage.UpiFlag = UpiFlagEnum.正常;
singlePackage.UpdateTime = DateTime.Now;
singlePackage.UpdateUserName = _cretaorName;
var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == packageCode).ToListAsync();
if (upiList == null)
{
throw Oops.Oh($"没有找到包号{packageCode}的板件数据");
}
foreach (var item in upiList)
{
item.UpiFlag = UpiFlagEnum.正常;
item.UpdateTime = DateTime.Now;
item.UpdateUserName = _cretaorName;
WmsRecordUpiProcess wmsRecordUpi = new WmsRecordUpiProcess();
wmsRecordUpi = item.Adapt();
wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordUpi.CreateTime = DateTime.Now;
wmsRecordUpi.CreateUserName = _cretaorName;
wmsRecordUpi.Location = "";
wmsRecordUpi.OperRemark = "取消NG";
await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi);
WmsRecordUpiNg wmsRecordUpiNg = new WmsRecordUpiNg();
wmsRecordUpiNg = item.Adapt();
wmsRecordUpiNg.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordUpiNg.CreateTime = DateTime.Now;
wmsRecordUpiNg.CreateUserName = _cretaorName;
wmsRecordUpiNg.OperRemark = "取消NG";
await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg);
}
WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess();
wmsRecordPackage = singlePackage.Adapt();
wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId();
wmsRecordPackage.Location = "";
wmsRecordPackage.OperRemark = "取消NG";
wmsRecordPackage.CreateTime = DateTime.Now;
wmsRecordPackage.CreateUserName = _cretaorName;
await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage);
await _mesPackageGatherRep.UpdateAsync(singlePackage);
await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList);
}
///
/// 扫码记录清除
///
///
///
[HttpPost]
[ApiDescriptionSettings(Name = "PartClear")]
[Description("WmsOperationTask/PartClear")]
public async Task PartClear()
{
//模式判断
var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep);
var res = await client.WriteStation_PartClearAsync();
if (res.result == false)
{
throw Oops.Oh(res.resMsg);
}
}
}