From f8b74ce69663bed763f9fbc5b251a5d2da9bb4c7 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期三, 09 四月 2025 18:26:11 +0800
Subject: [PATCH] 清点更新

---
 Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs |   76 +++++++++++++++++++++++++------------
 1 files changed, 51 insertions(+), 25 deletions(-)

diff --git a/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs b/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs
index 33359cd..864eb8d 100644
--- a/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs
+++ b/Tiger.Business.WMS/Transaction/Yada/Count_BIZ_U9_ASN.cs
@@ -67,7 +67,7 @@
             catch (Exception ex)
             {
                 //鍙栨秷褰撳墠鎿嶄綔
-                ResetScan();
+                ResetTrans();
                 //action.CatchExceptionWithLog(ex, $"鎵弿[{input.SN}]寮傚父");
                 action.CatchExceptionWithLog(ex, Biz.L("WMS.Default.Scan.ScanException", input.SN));
             }
@@ -153,12 +153,19 @@
                 });
 
                 //瀹屾垚鎵�鏈夊鐞嗗悗浣跨敤浜嬪姟淇濆瓨鏁版嵁
-                action = DoIfFinish(action, input.Locale);
+                action = DoIfFinish(action, input.Locale, () =>
+                {
+                    if (!OrderList.Contains(CurSn.First().ORDER_NO))
+                    {
+                        OrderList.Add(CurSn.First().ORDER_NO);
+                    }
+                    ScanList.AddRange(CurSn);
+                });
             }
             catch (Exception ex)
             {
                 //鍙栨秷褰撳墠鎿嶄綔
-                ResetScan();
+                ResetTrans();
                 //action.CatchExceptionWithLog(ex, $"鎵弿鏉$爜[{0}]澶嶆牳寮傚父");
                 action.CatchExceptionWithLog(ex, Biz.L("WMS.Default.ScanItem.ScanException", input.SN));
             }
@@ -169,17 +176,16 @@
         /// 瀹屾垚鎵�鏈夊鐞嗗悗浣跨敤浜嬪姟淇濆瓨鏁版嵁
         /// </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();
 
-            if (!OrderList.Contains(CurSn.First().ORDER_NO))
-            {
-                OrderList.Add(CurSn.First().ORDER_NO);
-            }
-            ScanList.AddRange(CurSn);
+            //淇濆瓨鏁版嵁鎴愬姛鍚庢墽琛�
+            doAfterSave?.Invoke();
 
             // 杩斿洖鏁版嵁
             action.Data.Data = ScanList;
@@ -188,7 +194,7 @@
             action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.CountSuccess", CurSn.First().SN);
 
             //閲嶇疆宸ュ簭
-            ResetScan();
+            ResetTrans();
             return SetOutPutMqttMsg(action, locale); ;
         }
 
@@ -396,12 +402,13 @@
                     return action;
                 }
 
