From c049523656adcbab2d16df48faa94c672063c0dc Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期日, 30 三月 2025 18:44:59 +0800 Subject: [PATCH] 备料任务初版 --- Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs | 91 ++++++++++++++++++++++++++++----------------- 1 files changed, 57 insertions(+), 34 deletions(-) diff --git a/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs b/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs index f9596e3..e27b735 100644 --- a/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs +++ b/Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs @@ -12,7 +12,7 @@ using Tiger.Model.Sharetronic.Shelf; using Tiger.Business.WMS.Sharetronic.Shelf; using Tiger.Model.Entitys.MES.U9C; -using Tiger.Model.Entitys.MES.Position; +using Tiger.Model.MES.Yada; namespace Tiger.Business.WMS.Transaction { @@ -82,13 +82,13 @@ { //瑙f瀽鏉$爜 Result<IInventory> result = WMS_ITEM_Biz.WmsItem.Get(input.SN, input.AuthOption, true); - if (!result.IsSuccessed) - { - action.IsSuccessed = false; - action.LocaleMsg = result.LocaleMsg; - return SetOutPutMqttMsg(action, input.Locale); - } - var inv = result.Data as Inventory; + if (!result.IsSuccessed) + { + action.IsSuccessed = false; + action.LocaleMsg = result.LocaleMsg; + return SetOutPutMqttMsg(action, input.Locale); + } + var inv = result.Data as Inventory; //楠岃瘉鏉$爜鏄惁姝g‘ if (!inv.isNormalStatus || inv.Status != WMS_ITEM.STATUSs.WaitIn) @@ -109,7 +109,7 @@ CurInvItem = inv; } - var receipt = await Biz.Db.Queryable<BIZ_U9_RECEIPT>().Where(q => q.ORDER_NO == CurInvItem.Items.First().TRANS_NO).IncludesAllFirstLayer().FirstAsync(); + var receipt = await MainDB.Queryable<BIZ_U9_RECEIPT>().Where(q => q.ORDER_NO == CurInvItem.Items.First().TRANS_NO).IncludesAllFirstLayer().FirstAsync(); if (receipt.IsNullOrEmpty()) { action.IsSuccessed = false; @@ -132,6 +132,14 @@ //action.LocaleMsg = Biz.L("鏀惰揣鍗曚腑鏉$爜[{0}]鐘舵�乕{1}]寮傚父锛岃鎵弿姝g‘鐨勬潯鐮�"); action.LocaleMsg = Biz.L("WMS.In_BIZ_U9_RECEIPT.ScanItem.ReceiptSnStatusException", CurInvItem.SN, receiptSn.First(q => q.STATUS != WMS_ITEM.STATUSs.WaitIn.GetValue()).STATUS.GetEnumDesc<WMS_ITEM.STATUSs>()); return SetOutPutMqttMsg(action, input.Locale); + } + //浠嶶9鑾峰彇鏀惰揣鍗曡淇℃伅 + var u9Dtl = Biz.DataSource["YadaU9C"].Client.Queryable<mes_ReturnedDocInfo>().Where(x => x.RcvId == receipt.ID.ToDouble() && x.DocLineNo == receiptDtl.LINE_NO.ToDouble() && x.SplitFlag != 1).First(); + if (!u9Dtl.IsNullOrEmpty() && u9Dtl.RcvQtyTU != receiptDtl.QTY_OK) + { + receiptDtl.ID = u9Dtl.RcvLineId.ToString(); + receiptDtl.QTY_OK = u9Dtl.RcvQtyTU; + receiptDtl.QTY_NG = receiptDtl.QTY - receiptDtl.QTY_OK; } var nLocation = new WMS_LOCATION(); @@ -211,49 +219,59 @@ } //鏇存柊鍗曟嵁淇℃伅 - foreach(var sn in receiptSn) + foreach (var sn in receiptSn) { sn.STATUS = WMS_ITEM.STATUSs.InStore.GetValue(); sn.IS_IN = "Y"; } //濡傛灉褰撳墠琛屼笂鏋跺畬鎴愭爣璁颁负寰呭鏍� - receiptDtl.QTY_IN = receipt.SnList.Where(q => q.LINE_NO == receiptDtl.LINE_NO && q.STATUS == WMS_ITEM.STATUSs.InStore.GetValue()).Sum(q => q.QTY); - if (receiptDtl.QTY_IN == receiptDtl.QTY) + Action approveAction = null; + receiptDtl.QTY_IN = receipt.SnList.Where(q => q.LINE_NO == receiptDtl.LINE_NO && q.STATUS == WMS_ITEM.STATUSs.InStore.GetValue()).Sum(q => q.QTY); + if (receiptDtl.QTY_IN == receiptDtl.QTY_OK) { receiptDtl.STATUS = BIZ_U9_RECEIPT.STATUSs.Review.GetValue(); //褰撳墠鍗曟嵁鏄庣粏宸茬粡鍏ㄩ儴涓婃灦瀹屾垚锛屽彲浠ヨ皟鐢║9琛屽鎺ュ彛 - var iInput = new SubmitLineInput + approveAction = () => { - userId = UserCode, - IsLogin = true, - param = new() + var iInput = new SubmitLineInput { - RcvLineID = receiptDtl.ID, - RcvDocNo = receiptDtl.ORDER_NO, - DocLineNo = receiptDtl.LINE_NO, - OrgCode = receiptDtl.AUTH_ORG, + userId = UserCode, + IsLogin = true, + param = new() + { + RcvLineID = receiptDtl.ID, + RcvDocNo = receiptDtl.ORDER_NO, + DocLineNo = receiptDtl.LINE_NO, + OrgCode = receiptDtl.AUTH_ORG, + } + }; + var result = DI.Resolve<IWMS_U9C>().ReceivementApproveLine(iInput).Result; + if (!result.IsSuccessed) + { + throw new Exception(Biz.T(result.LocaleMsg, input.Locale)); + } + else + { + //鏇存柊鍗曟嵁淇℃伅 + MainDB.Updateable<BIZ_U9_RECEIPT_DTL>().SetColumns(q => q.STATUS == BIZ_U9_RECEIPT.STATUSs.Finished.GetValue()).Where(q => q.ID == receiptDtl.ID).ExecuteCommand(); + if (!MainDB.Queryable<BIZ_U9_RECEIPT_DTL>().Any(q => q.STATUS < BIZ_U9_RECEIPT.STATUSs.Finished.GetValue() && q.ORDER_NO == receipt.ORDER_NO)) + { + MainDB.Updateable<BIZ_U9_RECEIPT>().SetColumns(q => q.STATUS == BIZ_U9_RECEIPT.STATUSs.Finished.GetValue()).Where(q => q.ID == receipt.ID).ExecuteCommand(); + } } }; - var result = await DI.Resolve<IWMS_U9C>().ReceivementApproveLine(iInput); - if (!result.IsSuccessed) - { - action.IsSuccessed = false; - action.LocaleMsg = result.LocaleMsg; - return SetOutPutMqttMsg(action, input.Locale); - } } else { receiptDtl.STATUS = BIZ_U9_RECEIPT.STATUSs.Storing.GetValue(); } - var dtlStatus = receipt.Details.Select(q => q.STATUS).Distinct(); - if (dtlStatus.Count() == 1 && dtlStatus.First() == BIZ_U9_RECEIPT.STATUSs.Review.GetValue()) + if (receipt.Details.Any(q => q.STATUS < BIZ_U9_RECEIPT.STATUSs.Review.GetValue())) { - receipt.STATUS = BIZ_U9_RECEIPT.STATUSs.Review.GetValue(); + receipt.STATUS = BIZ_U9_RECEIPT.STATUSs.Storing.GetValue(); } else { - receipt.STATUS = BIZ_U9_RECEIPT.STATUSs.Storing.GetValue(); + receipt.STATUS = BIZ_U9_RECEIPT.STATUSs.Review.GetValue(); } //鍒涘缓鍙橀噺鍏嬮殕瀵硅薄鐢ㄤ簬浼犲叆DBSubmitAction涓繚瀛樺綋鍓嶉渶瑕佹殏瀛樼殑鏁版嵁鍊� @@ -264,12 +282,12 @@ var db = GetCommitDB(); //鏁版嵁淇濆瓨閫昏緫 db.Updateable(receipt, UserCode).UpdateColumns(q => new { q.STATUS, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); - db.Updateable(receiptDtl, UserCode).UpdateColumns(q => new { q.STATUS, q.QTY_IN, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); + db.Updateable(receiptDtl, UserCode).UpdateColumns(q => new { q.ID, q.STATUS, q.QTY_IN, q.QTY_OK, q.QTY_NG, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); db.Updateable(receiptSn, UserCode).UpdateColumns(q => new { q.STATUS, q.IS_IN, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); }); //瀹屾垚鎵�鏈夊鐞嗗悗浣跨敤浜嬪姟淇濆瓨鏁版嵁 - action = DoIfFinish(action, input.Locale); + action = DoIfFinish(action, input.Locale, approveAction); } catch (Exception ex) { @@ -376,12 +394,17 @@ /// 瀹屾垚鎵�鏈夊鐞嗗悗浣跨敤浜嬪姟淇濆瓨鏁版嵁 /// </summary> /// <param name="action"></param> + /// <param name="locale"></param> + /// <param name="doAfterSave"></param> /// <returns></returns> - public ApiAction<ScanOutput> DoIfFinish(ApiAction<ScanOutput> action, string locale) + public ApiAction<ScanOutput> DoIfFinish(ApiAction<ScanOutput> action, string locale, Action doAfterSave = null) { //淇濆瓨鏁版嵁搴� SaveCommitListToDB(); + //淇濆瓨鏁版嵁鎴愬姛鍚庢墽琛� + doAfterSave?.Invoke(); + // 杩斿洖鏁版嵁 action.Data.Data = new DefaultInStoreOutput { -- Gitblit v1.9.3