From 2c60540518b5f2071987dcbe6aa237af4b97c77a Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期一, 12 五月 2025 23:49:52 +0800
Subject: [PATCH] 修复了一些已知问题

---
 Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs |   81 +++++++++++++++++++---------------------
 1 files changed, 38 insertions(+), 43 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 243c7dc..e8bd236 100644
--- a/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
+++ b/Tiger.Business.WMS/Transaction/Yada/Out_BIZ_WMS_PREP.cs
@@ -10,9 +10,6 @@
 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;
 
 namespace Tiger.Business.WMS.Transaction
@@ -33,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();
@@ -50,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);
@@ -130,7 +128,7 @@
 
                 if (CurPREP.Order.IsNullOrEmpty() || !CurPREP.Order.SourceOrders.Any(q => q.SOURCE_ORDER == inputOrder.SOURCE_ORDER))
                 {
-                    action = CurPREP.AddOrder(inputOrder.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>(), inputOrder.SOURCE_CODE);
+                    action = CurPREP.AddOrder(inputOrder.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>(), inputOrder.SOURCE_ORDER);
                 }
                 else
                 {
@@ -157,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;
         }
@@ -171,8 +169,8 @@
             var action = new ApiAction<ScanOutput>(new ScanOutput());
             try
             {
-                var inputDtl = input?.Data?.JsonToObject<BIZ_WMS_PREP_DTL>();
-                var prepDtl = MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ID == inputDtl.ID).First();
+                var option = CurPREP.Option = new BaseInput<SuggestOption>(input).Data;
+                var prepDtl = MainDB.Queryable<BIZ_WMS_PREP_DTL>().Where(q => q.ID == option.LineID).First();
                 if (prepDtl.IsNullOrEmpty())
                 {
                     action.IsSuccessed = false;
@@ -202,10 +200,10 @@
                 }
 
                 //濡傛灉鏄濂楀彂鏂欙紝鍒欏彧鎺ㄨ崘褰撳墠鐗╂枡琛岀殑涓�鐩樼墿鏂�
-                if (CurPREP.Order.CurBatch.DLVY_MODE == BIZ_WMS_PREP_BTH.DLVY_MODEs.First.GetValue())
+                if (option.DlvyMode == WMS_ITEM_POOL.DLVY_MODEs.First)
                 {
                     //鎺ㄨ崘鐗╂枡
-                    Result<List<SuggestItem>> result = Suggest(CurPrepDtl.ORDER_NO, CurPrepDtl.ITEM_CODE, null, inputDtl.WH_ID, inputDtl.REGION_ID, inputDtl.SHELF_ID, input.AuthOption, 1);
+                    Result<List<SuggestItem>> result = Suggest(CurPrepDtl.ORDER_NO, CurPrepDtl.ITEM_CODE, option, input.AuthOption, 1);
                     action.LocaleMsg = result.LocaleMsg;
                     if (result.IsException)
                     {
@@ -221,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
                         {
@@ -232,11 +230,11 @@
                 }
 
                 //濡傛灉鏄甯稿彂鏂欙紝鍒欐寜瀹為檯闇�姹傛暟閲忔帹鑽愬綋鍓嶇墿鏂欒鐨勬墍鏈夌墿鏂�
-                if (CurPREP.Order.CurBatch.DLVY_MODE == BIZ_WMS_PREP_BTH.DLVY_MODEs.Supply.GetValue())
+                if (option.DlvyMode == WMS_ITEM_POOL.DLVY_MODEs.Supply)
                 {
                     //鎺ㄨ崘鐗╂枡
                     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, null, inputDtl.WH_ID, inputDtl.REGION_ID, inputDtl.SHELF_ID, input.AuthOption, actQty);
+                    Result<List<SuggestItem>> result = Suggest(CurPrepDtl.ORDER_NO, CurPrepDtl.ITEM_CODE, option, input.AuthOption, actQty);
                     action.LocaleMsg = result.LocaleMsg;
                     if (result.IsException)
                     {
@@ -245,12 +243,13 @@
                     }
 
                     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
@@ -289,16 +288,15 @@
         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.ERP_WH = CurPrepDtl.ERP_WH;
-            prepDtl.WH_ID = CurPrepDtl.WH_ID;
-            prepDtl.REGION_ID = CurPrepDtl.REGION_ID;
-            prepDtl.SHELF_ID = CurPrepDtl.SHELF_ID;
-            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;
+	            CurPrepDtl = prepDtl;
+	            CurPREP.Order.Details.RemoveAll(q => q.ID == CurPrepDtl.ID);
+	            CurPREP.Order.Details.Add(CurPrepDtl);
+	            action.Data = CurPrepDtl;
+            }
             return action;
         }
 
