From 77da8b9247b9df926678cfb7e4af0f0900f3a084 Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期二, 13 五月 2025 18:32:52 +0800
Subject: [PATCH] 修复了一些已知问题

---
 Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs |   58 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 35 insertions(+), 23 deletions(-)

diff --git a/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs b/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
index d7da543..23f7840 100644
--- a/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
+++ b/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
@@ -10,11 +10,7 @@
 using Tiger.Model;
 using Tiger.IBusiness;
 using Tiger.Business.WMS.Common;
-using Org.BouncyCastle.Ocsp;
-using Tiger.Model.Sharetronic.Shelf;
-using MailKit.Search;
 using Tiger.Business.WMS.Extensions;
-using static Tiger.Model.BIZ_WMS_PREP_BTH;
 
 namespace Tiger.Business.WMS.Transaction
 {
@@ -34,7 +30,7 @@
         #region Propertys & Variables
         public Preparation CurPREP { get; set; }
         private List<BIZ_WMS_PREP_SN> CurSn = new();
-        private BIZ_WMS_PREP_DTL CurPrepDtl = new();
+        private BIZ_WMS_PREP_DTL CurPrepDtl;
         public List<SuggestItem> Suggests { get; set; } = new();
         public List<WMS_ITEM_POOL> CurPoolList => Suggests.Where(q => !q.poolItem.IsNullOrEmpty()).Select(q => q.poolItem).ToList();
         public List<WMS_LOCATION> LocationHis { get; set; } = new();
@@ -51,7 +47,8 @@
             var action = new ApiAction<ScanOutput>(new ScanOutput());
             try
             {
-
+                //Result<List<SuggestItem>> result = Suggest("CurPrepDtl.ORDER_NO", "CurPrepDtl.ITEM_CODE", new SuggestOption(), new(), 100.0);
+                //action.LocaleMsg = result.LocaleMsg;
                 if (input.Command == "ScanOrder")
                 {
                     action = await ScanOrder(input);
@@ -158,8 +155,8 @@
         public async Task<ApiAction<BIZ_WMS_PREP>> GetPrepInfo()
         {
             var action = new ApiAction<BIZ_WMS_PREP>();
-            CurPREP.Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ID == CurPREP.Order.ID).IncludesAllFirstLayer().First();
-
+            var prepId = CurPREP?.Order?.ID;
+            CurPREP.Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ID == prepId).IncludesAllFirstLayer().First();
             action.Data = CurPREP.Order;
             return action;
         }
@@ -222,7 +219,7 @@
                         var actQty = CurPrepDtl.QTY_PREP > CurPREP.BizType.GetActReqQty(CurPrepDtl) ? 0 : (CurPREP.BizType.GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP);
                         if (inv != null && actQty > 0)
                         {
-                            inv.poolItem = inv.Item.GetPoolItem(OrgCode, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, actQty, true);
+                            inv.poolItem = inv.Item.GetPoolItem(OrgCode, TransID, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, actQty, true);
                         }
                         else
                         {
@@ -239,19 +236,20 @@
                     var actQty = CurPrepDtl.QTY_PREP > CurPREP.BizType.GetActReqQty(CurPrepDtl) ? 0 : (CurPREP.BizType.GetActReqQty(CurPrepDtl) - CurPrepDtl.QTY_PREP);
                     Result<List<SuggestItem>> result = Suggest(CurPrepDtl.ORDER_NO, CurPrepDtl.ITEM_CODE, option, input.AuthOption, actQty);
                     action.LocaleMsg = result.LocaleMsg;
-                    if (result.IsException)
+                    if (result.IsException || result.IsFailed)
                     {
                         action.IsSuccessed = false;
                         return action;
                     }
 
                     Suggests.Clear();
+                    Suggests = result.Data;
                     var remain = actQty;
                     Suggests.ForEach((inv) =>
                     {
                         if (remain > 0)
                         {
-                            inv.poolItem = inv.Item.GetPoolItem(input.AuthOption.OrgCode, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, remain, false);
+                            inv.poolItem = inv.Item.GetPoolItem(OrgCode, TransID, nameof(CurPREP.Order), CurPrepDtl.ORDER_NO, CurPrepDtl.ORDER_LINE, remain, false);
                             remain -= inv.poolItem.ALLOC_QTY;
                         }
                         else
@@ -290,12 +288,16 @@
         public async Task<ApiAction<BIZ_WMS_PREP_DTL>> GetCurPrepItem()
         {
             var action = new ApiAction<BIZ_WMS_PREP_DTL>();
-            var prepDtl = MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ID == CurPrepDtl.ID).First();
-            prepDtl.Suggests = Suggests;
-            CurPrepDtl = prepDtl;
-            CurPREP.Order.Details.RemoveAll(q => q.ID == CurPrepDtl.ID);
-            CurPREP.Order.Details.Add(CurPrepDtl);
-            action.Data = CurPrepDtl;
+            if (!CurPrepDtl.IsNullOrEmpty())
+            {
+	            var prepDtl = MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ID == CurPrepDtl.ID).First();
+	            prepDtl.Suggests = Suggests;
+                prepDtl.Deliverys = MainDB.Queryable<BIZ_WMS_PREP_SN>().Where(q => q.ORDER_NO == CurPrepDtl.ORDER_NO && q.ORDER_LINE == CurPrepDtl.ORDER_LINE && q.STATUS == WMS_ITEM.STATUSs.OffShelf.GetValue()).ToList();
+                CurPrepDtl = prepDtl;
+	            CurPREP.Order.Details.RemoveAll(q => q.ID == CurPrepDtl.ID);
+	            CurPREP.Order.Details.Add(CurPrepDtl);
+	            action.Data = CurPrepDtl;
+            }
             return action;
         }
 
@@ -444,6 +446,14 @@
                     action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanItem.NoNeedItemCode", inv.CurPkg.SN, CurPrepDtl.ITEM_CODE);
                     return action;
                 }
+                //鍒ゆ柇鏄惁鍦ㄥ鏂欐暟閲忓凡缁忚秴杩囬渶姹傛暟閲忓垯涓嶅厑璁哥户缁彂鏂�
+                if (CurPrepDtl.QTY_PREP > CurPREP.BizType.GetActReqQty(CurPrepDtl))
+                {
+                    action.IsSuccessed = false;
+                    //action.LocaleMsg = Biz.L($"褰撳墠鐗╂枡[{0}]瀹為檯闇�姹俒{1}]宸插鏂橻{2}]锛屾棤闇�缁х画涓嬫灦锛岃鏀惧洖鍘熷偍浣嶅苟閫夋嫨鍏朵粬鐗╂枡琛岀户缁搷浣�");
+                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanItem.PrepQtyEnough", CurPrepDtl.ITEM_CODE, CurPREP.BizType.GetActReqQty(CurPrepDtl), CurPrepDtl.QTY_PREP);
+                    return action;
+                }
                 //鍒ゆ柇鏄惁鍦ㄥ鏂欎腑鐨勭墿鏂�
                 //if (!CurPREP.Order.Details.Any(q => q.ITEM_CODE == inv.ItemInfo.ITEM_CODE))
                 //{
@@ -452,7 +462,7 @@
                 //    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.ScanItem.NoNeedItemCode", inv.ItemInfo.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode));
                 //    return action;
                 //}
-                
+
                 //ProcessingOrderDetail = input.SN;
                 //if (WMSContext.TransactionDic.Where(q => !string.IsNullOrWhiteSpace(q.Value.ProcessingSn)).Any(q => q.Value.ProcessingSn == ProcessingSn && q.Value.TransID != this.TransID))
                 //{
@@ -515,7 +525,7 @@
                 {
                     //action.LocaleMsg = Biz.L($"鏉$爜[{0}]鎵弿鎴愬姛锛屽鏂欑墿鏂橻{1}]闇�姹俒{2}]杩橀渶澶囨枡[{3}]锛屾潯鐮侀渶瑕佹埅鏂欙紝鍙戝嚭鏁伴噺[{4}]");
                     //action.LocaleMsg = Biz.L($"鏉$爜[{0}]鎵弿鎴愬姛锛屽鏂欑墿鏂橻{1}]闇�姹俒{2}]杩橀渶澶囨枡[{3}]锛岃閫夋嫨瑕佽秴鍙戣繕鏄埅鏂欙紵");
-                    action.LocaleMsg = Biz.L($"WMS.Out_BIZ_WMS_PREP.ScanItem.Success{(isNeedCut ? "" : "Confirm")}", CurInvItem.SN, CurInvItem.ItemInfo.ITEM_CODE, CurPREP.BizType.GetActReqQty(CurPrepDtl), actQty);
+                    action.LocaleMsg = Biz.L($"WMS.Out_BIZ_WMS_PREP.ScanItem.Success{(isNeedCut ? "" : "Confirm")}", CurInvItem.SN, CurInvItem.ItemInfo.ITEM_CODE, CurPREP.BizType.GetActReqQty(CurPrepDtl), actQty, CurSn.Sum(q => q.QTY_DLVY));
                     action.Data.Command = "ConfirmExceed";
                     action.Data.Data = new  
                     {
@@ -554,7 +564,7 @@
                     action.IsSuccessed = false;
                     //action.LocaleMsg = Biz.L($"鏉$爜[{0}]鎵弿鎴愬姛锛屽鏂欑墿鏂橻{1}]闇�姹俒{2}]杩橀渶澶囨枡[{3}]锛屾潯鐮侀渶瑕佹埅鏂欙紝鍙戝嚭鏁伴噺[{4}]");
                     //action.LocaleMsg = Biz.L($"鏉$爜[{0}]鎵弿鎴愬姛锛屽鏂欑墿鏂橻{1}]闇�姹俒{2}]杩橀渶澶囨枡[{3}]锛岃閫夋嫨瑕佽秴鍙戣繕鏄埅鏂欙紵");
-                    action.LocaleMsg = Biz.L($"WMS.Out_BIZ_WMS_PREP.ScanItem.Success{(isNeedCut ? "" : "Confirm")}", CurInvItem.SN, CurInvItem.ItemInfo.ITEM_CODE, CurPREP.BizType.GetActReqQty(CurPrepDtl), actQty);
+                    action.LocaleMsg = Biz.L($"WMS.Out_BIZ_WMS_PREP.ScanItem.Success{(isNeedCut ? "" : "Confirm")}", CurInvItem.SN, CurInvItem.ItemInfo.ITEM_CODE, CurPREP.BizType.GetActReqQty(CurPrepDtl), actQty, CurSn.Sum(q => q.QTY_DLVY));
                     action.Data.Command = "ConfirmExceed";
                     action.Data.Data = new
                     {
@@ -789,7 +799,9 @@
         /// <returns></returns>
         public async Task<ApiAction> GenerateDlvyBatch(BaseInput input)
         {
-            var range = input.Data.ToInt32().GetEnum<BATCH_RANGEs>();
+            var range = input.Data.ToInt32().GetEnum<BIZ_WMS_PREP_BTH.BATCH_RANGEs>();
+            //浠庢暟鎹簱鏇存柊褰撳墠鍗曟嵁鐨勬墍鏈変俊鎭�
+            CurPREP.Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ID == CurPREP.Order.ID).IncludesAllFirstLayer().First();
             var action = await CurPREP.Order.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>() .GenerateDlvyBatch(this, range);
             return action;
         }
@@ -803,7 +815,7 @@
         {
             ResetScan();
             CurPREP = new(MainDB, UserCode, OrgCode);
-            CurPrepDtl = new();
+            CurPrepDtl = null;
             CurScanShelf = null;
             base.ResetTrans();
         }
@@ -824,7 +836,7 @@
             //CloseLight(LocationHis).Wait();
             if (!(CurPREP?.Order?.ORDER_NO ?? "").IsNullOrEmpty())
             {
-                MainDB.Deleteable<WMS_ITEM_POOL>().Where(x => x.TRANS_NO == CurPREP.Order.ORDER_NO).ExecuteCommand();
+                MainDB.Deleteable<WMS_ITEM_POOL>().Where(q => q.TRANS_NO == CurPREP.Order.ORDER_NO || q.TRANS_ID == TransID).ExecuteCommand();
             }
 
             this.IsFinished = true;

--
Gitblit v1.9.3