From c0e20b1b0f1298cdc0af0037d60e74d51e364501 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周三, 17 9月 2025 14:38:06 +0800 Subject: [PATCH] //去掉这个删除验证 【Editby shaocx,2025-09-17】 --- LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs | 575 ++++++++++++++++++++++++++++++++------------------------- 1 files changed, 324 insertions(+), 251 deletions(-) diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs index 35e06bc..30e9374 100644 --- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs +++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs @@ -18,6 +18,9 @@ [ApiDescriptionSettings(ApplicationConst.WmsTaskGroupName, Order = 100)] public class WmsOperationTaskService : IDynamicApiController, ITransient { + private static readonly SemaphoreSlim semaphore = new SemaphoreSlim(1, 1); + private static readonly SemaphoreSlim semaphore2 = new SemaphoreSlim(1, 1); + private readonly SqlSugarRepository<WmsRbLineTask> _rep; private readonly SqlSugarRepository<WmsStockQuan> _wmsStockQuanRep; private readonly SqlSugarRepository<Mes_Package_Gather> _mesPackageGatherRep; @@ -229,161 +232,175 @@ [UnitOfWork] public async Task<ValidateQiTaoOutput> ValdateQiTao(ValidateQiTaoInput input) { - ValidateQiTaoOutput output = new ValidateQiTaoOutput(); - if (input == null || input.PackageCode == null) + await semaphore2.WaitAsync(); + try { - throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖"); - } + 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 package = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync(); + if (package == null) + { + throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�"); + } - if (package.UpiStatus == UpiStatusEnum.宸蹭笅绾�) - { - throw Oops.Oh($"鍖厈input.PackageCode}宸蹭笅绾�"); - } + if (package.UpiStatus == UpiStatusEnum.宸蹭笅绾�) + { + throw Oops.Oh($"鍖厈input.PackageCode}宸蹭笅绾�"); + } - var unlineObj = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync(); - if (unlineObj != null) - { - throw Oops.Oh($"鍖呭彿{input.PackageCode}宸茬粡涓嬬嚎"); - } + var unlineObj = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync(); + if (unlineObj != null) + { + throw Oops.Oh($"鍖呭彿{input.PackageCode}宸茬粡涓嬬嚎"); + } - //鍒ゆ柇鏄惁鏄柊鐢熶骇璁㈠崟 - var _QiTaoReuslt = ""; - bool isNewOrder = false; - string _location = "BZ-33"; - var lastPackageUnline = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.UpiFlag == UpiFlagEnum.姝e父 && x.Location != "浜哄伐").OrderByDescending(x => x.Id).FirstAsync(); - if (lastPackageUnline == null) - {//璁や负鏄柊鐢熶骇璁㈠崟 - isNewOrder = true; - } - else - { - if (lastPackageUnline.Info5 != package.Info5) + //鍒ゆ柇鏄惁鏄柊鐢熶骇璁㈠崟 + var _QiTaoReuslt = ""; + bool isNewOrder = false; + string _location = "BZ-33"; + var lastPackageUnline = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.UpiFlag == UpiFlagEnum.姝e父 && x.Location != "浜哄伐").OrderByDescending(x => x.Id).FirstAsync(); + if (lastPackageUnline == null) {//璁や负鏄柊鐢熶骇璁㈠崟 isNewOrder = true; - if (lastPackageUnline.Location == "BZ-33") - { - _location = "BZ-32"; - } - else - { - _location = "BZ-33"; - } } else { - _location = lastPackageUnline.Location; + if (lastPackageUnline.Info5 != package.Info5) + {//璁や负鏄柊鐢熶骇璁㈠崟 + isNewOrder = true; + if (lastPackageUnline.Location == "BZ-33") + { + _location = "BZ-32"; + } + else + { + _location = "BZ-33"; + } + } + else + { + _location = lastPackageUnline.Location; + } } - } - if (string.IsNullOrEmpty(_location)) - {//榛樿 - _location = "BZ-33"; - } + if (string.IsNullOrEmpty(_location)) + {//榛樿 + _location = "BZ-33"; + } - _QiTaoReuslt = (bool)isNewOrder ? "鏂拌鍗�" : "褰撳墠璁㈠崟"; + _QiTaoReuslt = (bool)isNewOrder ? "鏂拌鍗�" : "褰撳墠璁㈠崟"; - //璁板綍宸ヤ綔鏃堕棿鍜屽伐浣滀汉 - var curUserName = App.User.FindFirst(ClaimConst.RealName)?.Value; + //璁板綍宸ヤ綔鏃堕棿鍜屽伐浣滀汉 + var curUserName = App.User.FindFirst(ClaimConst.RealName)?.Value; - 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) + var sysConfig_wms_unline_oper = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.wms_unline_oper); + if (sysConfig_wms_unline_oper == null) { - throw Oops.Oh($"娌℃湁閰嶇疆 鍖呰涓嬬嚎鐧婚檰鏃堕棿 鍊�"); + throw Oops.Oh($"娌℃湁閰嶇疆 鍖呰涓嬬嚎鎿嶄綔浜� 鍊�"); } - sysConfig_wms_unline_time.Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - await _sysConfigRep.UpdateAsync(sysConfig_wms_unline_time); + 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); + } + + + + //璇锋眰PLC + //鍒ゆ柇鏂瑰悜 + bool myLocation = false; + if (_location == "BZ-33") + { + myLocation = false; + } + else + { + myLocation = true; + } + var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep); + var res = await client.WriteQiTaoInfoAsync(myLocation); + if (res.result == false) + { + throw Oops.Oh(res.resMsg); + } + + + //鏇存柊鏁版嵁 + package.UpiStatus = UpiStatusEnum.宸蹭笅绾�; + package.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙; + await _mesPackageGatherRep.UpdateAsync(package); + + var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync(); + foreach (var item in upiList) + { + item.UpiStatus = UpiStatusEnum.宸蹭笅绾�; + item.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙; + item.UpdateTime = DateTime.Now; + } + await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList); + //鍒犻櫎闃熷垪淇℃伅 + var lineQueue = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync(); + if (lineQueue != null) + { + await _mes_Package_LineQueueRep.DeleteAsync(lineQueue); + } + //澶勭悊琛� mes_order_gather + await UpdateOrderGather(package, false); + + var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value; + + //鏂板涓嬬嚎璁板綍琛� + var all_upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.Info5 == package.Info5).ToListAsync(); + var all_unlineList = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.Info5 == package.Info5).ToListAsync(); + Mes_Package_UnLine_Record record = new Mes_Package_UnLine_Record(); + record = package.Adapt<Mes_Package_UnLine_Record>(); + record.Id = Yitter.IdGenerator.YitIdHelper.NextId(); + record.Location = _location; + record.AllPackageNum = all_upiList.GroupBy(x => x.PackageCode).Count(); + record.CurUnlineIndexPackageNum = all_unlineList.GroupBy(x => x.PackageCode).Count() + 1; + record.CreateTime = DateTime.Now; + record.CreateUserName = _cretaorName; + await _mes_Package_UnLine_RecordRep.InsertAsync(record); + + //璁板綍鍖呭饱鍘� + WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess(); + wmsRecordPackage = package.Adapt<WmsRecordPackageProcess>(); + wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId(); + wmsRecordPackage.Location = ""; + wmsRecordPackage.OperRemark = "姝e父涓嬬嚎"; + wmsRecordPackage.CreateTime = DateTime.Now; + wmsRecordPackage.CreateUserName = _cretaorName; + await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage); + + + output = package.Adapt<ValidateQiTaoOutput>(); + output.QiTaoReuslt = _QiTaoReuslt + $",绗瑊record.CurUnlineIndexPackageNum}鍖呬笅绾�,鍏眥record.AllPackageNum}鍖�"; + output.IsNewOrder = isNewOrder; + //output.IsNewOrder = false; + return output; } - - - - //璇锋眰PLC - //鍒ゆ柇鏂瑰悜 - bool myLocation = false; - if (_location == "BZ-33") + catch (Exception) { - myLocation = false; + + throw; } - else + finally { - myLocation = true; - } - var client = await WCFServiceHelper.GetWCFService_SAPCC_Client(_sysConfigRep); - var res = await client.WriteQiTaoInfoAsync(myLocation); - if (res.result == false) - { - throw Oops.Oh(res.resMsg); + semaphore2.Release(); } - - //鏇存柊鏁版嵁 - package.UpiStatus = UpiStatusEnum.宸蹭笅绾�; - package.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙; - await _mesPackageGatherRep.UpdateAsync(package); - - var upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).ToListAsync(); - foreach (var item in upiList) - { - item.UpiStatus = UpiStatusEnum.宸蹭笅绾�; - item.AreaCode = AreaCodeEnum.涓嬬嚎鍖哄煙; - item.UpdateTime = DateTime.Now; - } - await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList); - //鍒犻櫎闃熷垪淇℃伅 - var lineQueue = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync(); - if (lineQueue != null) - { - await _mes_Package_LineQueueRep.DeleteAsync(lineQueue); - } - //澶勭悊琛� mes_order_gather - await UpdateOrderGather(package, false); - - var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value; - - //鏂板涓嬬嚎璁板綍琛� - var all_upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.Info5 == package.Info5).ToListAsync(); - var all_unlineList = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.Info5 == package.Info5).ToListAsync(); - Mes_Package_UnLine_Record record = new Mes_Package_UnLine_Record(); - record = package.Adapt<Mes_Package_UnLine_Record>(); - record.Id = Yitter.IdGenerator.YitIdHelper.NextId(); - record.Location = _location; - record.AllPackageNum = all_upiList.GroupBy(x => x.PackageCode).Count(); - record.CurUnlineIndexPackageNum = all_unlineList.GroupBy(x => x.PackageCode).Count() + 1; - record.CreateTime = DateTime.Now; - record.CreateUserName = _cretaorName; - await _mes_Package_UnLine_RecordRep.InsertAsync(record); - - //璁板綍鍖呭饱鍘� - WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess(); - wmsRecordPackage = package.Adapt<WmsRecordPackageProcess>(); - wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId(); - wmsRecordPackage.Location = ""; - wmsRecordPackage.OperRemark = "姝e父涓嬬嚎"; - wmsRecordPackage.CreateTime = DateTime.Now; - wmsRecordPackage.CreateUserName = _cretaorName; - await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage); - - - output = package.Adapt<ValidateQiTaoOutput>(); - output.QiTaoReuslt = _QiTaoReuslt + $",绗瑊record.CurUnlineIndexPackageNum}鍖呬笅绾�,鍏眥record.AllPackageNum}鍖�"; - output.IsNewOrder = isNewOrder; - //output.IsNewOrder = false; - return output; } @@ -454,128 +471,140 @@ [UnitOfWork] public async Task UnlineForNGPackage(UnlineForNGPackageInput input) { - if (input == null) + await semaphore.WaitAsync(); + try { - throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖"); - } - if (string.IsNullOrEmpty(input.PackageCode)) - { - throw Oops.Oh("鍖呭彿涓嶈兘涓虹┖"); - } - //if (string.IsNullOrEmpty(input.Reason)) - //{ - // throw Oops.Oh("鍘熷洜涓嶈兘涓虹┖"); - //} - string _OperRemark = "姝e父浜哄伐涓嬬嚎"; - UpiFlagEnum upiFlagEnum = UpiFlagEnum.姝e父; - 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<WmsRecordUpiProcess>(); - 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>(); - 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) + if (input == null) { - await _mes_Upi_LineQueueRep.DeleteAsync(removeUpiList); + throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖"); + } + if (string.IsNullOrEmpty(input.PackageCode)) + { + throw Oops.Oh("鍖呭彿涓嶈兘涓虹┖"); + } + //if (string.IsNullOrEmpty(input.Reason)) + //{ + // throw Oops.Oh("鍘熷洜涓嶈兘涓虹┖"); + //} + string _OperRemark = "姝e父浜哄伐涓嬬嚎"; + UpiFlagEnum upiFlagEnum = UpiFlagEnum.姝e父; + if (input.IsNG) + { + upiFlagEnum = UpiFlagEnum.NG; + _OperRemark = "NG涓嬬嚎"; } - var removePackageList = await _mes_Package_LineQueueRep.AsQueryable().Where(x => x.PackageCode == item.PackageCode).ToListAsync(); - if (removePackageList?.Count > 0) + var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync(); + if (singlePackage == null) { - await _mes_Package_LineQueueRep.DeleteAsync(removePackageList); + 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<WmsRecordUpiProcess>(); + 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>(); + 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<WmsRecordPackageProcess>(); + wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId(); + wmsRecordPackage.Location = ""; + wmsRecordPackage.OperRemark = _OperRemark; + wmsRecordPackage.CreateTime = DateTime.Now; + wmsRecordPackage.CreateUserName = _cretaorName; + await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage); + + + //鏂板涓嬬嚎璁板綍琛� + var all_upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync(); + var all_unlineList = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync(); + Mes_Package_UnLine_Record record = new Mes_Package_UnLine_Record(); + record = singlePackage.Adapt<Mes_Package_UnLine_Record>(); + record.Id = Yitter.IdGenerator.YitIdHelper.NextId(); + record.Location = "浜哄伐"; + record.AllPackageNum = all_upiList.GroupBy(x => x.PackageCode).Count(); + record.CurUnlineIndexPackageNum = all_unlineList.GroupBy(x => x.PackageCode).Count() + 1; + record.CreateTime = DateTime.Now; + record.CreateUserName = _cretaorName; + await _mes_Package_UnLine_RecordRep.InsertAsync(record); + + + await _mesPackageGatherRep.UpdateAsync(singlePackage); + await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList); } + catch (Exception) + { - //涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹� _mesOrderGatherRep - await UpdateOrderGather(singlePackage, input.IsNG); - - - WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess(); - wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>(); - wmsRecordPackage.Id = Yitter.IdGenerator.YitIdHelper.NextId(); - wmsRecordPackage.Location = ""; - wmsRecordPackage.OperRemark = _OperRemark; - wmsRecordPackage.CreateTime = DateTime.Now; - wmsRecordPackage.CreateUserName = _cretaorName; - await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage); - - - //鏂板涓嬬嚎璁板綍琛� - var all_upiList = await _mesBatchOrderUpiRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync(); - var all_unlineList = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.Info5 == singlePackage.Info5).ToListAsync(); - Mes_Package_UnLine_Record record = new Mes_Package_UnLine_Record(); - record = singlePackage.Adapt<Mes_Package_UnLine_Record>(); - record.Id = Yitter.IdGenerator.YitIdHelper.NextId(); - record.Location = "浜哄伐"; - record.AllPackageNum = all_upiList.GroupBy(x => x.PackageCode).Count(); - record.CurUnlineIndexPackageNum = all_unlineList.GroupBy(x => x.PackageCode).Count() + 1; - record.CreateTime = DateTime.Now; - record.CreateUserName = _cretaorName; - await _mes_Package_UnLine_RecordRep.InsertAsync(record); - - - await _mesPackageGatherRep.UpdateAsync(singlePackage); - await _mesBatchOrderUpiRep.UpdateRangeAsync(upiList); - + throw; + } + finally + { + semaphore.Release(); + } } /// <summary> @@ -600,21 +629,46 @@ } 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(); + //璁$畻宸蹭笅绾挎暟 + var xiaList = packageList.Where(x => x.UpiStatus == UpiStatusEnum.宸蹭笅绾�).ToList(); + order.UnLinePackageNum = xiaList.Count(); + if (xiaList.Select(x => x.PackageCode).ToList().Contains(singlePackage.PackageCode) == false) + { + order.UnLinePackageNum += 1; + } + if (order.UnLinePackageNum > order.PackageNum) + { + order.UnLinePackageNum = order.PackageNum; + } + var ng_xiaList = packageList.Where(x => x.UpiStatus == UpiStatusEnum.宸蹭笅绾� && x.UpiFlag == UpiFlagEnum.NG).ToList(); + order.NgPackageNum = ng_xiaList.Count(); if (isNG) { - order.NgPackageNum = order.NgPackageNum + 1; + if (ng_xiaList.Select(x => x.PackageCode).ToList().Contains(singlePackage.PackageCode) == false) + { + order.NgPackageNum += 1; + } + } + if (order.NgPackageNum > order.PackageNum) + { + order.NgPackageNum = order.PackageNum; } 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.姝e父).Sum(x => Convert.ToDecimal(x.Info13)); - if (isNG == false) + var scan_list = packageList.Where(x => x.UpiStatus == UpiStatusEnum.宸蹭笅绾� && x.UpiFlag == (int)UpiFlagEnum.姝e父).ToList(); + order.ScanPackageArea = scan_list.Sum(x => Convert.ToDecimal(x.Info13)); + //if (isNG == false) + //{ + if (scan_list.Select(x => x.PackageCode).ToList().Contains(singlePackage.PackageCode) == false) { - order.ScanPackageArea = order.ScanPackageArea + Convert.ToDecimal(singlePackage.Info13); + order.ScanPackageArea += Convert.ToDecimal(singlePackage.Info13); + } + //} + if (order.ScanPackageArea > order.AllPackageArea) + { + order.ScanPackageArea = order.AllPackageArea; } order.NoScanPackageArea = order.AllPackageArea - order.ScanPackageArea; @@ -832,5 +886,24 @@ } } + + /// <summary> + /// 涓�閿竻鐞嗘澘浠堕槦鍒楁暟鎹� + /// </summary> + /// <returns></returns> + [HttpPost] + [ApiDescriptionSettings(Name = "OneKeyClearUpiQueue")] + [Description("WmsOperationTask/OneKeyClearUpiQueue")] + [UnitOfWork] + public async Task OneKeyClearUpiQueue() + { + var upiList = await _mes_Upi_LineQueueRep.AsQueryable().ToListAsync(); + if (upiList?.Count == 0) + { + throw Oops.Oh($"娌℃湁鏉夸欢鏁版嵁"); + } + await _mes_Upi_LineQueueRep.DeleteAsync(upiList); + + } } -- Gitblit v1.9.3