From 29e5727404f1c34af7b0f9b80c0876e6eeb4b91c Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期三, 02 四月 2025 16:34:55 +0800
Subject: [PATCH] 上架修改调用完接口再保存

---
 Tiger.Business.WMS/Transaction/Yada/In_BIZ_U9_RECEIPT.cs |   68 ++++++++++++++++++++++++---------
 1 files changed, 49 insertions(+), 19 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..1cd1a9b 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
 {
@@ -81,14 +81,14 @@
                 if (CurInvItem.IsNullOrEmpty())
                 {
                     //瑙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;
+                    Result<IInventory> result = GetInventory(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;
 
                     //楠岃瘉鏉$爜鏄惁姝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();
@@ -201,6 +209,15 @@
                     item.PROD_DATE = item.PROD_DATE < new DateTime(2000, 1, 1) ? DateTime.Now : item.PROD_DATE;
                     item.FIRST_IN_DATE = item.FIRST_IN_DATE < new DateTime(2000, 1, 1) ? DateTime.Now : item.FIRST_IN_DATE;
                 }
+                foreach (var item in CurInvItem.Packages)
+                {
+                    item.SOURCE_CODE = item.TRANS_CODE;
+                    item.SOURCE_ORDER = item.TRANS_NO;
+                    item.SOURCE_LINE = item.TRANS_LINE;
+                    item.TRANS_CODE = nameof(BIZ_U9_RECEIPT);
+                    item.TRANS_NO = receipt.ORDER_NO;
+                    item.TRANS_LINE = receiptDtl.LINE_NO;
+                }
                 Result putonResult = PutOn(input.AuthOption, nLocation.LOCATION_CODE);
                 if (!putonResult.IsSuccessed)
                 {
@@ -211,17 +228,17 @@
                 }
 
                 //鏇存柊鍗曟嵁淇℃伅
-                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)
+                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琛屽鎺ュ彛
+                    //褰撳墠鍗曟嵁鏄庣粏琛屽凡缁忓叏閮ㄤ笂鏋跺畬鎴愶紝鍙互璋冪敤U9琛屽鎺ュ彛锛屽鏋滆瀹″け璐ュ垯鎶ラ敊锛屾渶鍚庝竴涓笂鏋跺け璐�
                     var iInput = new SubmitLineInput
                     {
                         userId = UserCode,
@@ -241,19 +258,27 @@
                         action.LocaleMsg = result.LocaleMsg;
                         return SetOutPutMqttMsg(action, input.Locale);
                     }
+                    else
+                    {
+                        receiptDtl.STATUS = BIZ_U9_RECEIPT.STATUSs.Finished.GetValue();
+                    }
                 }
                 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.Storing.GetValue();
+                }
+                else if (receipt.Details.Any(q => q.STATUS < BIZ_U9_RECEIPT.STATUSs.Finished.GetValue()))
                 {
                     receipt.STATUS = BIZ_U9_RECEIPT.STATUSs.Review.GetValue();
                 }
                 else
                 {
-                    receipt.STATUS = BIZ_U9_RECEIPT.STATUSs.Storing.GetValue();
+                    receipt.STATUS = BIZ_U9_RECEIPT.STATUSs.Finished.GetValue();
                 }
 
                 //鍒涘缓鍙橀噺鍏嬮殕瀵硅薄鐢ㄤ簬浼犲叆DBSubmitAction涓繚瀛樺綋鍓嶉渶瑕佹殏瀛樼殑鏁版嵁鍊�
@@ -264,7 +289,7 @@
                     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();
                 });
 
@@ -376,12 +401,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