From 4a68e02a9dbffe0b215ceb1d9758ccb17329e523 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周三, 18 12月 2024 10:49:30 +0800 Subject: [PATCH] 222 --- LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs | 589 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 554 insertions(+), 35 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 1f1e045..66c1fd6 100644 --- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs +++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOperationTask/WmsOperationTaskService.cs @@ -8,6 +8,8 @@ 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; /// <summary> @@ -24,16 +26,30 @@ private readonly SqlSugarRepository<Mes_Order_Gather> _mesOrderGatherRep; private readonly SqlSugarRepository<WmsRecordUpiProcess> _wmsRecordUpiProcessRep; private readonly SqlSugarRepository<WmsRecordPackageProcess> _wmsRecordPackageProcessRep; + private readonly SqlSugarRepository<Mes_Upi_LineQueue> _mes_Upi_LineQueueRep; + private readonly SqlSugarRepository<Mes_Package_LineQueue> _mes_Package_LineQueueRep; + private readonly SqlSugarRepository<WmsRecordUpiNg> _wmsRecordUpiNgRep; + private readonly SqlSugarRepository<Mes_Package_UnLine_Record> _mes_Package_UnLine_RecordRep; + private readonly WmsCommonnQueryService _wmsCommonnQueryService; - public WmsOperationTaskService(SqlSugarRepository<WmsRbLineTask> rep, SqlSugarRepository<WmsStockQuan> wmsStockQuanRep + public WmsOperationTaskService( + SqlSugarRepository<Mes_Upi_LineQueue> mes_Upi_LineQueueRep, + SqlSugarRepository<WmsRbLineTask> rep, SqlSugarRepository<WmsStockQuan> wmsStockQuanRep , SqlSugarRepository<Mes_Package_Gather> mesPackageGatherRep , SqlSugarRepository<SysConfig> sysConfigRep , SqlSugarRepository<Mes_BatchOrderUPI_New> mesBatchOrderUpiRep , SqlSugarRepository<Mes_Order_Gather> mesOrderGatherRep , SqlSugarRepository<WmsRecordUpiProcess> wmsRecordUpiProcessRep , SqlSugarRepository<WmsRecordPackageProcess> wmsRecordPackageProcessRep + , SqlSugarRepository<WmsRecordUpiNg> wmsRecordUpiNgRep + , WmsCommonnQueryService wmsCommonnQueryService + , SqlSugarRepository<Mes_Package_LineQueue> mes_Package_LineQueueRep + , SqlSugarRepository<Mes_Package_UnLine_Record> mes_Package_UnLine_RecordRep ) { + _mes_Package_LineQueueRep = mes_Package_LineQueueRep; + _wmsCommonnQueryService = wmsCommonnQueryService; + _wmsRecordUpiNgRep = wmsRecordUpiNgRep; _sysConfigRep = sysConfigRep; _mesPackageGatherRep = mesPackageGatherRep; _rep = rep; @@ -42,6 +58,8 @@ _mesOrderGatherRep = mesOrderGatherRep; _wmsRecordUpiProcessRep = wmsRecordUpiProcessRep; _wmsRecordPackageProcessRep = wmsRecordPackageProcessRep; + _mes_Upi_LineQueueRep = mes_Upi_LineQueueRep; + _mes_Package_UnLine_RecordRep = mes_Package_UnLine_RecordRep; } @@ -61,25 +79,139 @@ { throw Oops.Oh("鍙傛暟涓嶈兘涓虹┖"); } + //楠岃瘉浼犻�掔殑鍖呮槸鍚﹂兘鍦ㄩ綈鍖呬箣鍐呫�� + List<WmsPackListOutput> packList = await _wmsCommonnQueryService.PackList(new Service.WmsCommonnQuery.Dto.PackListInput() { IsPack = false }); + List<WmsStockQuan> updateQuanList = new List<WmsStockQuan>(); 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.榻愬寘寰呭嚭搴�).Count(); + var isExist = quanList.Where(x => x.StockStatus == StockStatusEnum.榻愬寘寰呭嚭搴� || x.StockStatus == StockStatusEnum.浜哄伐榻愬寘鍑哄簱浠诲姟宸插垱寤�).Count(); if (isExist > 0) { - throw Oops.Oh($"鍖厈item}涓叾涓湁鏉跨姸鎬佹槸'{StockStatusEnum.榻愬寘寰呭嚭搴�.ToString()}'锛屼笉鍏佽寮哄埗鍑哄簱"); + 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); + + } + + + /// <summary> + /// 浜哄伐榻愬寘鍑哄簱 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [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<WmsPackListOutput> packList = await _wmsCommonnQueryService.PackList(new Service.WmsCommonnQuery.Dto.PackListInput() { IsPack = true }); + + List<WmsStockQuan> updateQuanList = new List<WmsStockQuan>(); + 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); @@ -87,7 +219,7 @@ } /// <summary> - /// 鍒ゆ柇榻愬 + /// 涓嬬嚎鏀捐 /// </summary> /// <param name="input"></param> /// <returns></returns> @@ -109,42 +241,55 @@ throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�"); } - - - var sysConfig = await _sysConfigRep.GetFirstAsync(x => x.Code == CommonConst.WmsBZ30_QiTao); - if (sysConfig == null) + if (package.UpiStatus == UpiStatusEnum.宸蹭笅绾�) { - throw Oops.Oh($"娌℃湁閰嶇疆 鍒ゆ柇榻愬 鍊�"); - } - if (!string.IsNullOrEmpty(sysConfig.Value) && sysConfig.Value.Trim() != "鏃�") - { - throw Oops.Oh($"鍒ゆ柇榻愬鍊煎凡缁忓瓨鍦ㄥ�納sysConfig.Value},涓嶅厑璁告搷浣�"); + throw Oops.Oh($"鍖厈input.PackageCode}宸蹭笅绾�"); } - //璁板綍宸ヤ綔鏃堕棿鍜屽伐浣滀汉 - var curUserName = App.User.FindFirst(ClaimConst.RealName)?.Value; + var unlineObj = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync(); + if (unlineObj != null) + { + throw Oops.Oh($"鍖呭彿{input.PackageCode}宸茬粡涓嬬嚎"); + } - var setValue = ""; + //鍒ゆ柇鏄惁鏄柊鐢熶骇璁㈠崟 var _QiTaoReuslt = ""; - 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.鍒濆 || x.UpiStatus == UpiStatusEnum.涓嶉綈鍖�).Count(); - if (num > 0) - { - //涓嶉綈濂� - setValue = $"{input.PackageCode}|涓嶉綈濂梶" + curUserName; - _QiTaoReuslt = "涓嶉綈濂�"; + bool isNewOrder = false; + string _location = "BZ-33"; + var lastPackageUnline = await _mes_Package_UnLine_RecordRep.AsQueryable().Where(x => x.UpiFlag == UpiFlagEnum.姝e父).OrderByDescending(x => x.Id).FirstAsync(); + if (lastPackageUnline == null) + {//璁や负鏄柊鐢熶骇璁㈠崟 + isNewOrder = true; } else { - setValue = $"{input.PackageCode}|榻愬|" + curUserName; - _QiTaoReuslt = "榻愬"; + 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"; } + _QiTaoReuslt = (bool)isNewOrder ? "鏂拌鍗�" : "褰撳墠璁㈠崟"; - sysConfig.Value = setValue; - await _sysConfigRep.UpdateAsync(sysConfig); - //*/ + //璁板綍宸ヤ綔鏃堕棿鍜屽伐浣滀汉 + 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) @@ -166,8 +311,78 @@ } + + //璇锋眰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; + output.QiTaoReuslt = _QiTaoReuslt + $",绗瑊record.CurUnlineIndexPackageNum}鍖呬笅绾�,鍏眥record.AllPackageNum}鍖�"; + output.IsNewOrder = isNewOrder; + //output.IsNewOrder = false; return output; } @@ -204,16 +419,22 @@ throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�"); } + var _cretaorName = App.User.FindFirst(ClaimConst.RealName)?.Value; + WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess(); wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>(); + 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<WmsRecordUpiProcess>(); + wmsRecordUpi.Id = Yitter.IdGenerator.YitIdHelper.NextId(); wmsRecordUpi.CreateTime = DateTime.Now; + wmsRecordUpi.CreateUserName = _cretaorName; wmsRecordUpi.Location = "BZ29"; wmsRecordUpi.OperRemark = "鏍稿鏍囩"; await _wmsRecordUpiProcessRep.InsertAsync(wmsRecordUpi); @@ -223,7 +444,7 @@ /// <summary> - /// NG鍖呬笅绾� + /// NG鍖呬笅绾挎垨 姝e父鍖� 涓嬬嚎 -鎵弿鍖呭彿 /// </summary> /// <param name="input"></param> /// <returns></returns> @@ -241,9 +462,16 @@ { throw Oops.Oh("鍖呭彿涓嶈兘涓虹┖"); } - if (string.IsNullOrEmpty(input.Reason)) + //if (string.IsNullOrEmpty(input.Reason)) + //{ + // throw Oops.Oh("鍘熷洜涓嶈兘涓虹┖"); + //} + string _OperRemark = "姝e父浜哄伐涓嬬嚎"; + UpiFlagEnum upiFlagEnum = UpiFlagEnum.姝e父; + if (input.IsNG) { - throw Oops.Oh("鍘熷洜涓嶈兘涓虹┖"); + upiFlagEnum = UpiFlagEnum.NG; + _OperRemark = "NG涓嬬嚎"; } var singlePackage = await _mesPackageGatherRep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync(); @@ -252,16 +480,29 @@ throw Oops.Oh($"娌℃湁鎵惧埌鍖呭彿{input.PackageCode}鐨勬眹鎬绘暟鎹�"); } - singlePackage.UpiFlag = UpiFlagEnum.NG; + 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; @@ -271,17 +512,50 @@ 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 = "NG涓嬬嚎"; + 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 = "NG涓嬬嚎"; + wmsRecordPackage.OperRemark = _OperRemark; + wmsRecordPackage.CreateTime = DateTime.Now; + wmsRecordPackage.CreateUserName = _cretaorName; await _wmsRecordPackageProcessRep.InsertAsync(wmsRecordPackage); @@ -290,5 +564,250 @@ } + /// <summary> + /// 鍏叡-涓嬬嚎鏇存柊 璁㈠崟琛ㄦ暟鎹� + /// </summary> + /// <param name="singlePackage"></param> + /// <returns></returns> + 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.姝e父).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); + } + } + + /// <summary> + /// 鏍囪NG-鎵弿浠跺彿 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [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<WmsRecordUpiProcess>(); + 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>(); + 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<WmsRecordPackageProcess>(); + 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); + + } + + + /// <summary> + /// 鍙栨秷NG-鎵弿浠跺彿 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [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.姝e父; + 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.姝e父; + item.UpdateTime = DateTime.Now; + item.UpdateUserName = _cretaorName; + + 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 = "鍙栨秷NG"; + 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 = "鍙栨秷NG"; + await _wmsRecordUpiNgRep.InsertAsync(wmsRecordUpiNg); + } + + + WmsRecordPackageProcess wmsRecordPackage = new WmsRecordPackageProcess(); + wmsRecordPackage = singlePackage.Adapt<WmsRecordPackageProcess>(); + 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); + + } + + + /// <summary> + /// 鎵爜璁板綍娓呴櫎 + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [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); + } + } + } -- Gitblit v1.9.3