@@ -467,7 +465,6 @@
                 CurSn = CurInvItem.Items.Select(q => new BIZ_WMS_PREP_SN() {
                     ORDER_NO = CurPREP.Order.ORDER_NO,
                     ORDER_LINE = CurPrepDtl.ORDER_LINE,
-                    ORDER_BATCH = CurPREP.Order.CurBatch.BATCH.ToString(),
                     SN = q.SN,
                     ITEM_CODE = q.ITEM_CODE,
                     UNIT = q.UNIT,
@@ -475,22 +472,23 @@
                     QTY_DLVY = q.QTY,
                     STATUS = q.STATUS,
                     LOTNO = q.LOTNO,
+                    WH_ID = CurInvItem.Warehouse.ID,
                     WH_CODE = CurInvItem.Warehouse.WH_CODE,
+                    REGION_ID = CurInvItem.Region.ID,
                     REGION_CODE = CurInvItem.Region.REGION_CODE,
+                    SHELF_ID = CurInvItem.Shelf.ID,
                     SHELF_CODE = CurInvItem.Shelf.SHELF_CODE,
+                    LOCATION_ID = CurInvItem.Location.ID,
                     LOCATION_CODE = CurInvItem.Location.LOCATION_CODE,
-                    FTY_CODE = CurPREP.Order.CurBatch.FTY_CODE,
-                    WS_CODE = CurPREP.Order.CurBatch.WS_CODE,
-                    LINE_CODE = CurPREP.Order.CurBatch.LINE_CODE,
-                    POST_CODE = CurPREP.Order.CurBatch.POST_CODE,
-                    OPER_CODE = CurPREP.Order.CurBatch.OPER_CODE,
-                    SEGMENT = CurPREP.Order.CurBatch.SEGMENT,
+                    PREP_USER = UserCode,
+                    DOWN_TIME = DateTime.Now,
                     SMT_NO = CurPrepDtl.SMT_NO,
                     STATION_NO = CurPrepDtl.STATION_NO,
                     FEEDER_NO = CurPrepDtl.FEEDER_NO,
                     FEEDER_TYPE = CurPrepDtl.FEEDER_TYPE,
-                    IS_FIRST = CurPREP.Order.CurBatch.DLVY_MODE == BIZ_WMS_PREP_BTH.DLVY_MODEs.First.GetValue() ? "Y" : "N",
+                    IS_FIRST = CurPREP.Option.DlvyMode == WMS_ITEM_POOL.DLVY_MODEs.First ? "Y" : "N",
                     NEED_CUTTING = "N",
+                    TRACE_ID = TransID,
                 }).ToList();
 
 
@@ -621,14 +619,11 @@
                     }
                     CurPrepDtl.QTY_PREP += CurSn.Sum(q => q.QTY_DLVY);
                     CurPREP.Order.STATUS = BIZ_WMS_PREP.STATUSs.Picking.GetValue();
-                    CurPREP.Order.CurBatch.STATUS = BIZ_WMS_PREP_BTH.STATUSs.Picking.GetValue();
-                    CurPREP.Order.CurBatch.PICK_TIME = CurPREP.Order.CurBatch.PICK_TIME < new DateTime(2000, 1, 1) ? DateTime.Now : CurPREP.Order.CurBatch.PICK_TIME;
 
                     //鍒涘缓鍙橀噺鍏嬮殕瀵硅薄鐢ㄤ簬浼犲叆DBSubmitAction涓繚瀛樺綋鍓嶉渶瑕佹殏瀛樼殑鏁版嵁鍊�
                     var _CurSn = CurSn.Clone();
                     var _CurPrepDtl = CurPrepDtl.Clone();
                     var _CurPREPOrder = CurPREP.Order.Clone();
-                    var _CurPREPCurBatch = CurPREP.Order.CurBatch.Clone();
                     AddCommitAction("UpdatePrep", () =>
                     {
                         //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄
@@ -638,7 +633,6 @@
                         _CurPrepDtl.QTY_PREP = db.Queryable<BIZ_WMS_PREP_SN>().Where(q => q.ORDER_NO == _CurPrepDtl.ORDER_NO && q.ORDER_LINE == _CurPrepDtl.ORDER_LINE).Sum(q => q.QTY_DLVY);
                         db.Updateable(_CurPrepDtl, UserCode).UpdateColumns(q => new { q.QTY_PREP, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
                         db.Updateable(_CurPREPOrder, UserCode).UpdateColumns(q => new { q.STATUS, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
-                        db.Updateable(_CurPREPCurBatch, UserCode).UpdateColumns(q => new { q.STATUS, q.PICK_TIME, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
                     });
 
                     //鐏伅
@@ -790,13 +784,14 @@
         }
 
         /// <summary>
-        /// 璋冪敤鍙戞枡鍗曟嵁鐨凟RP鎺ュ彛
+        /// 鍒涘缓鍙戞枡鎵规浠ュ畬鎴愭湰娆″彂鏂欙紝璋冪敤鍙戞枡鍗曟嵁鐨凟RP鎺ュ彛
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        public async Task<ApiAction> CommitToERP(BaseInput input)
+        public async Task<ApiAction> GenerateDlvyBatch(BaseInput input)
         {
-            var action = await CurPREP.Order.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>() .CommitToERP(this, input);
+            var range = input.Data.ToInt32().GetEnum<BIZ_WMS_PREP_BTH.BATCH_RANGEs>();
+            var action = await CurPREP.Order.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>() .GenerateDlvyBatch(this, range);
             return action;
         }
 
@@ -809,7 +804,7 @@
         {
             ResetScan();
             CurPREP = new(MainDB, UserCode, OrgCode);
-            CurPrepDtl = new();
+            CurPrepDtl = null;
             CurScanShelf = null;
             base.ResetTrans();
         }
@@ -830,7 +825,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