-                //鏌ヨ鏄惁娓呯偣瀹屾垚
+                //鏌ヨ鏄惁瀛樺湪娓呯偣瀹屾垚鐨勮鏄庣粏锛屽鏋滄湁鍒欏厛鎻愪氦瀹屾垚鐨勮锛屽鏋滄病鏈夊垯鎶ラ敊
+                var finishNotSubmit = order.Details.Where(q => SqlFunc.IsNullOrEmpty(q.RECEIVER_NO) && q.QTY == order.SnList.Where(s => s.LINE_NO == q.LINE_NO && (s.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).Sum(s => s.QTY)).ToList();
                 var noFinish = order.Details.Where(q => q.QTY != order.SnList.Where(s => s.LINE_NO == q.LINE_NO && (s.STATUS == WMS_ITEM.STATUSs.Counted.GetValue() || q.STATUS == WMS_ITEM.STATUSs.Rejected.GetValue())).Sum(s => s.QTY));
-                if (noFinish.Any())
+                if (!finishNotSubmit.Any())
                 {
                     action.IsSuccessed = false;
-                    //action.LocaleMsg = Biz.L("閫佽揣鍗昜{0}]鏈竻鐐瑰畬鎴愶紝璇峰厛娓呯偣瀹屾垚锛屾湭瀹屾垚娓呯偣鐨勮鍙峰涓嬶細{1}");
+                    //action.LocaleMsg = Biz.L("閫佽揣鍗昜{0}]娌℃湁娓呯偣瀹屾垚鍙互鎻愪氦鐨勮锛屾湭瀹屾垚娓呯偣鐨勮鍙峰涓嬶細{1}");
                     action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceipt.NoFinishCounting", orderNo, string.Join("锛�", noFinish.Select(q => q.LINE_NO)));
                     return action;
                 }
@@ -412,7 +419,7 @@
                     IsLogin = true,
                     CreateRcvBySrcASNParam = new()
                     {
-                        aSNToRcvTransDTOs = order.Details.Select(q => new ASNToRcvTransDTO
+                        aSNToRcvTransDTOs = finishNotSubmit.Select(q => new ASNToRcvTransDTO
                         {
                             ASNLineKey = q.ID,
                             TransQty = new() { m_amount1 = q.QTY },
@@ -453,7 +460,7 @@
 
                     foreach (var item in list)
                     {
-                        var asnDtl = order.Details.First(q => q.ID == item.SrcASNDocLineId.ToString());
+                        var asnDtl = finishNotSubmit.First(q => q.ID == item.SrcASNDocLineId.ToString());
                         BIZ_U9_RECEIPT_DTL receiptDt = new()
                         {
                             ID = item.RcvLineId.ToString(),
@@ -469,11 +476,19 @@
                             ASN_LINE_ID = item.SrcASNDocLineId.ToString(),
                             ASN_LINE = asnDtl.LINE_NO,
                             ERP_CODE = item.ItemCode1,
+                            ERP_STATUS_CODE = item.Status.ToString(),
+                            ERP_STATUS_NAME = item.StatusName,
                         };
                         receipt.Details.Add(receiptDt);
+                        asnDtl.STATUS = BIZ_U9_ASN.STATUSs.Finished.GetValue();
+                        asnDtl.RECEIVER_ID = item.RcvId.ToString();
+                        asnDtl.RECEIVER_NO = item.DocNo;
+                        asnDtl.RECEIVER_LINE = item.DocLineNo.ToString();
+                        asnDtl.RECEIVER = UserCode;
+                        asnDtl.RECEIVE_DATE = DateTime.Now;
                     }
 
-                    foreach (var sn in order.SnList)
+                    foreach (var sn in order.SnList.Where(q=> finishNotSubmit.Any(s => s.LINE_NO == q.LINE_NO)))
                     {
                         var dtl = receipt.Details.First(q => q.ASN_LINE == sn.LINE_NO);
                         BIZ_U9_RECEIPT_SN receiptSn = new()
@@ -523,11 +538,12 @@
                     item.TRANS_NO = receipt.ORDER_NO;
                     item.TRANS_LINE = receipt.SnList.First(q => q.SN == item.SN).LINE_NO;
                 }
-                order.STATUS = BIZ_U9_ASN.STATUSs.Finished.GetValue();
-                order.RECEIVER_ID = receipt.ID;
-                order.RECEIVER_NO = receipt.ORDER_NO;
-                order.RECEIVER = UserCode;
-                order.RECEIVE_DATE = DateTime.Now;
+                if (!noFinish.Any())
+                {
+                    order.STATUS = BIZ_U9_ASN.STATUSs.Finished.GetValue();
+                    order.RECEIVER = UserCode;
+                    order.RECEIVE_DATE = DateTime.Now;
+                }
 
                 //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄
                 var db = GetCommitDB();
@@ -537,6 +553,7 @@
                     db.Updateable(pkgs, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.AUTH_ORG, q.TRANS_CODE, q.TRANS_NO, q.TRANS_LINE, q.SOURCE_CODE, q.SOURCE_ORDER, q.SOURCE_LINE }).ExecuteCommand();
                     db.Insertable(historys, UserCode).ExecuteCommand();
                     db.Updateable(order, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.RECEIVER, q.RECEIVE_DATE, q.RECEIVER_ID, q.RECEIVER_NO }).ExecuteCommand();
+                    db.Updateable(finishNotSubmit, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS, q.RECEIVER, q.RECEIVE_DATE, q.RECEIVER_ID, q.RECEIVER_NO }).ExecuteCommand();
                     db.Insertable(receipt, UserCode).ExecuteCommand();
                     db.Insertable(receipt.Details, UserCode).ExecuteCommand();
                     db.Insertable(receipt.SnList, UserCode).ExecuteCommand();
@@ -564,15 +581,24 @@
         #endregion
 
         /// <summary>
-        /// 閲嶇疆褰撳墠鎿嶄綔锛屾湁闇�瑕佸垯閲嶅啓姝ゆ柟娉�
+        /// 閲嶇疆浜嬪姟鏁版嵁锛屾湁闇�瑕佸垯閲嶅啓姝ゆ柟娉�
+        /// </summary>
+        public override void ResetTrans()
+        {
+            ResetScan();
+            CurScanShelf = null;
+            base.ResetTrans();
+        }
+
+        /// <summary>
+        /// 閲嶇疆鏈鎵爜淇℃伅
         /// </summary>
         public override void ResetScan()
         {
-            base.ResetScan();
-            Command = null;
+            Command = "Normal";
             CurInvItem = null;
-            CurScanShelf = null;
             CurSn = null;
+            base.ResetScan();
         }
 
         public override bool Close(bool needSaveHistoryLog = false)

--
Gitblit v1.9.3