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/Common/Preparation.cs |  156 +++++++++++++++++++++++----------------------------
 1 files changed, 70 insertions(+), 86 deletions(-)

diff --git a/Tiger.Business.WMS/Common/Preparation.cs b/Tiger.Business.WMS/Common/Preparation.cs
index 9862cc5..bb6c782 100644
--- a/Tiger.Business.WMS/Common/Preparation.cs
+++ b/Tiger.Business.WMS/Common/Preparation.cs
@@ -1,4 +1,4 @@
-锘縰sing MailKit.Search;
+锘縰sing Microsoft.IdentityModel.Tokens;
 using Rhea.Common;
 using SqlSugar;
 using System;
@@ -6,16 +6,14 @@
 using System.Diagnostics;
 using System.Linq;
 using System.Text;
-using System.Threading.Tasks;
 using Tiger.Business.WMS.Extensions;
-using Tiger.Business.WMS.Transaction;
 using Tiger.IBusiness;
 using Tiger.Model;
-using Tiger.Model.Entitys.MES.Position;
 using Tiger.Model.Extensions;
 
 namespace Tiger.Business.WMS.Common
 {
+
     /// <summary>
     /// 澶囨枡浠诲姟鍗曟嵁
     /// </summary>
@@ -30,11 +28,13 @@
 
         #region Propertys & Variables
         private static object AddOrderLock { get; } = new object();
+        private static object AddBatchLock { get; } = new object();
         public DbClient MainDB { get; set; }
         public string UserCode { get; set; }
         public string OrgCode { get; set; }
         public BIZ_WMS_PREP Order { get; set; }
         public BIZ_WMS_PREP.BIZ_TYPEs BizType => Order.BIZ_TYPE.GetEnum<BIZ_WMS_PREP.BIZ_TYPEs>();
+        public SuggestOption Option { get; set; }
         #endregion Propertys & Variables
 
         #region Functions
@@ -46,33 +46,33 @@
         /// <returns></returns>
         public ApiAction<ScanOutput> AddOrder(BIZ_WMS_PREP.BIZ_TYPEs bizType, string orderNo)
         {
-            lock(AddOrderLock)
+            lock (AddOrderLock)
             {
-	            var action = new ApiAction<ScanOutput>(new ScanOutput());
-	
-	            // 鏌ヨ鏄惁宸插瓨鍦ㄥ鏂欎换鍔�
-	            var src = MainDB.Queryable<BIZ_WMS_PREP_SRC>().Where(q => q.SOURCE_ORDER == orderNo && 
-	                                    SqlFunc.Subqueryable<BIZ_WMS_PREP>().Where(p => p.STATUS < BIZ_WMS_PREP.STATUSs.Sended.GetValue()).Any()).First();
-	            if (Order.IsNullOrEmpty())
-	            {
-	                if (!src.IsNullOrEmpty())
-	                {
-	                    Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ORDER_NO == src.ORDER_NO).IncludesAllFirstLayer().First();
+                var action = new ApiAction<ScanOutput>(new ScanOutput());
+
+                // 鏌ヨ鏄惁宸插瓨鍦ㄥ鏂欎换鍔�
+                var src = MainDB.Queryable<BIZ_WMS_PREP_SRC>().Where(q => q.SOURCE_ORDER == orderNo &&
+                                        SqlFunc.Subqueryable<BIZ_WMS_PREP>().Where(p => p.STATUS < BIZ_WMS_PREP.STATUSs.Sended.GetValue()).Any()).First();
+                if (Order.IsNullOrEmpty())
+                {
+                    if (!src.IsNullOrEmpty())
+                    {
+                        Order = MainDB.Queryable<BIZ_WMS_PREP>().Where(q => q.ORDER_NO == src.ORDER_NO).IncludesAllFirstLayer().First();
                         //action.LocaleMsg = Biz.L("澶囨枡浠诲姟[{0}娣诲姞]鍗曟嵁[{1}]鎴愬姛锛岃閫夋嫨澶囨枡鐨勭墿鏂欒");
                         action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.LoadSuccess", Order?.ORDER_NO, orderNo);
                         return action;
-	                }
-	                else
-	                {
-	                    Order = new BIZ_WMS_PREP()
-	                    {
+                    }
+                    else
+                    {
+                        Order = new BIZ_WMS_PREP()
+                        {
                             AUTH_ORG = OrgCode,
                             ORDER_NO = $"MP{DateTime.Now:yyMMdd}{(DateTime.Now - DateTime.Today).TotalSeconds:00000}",
-	                        BIZ_TYPE = bizType.GetValue(),
-	                        STATUS = BIZ_WMS_PREP.STATUSs.Init.GetValue(),
-	                    };
-	                }
-	            }
+                            BIZ_TYPE = bizType.GetValue(),
+                            STATUS = BIZ_WMS_PREP.STATUSs.Init.GetValue(),
+                        };
+                    }
+                }
                 //鍚堝苟鍙戞枡鍙�傜敤浜庡寘瑁呰溅闂村伐鍗曞彂鏂欙紝闆呰揪鍖呰杞﹂棿缂栫爜锛�1002310010030758
                 else if (Order.WS_CODE != "1002310010030758")
                 {
@@ -82,25 +82,25 @@
                     return action;
                 }
 
-	            if (!src.IsNullOrEmpty() && src.ORDER_NO != Order.ORDER_NO)
-	            {
-	                action.IsSuccessed = false;
-	                //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]宸插睘浜庡鏂欎换鍔{1}]锛屾棤娉曟坊鍔犲埌褰撳墠澶囨枡浠诲姟[{2}]涓紝濡傞渶鍒囨崲澶囨枡涓氬姟锛岃閫�鍑哄悗閲嶆柊閫夋嫨");
-	                action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.NoFound", orderNo, src.ORDER_NO, Order.ORDER_NO);
-	                return action;
-	            }
+                if (!src.IsNullOrEmpty() && src.ORDER_NO != Order.ORDER_NO)
+                {
+                    action.IsSuccessed = false;
+                    //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]宸插睘浜庡鏂欎换鍔{1}]锛屾棤娉曟坊鍔犲埌褰撳墠澶囨枡浠诲姟[{2}]涓紝濡傞渶鍒囨崲澶囨枡涓氬姟锛岃閫�鍑哄悗閲嶆柊閫夋嫨");
+                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.NoFound", orderNo, src.ORDER_NO, Order.ORDER_NO);
+                    return action;
+                }
 
                 // 鏌ヨ鍗曟嵁鏄庣粏锛屽苟鍚堝苟鍒板鏂欏崟鐨勫鏂欐槑缁嗕腑
-                var dtls = bizType.GetPickList(orderNo);
-	            if (dtls.Sum(q => q.QTY_ACT_REQ) <= 0)
-	            {
-	                action.IsSuccessed = false;
-	                //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]鏈壘鍒伴渶瑕佸鏂欑殑琛屾槑缁嗭紝璇锋壂鎻忔纭殑鍗曟嵁");
-	                action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.NoNeedPrep", orderNo);
-	                return action;
-	            }
+                var srcDtls = bizType.GetPickList(orderNo);
+                if (srcDtls.Sum(q => q.QTY_ACT_REQ) <= 0)
+                {
+                    action.IsSuccessed = false;
+                    //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]鏈壘鍒伴渶瑕佸鏂欑殑琛屾槑缁嗭紝璇锋壂鎻忔纭殑鍗曟嵁");
+                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.NoNeedPrep", orderNo);
+                    return action;
+                }
                 //鍚堝苟鍙戞枡鍙�傜敤浜庡寘瑁呰溅闂村伐鍗曞彂鏂�
-                if (src.IsNullOrEmpty() && Order.BIZ_TYPE == BIZ_WMS_PREP.BIZ_TYPEs.WorkOrder.GetValue())
+                if (!src.IsNullOrEmpty() && Order.BIZ_TYPE == BIZ_WMS_PREP.BIZ_TYPEs.WorkOrder.GetValue())
                 {
                     var wo = Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == orderNo).First();
                     //闆呰揪鍖呰杞﹂棿缂栫爜锛�1002310010030758
@@ -120,7 +120,6 @@
                 Order.SourceOrders = Order.SourceOrders ?? new();
                 Order.SourceDetails = Order.SourceDetails ?? new();
                 Order.Details = Order.Details ?? new();
-                Order.Batchs = Order.Batchs ?? new();
                 Order.SnList = Order.SnList ?? new();
                 var srcOrder = new BIZ_WMS_PREP_SRC()
                 {
@@ -131,63 +130,49 @@
                     ADD_TIME = DateTime.Now,
                 };
                 Order.SourceOrders.Add(srcOrder);
-                foreach (var dtl in dtls)
+                foreach (var sdtl in srcDtls)
                 {
-                    dtl.AUTH_ORG = OrgCode;
-                    var pdtl = Order.Details.Where(q => q.ITEM_CODE == dtl.ITEM_CODE).FirstOrDefault();
+                    sdtl.AUTH_ORG = OrgCode;
+                    var pdtl = Order.Details.Where(q => q.ITEM_CODE == sdtl.ITEM_CODE).FirstOrDefault();
                     if (pdtl.IsNullOrEmpty())
                     {
-                        pdtl = new ()
+                        pdtl = new()
                         {
                             AUTH_ORG = OrgCode,
                             ORDER_NO = Order.ORDER_NO,
-                            ORDER_LINE = (Order.Details.Max(q => q.LINE_CODE.ToInt32()) + 1).ToString(),
-                            ITEM_CODE = dtl.ITEM_CODE,
-                            SUBITEM_CODE = dtl.SUBITEM_CODE,
-                            UNIT = dtl.UNIT,
-                            PLAN_LOSS_QTY = dtl.PLAN_LOSS_QTY,
-                            PLAN_LOSS_RATE = dtl.PLAN_LOSS_RATE,
-                            IS_CALC_LOSS = dtl.IS_CALC_LOSS,
-                            IS_WHOLE = dtl.IS_WHOLE,
-                            SOURCE_CODE = dtl.SOURCE_CODE,
-                            SOURCE_ORDER = dtl.SOURCE_ORDER,
-                            SOURCE_LINE = dtl.SOURCE_LINE,
+                            ORDER_LINE = Order.Details.IsNullOrEmpty() ? "1" : (Order.Details.Max(q => q.ORDER_LINE.ToInt32()) + 1).ToString(),
+                            ITEM_CODE = sdtl.ITEM_CODE,
+                            SUBITEM_CODE = sdtl.SUBITEM_CODE,
+                            UNIT = sdtl.UNIT,
+                            PLAN_LOSS_QTY = sdtl.PLAN_LOSS_QTY,
+                            PLAN_LOSS_RATE = sdtl.PLAN_LOSS_RATE,
+                            IS_CALC_LOSS = sdtl.IS_CALC_LOSS,
+                            IS_WHOLE = sdtl.IS_WHOLE,
+                            SOURCE_CODE = sdtl.SOURCE_CODE,
+                            SOURCE_ORDER = sdtl.SOURCE_ORDER,
+                            SOURCE_LINE = sdtl.SOURCE_LINE,
                             STATUS = BIZ_WMS_PREP_DTL.STATUSs.UnCalc.GetValue(),
-                            FTY_CODE = dtl.FTY_CODE,
-                            WS_CODE = dtl.WS_CODE,
-                            LINE_CODE = dtl.LINE_CODE,
-                            POST_CODE = dtl.POST_CODE,
-                            OPER_CODE = dtl.OPER_CODE,
-                            SEGMENT = dtl.SEGMENT,
-                            SMT_NO = dtl.SMT_NO,
-                            STATION_NO = dtl.STATION_NO,
-                            FEEDER_NO = dtl.FEEDER_NO,
-                            FEEDER_TYPE = dtl.FEEDER_TYPE,
+                            FTY_CODE = sdtl.FTY_CODE,
+                            WS_CODE = sdtl.WS_CODE,
+                            LINE_CODE = sdtl.LINE_CODE,
+                            POST_CODE = sdtl.POST_CODE,
+                            OPER_CODE = sdtl.OPER_CODE,
+                            SEGMENT = sdtl.SEGMENT,
+                            SMT_NO = sdtl.SMT_NO,
+                            STATION_NO = sdtl.STATION_NO,
+                            FEEDER_NO = sdtl.FEEDER_NO,
+                            FEEDER_TYPE = sdtl.FEEDER_TYPE,
                         };
                         Order.Details.Add(pdtl);
                     }
-                    pdtl.QTY_REQ += dtl.QTY_ACT_REQ;
-                    Order.SourceDetails.Add(dtl);
+                    pdtl.QTY_REQ += sdtl.QTY_ACT_REQ;
+                    sdtl.ORDER_NO = pdtl.ORDER_NO;
+                    sdtl.ORDER_LINE = pdtl.ORDER_LINE;
+                    Order.SourceDetails.Add(sdtl);
                 }
                 var srcInfo = Order.SourceOrders.Select(q => new { q.SOURCE_CODE, q.SOURCE_ORDER }).DistinctBy(q => q.SOURCE_ORDER).OrderBy(q => q.SOURCE_ORDER);
                 Order.SOURCE_CODE = string.Join(",", srcInfo.Select(q => q.SOURCE_CODE));
                 Order.SOURCE_ORDER = string.Join(",", srcInfo.Select(q => q.SOURCE_ORDER));
-                if (Order.CurBatch.IsNullOrEmpty())
-                {
-                    var bacth = new BIZ_WMS_PREP_BTH()
-                    {
-                        AUTH_ORG = OrgCode,
-                        ORDER_NO = Order.ORDER_NO,
-                        BATCH = Order.Batchs.Max(q => q.BATCH) + 1,
-                        PREP_MODE = BIZ_WMS_PREP_BTH.PREP_MODEs.Whole.GetValue(),
-                        DLVY_MODE = BIZ_WMS_PREP_BTH.DLVY_MODEs.Supply.GetValue(),
-                        STATUS = BIZ_WMS_PREP_BTH.STATUSs.WaitPick.GetValue(),
-                        CALL_TIME = DateTime.Now,
-                        PRIORITY = 4,
-                    };
-                    bacth.PLAN_TIME = bacth.CALL_TIME.AddHours(1);
-                    Order.Batchs.Add(bacth);
-                }
 
                 //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄
                 var db = Biz.Db;
@@ -201,7 +186,6 @@
                     var d = db.Storageable(Order.Details, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage();
                     d.AsInsertable.ExecuteCommand();
                     d.AsUpdateable.IgnoreColumns(q => q.ID).UpdateColumns(q => new { q.QTY_REQ, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
-                    db.Storageable(Order.Batchs, UserCode).WhereColumns(t => new { t.ORDER_NO, t.BATCH, t.GHOST_ROW }).ToStorage().AsInsertable.ExecuteCommand();
                 });
                 if (dbTran.IsSuccess)
                 {

--
Gitblit v1.9.3