From b4c61b31b6b377af1598856da060635bb84333a2 Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期六, 03 五月 2025 18:54:43 +0800
Subject: [PATCH] 优化了一些已知问题

---
 Tiger.Business.WMS/Common/Preparation.cs |  346 +++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 282 insertions(+), 64 deletions(-)

diff --git a/Tiger.Business.WMS/Common/Preparation.cs b/Tiger.Business.WMS/Common/Preparation.cs
index 139088e..6579a32 100644
--- a/Tiger.Business.WMS/Common/Preparation.cs
+++ b/Tiger.Business.WMS/Common/Preparation.cs
@@ -5,16 +5,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>
@@ -29,10 +27,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 PrepOrder { 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
@@ -51,18 +52,18 @@
 	            // 鏌ヨ鏄惁宸插瓨鍦ㄥ鏂欎换鍔�
 	            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 (PrepOrder.IsNullOrEmpty())
+	            if (Order.IsNullOrEmpty())
 	            {
 	                if (!src.IsNullOrEmpty())
 	                {
-	                    PrepOrder = 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", orderNo, PrepOrder.ORDER_NO);
-	                    return action;
+	                    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
 	                {
-	                    PrepOrder = new BIZ_WMS_PREP()
+	                    Order = new BIZ_WMS_PREP()
 	                    {
                             AUTH_ORG = OrgCode,
                             ORDER_NO = $"MP{DateTime.Now:yyMMdd}{(DateTime.Now - DateTime.Today).TotalSeconds:00000}",
@@ -71,99 +72,124 @@
 	                    };
 	                }
 	            }
-	            if (!src.IsNullOrEmpty() && src.ORDER_NO != PrepOrder.ORDER_NO)
+                //鍚堝苟鍙戞枡鍙�傜敤浜庡寘瑁呰溅闂村伐鍗曞彂鏂欙紝闆呰揪鍖呰杞﹂棿缂栫爜锛�1002310010030758
+                else if (Order.WS_CODE != "1002310010030758")
+                {
+                    action.IsSuccessed = false;
+                    //action.LocaleMsg = Biz.L("澶囨枡浠诲姟[{0}]涓嶆槸鍖呰杞﹂棿宸ュ崟鍙戞枡锛屾棤娉曞悎骞跺崟鎹彂鏂�");
+                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.PrepNot1002310010030758", 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, PrepOrder.ORDER_NO);
+	                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)
+
+                // 鏌ヨ鍗曟嵁鏄庣粏锛屽苟鍚堝苟鍒板鏂欏崟鐨勫鏂欐槑缁嗕腑
+                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())
+                {
+                    var wo = Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == orderNo).First();
+                    //闆呰揪鍖呰杞﹂棿缂栫爜锛�1002310010030758
+                    if (wo?.WS_CODE == "1002310010030758")
+                    {
+                        Order.WS_CODE = wo.WS_CODE;
+                    }
+                    else
+                    {
+                        action.IsSuccessed = false;
+                        //action.LocaleMsg = Biz.L("鍗曟嵁[{0}]涓嶆槸鍖呰杞﹂棿宸ュ崟锛屾棤娉曞悎骞跺崟鎹彂鏂�");
+                        action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.WoNot1002310010030758", orderNo);
+                        return action;
+                    }
+                }
 
-                PrepOrder.SourceOrders = PrepOrder.SourceOrders ?? new();
-                PrepOrder.SourceDetails = PrepOrder.SourceDetails ?? new();
-                PrepOrder.Details = PrepOrder.Details ?? new();
-                PrepOrder.Batchs = PrepOrder.Batchs ?? new();
-                PrepOrder.SnList = PrepOrder.SnList ?? new();
+                Order.SourceOrders = Order.SourceOrders ?? new();
+                Order.SourceDetails = Order.SourceDetails ?? new();
+                Order.Details = Order.Details ?? new();
+                Order.SnList = Order.SnList ?? new();
                 var srcOrder = new BIZ_WMS_PREP_SRC()
                 {
                     AUTH_ORG = OrgCode,
-                    ORDER_NO = PrepOrder.ORDER_NO,
+                    ORDER_NO = Order.ORDER_NO,
                     SOURCE_CODE = bizType.GetSourceCode(),
                     SOURCE_ORDER = orderNo,
                     ADD_TIME = DateTime.Now,
                 };
-                PrepOrder.SourceOrders.Add(srcOrder);
-                foreach (var dtl in dtls)
+                Order.SourceOrders.Add(srcOrder);
+                foreach (var sdtl in srcDtls)
                 {
-                    dtl.AUTH_ORG = OrgCode;
-                    var pdtl = PrepOrder.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 ()
                         {
                             AUTH_ORG = OrgCode,
-                            ORDER_NO = PrepOrder.ORDER_NO,
-                            ORDER_LINE = (PrepOrder.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_NO = Order.ORDER_NO,
+                            ORDER_LINE = (Order.Details.Max(q => q.LINE_CODE.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,
                         };
-                        PrepOrder.Details.Add(pdtl);
+                        Order.Details.Add(pdtl);
                     }
-                    pdtl.QTY_REQ += dtl.QTY_ACT_REQ;
-                    PrepOrder.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 = PrepOrder.SourceOrders.Select(q => new { q.SOURCE_CODE, q.SOURCE_ORDER }).DistinctBy(q => q.SOURCE_ORDER).OrderBy(q => q.SOURCE_ORDER);
-                PrepOrder.SOURCE_CODE = string.Join(",", srcInfo.Select(q => q.SOURCE_CODE));
-                PrepOrder.SOURCE_ORDER = string.Join(",", srcInfo.Select(q => q.SOURCE_ORDER));
-
+                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));
+    
                 //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄
                 var db = Biz.Db;
                 var dbTran = db.UseTran(() =>
                 {
-                    var o = db.Storageable(PrepOrder, UserCode).WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW }).ToStorage();
+                    var o = db.Storageable(Order, UserCode).WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW }).ToStorage();
                     o.AsInsertable.ExecuteCommand();
-                    o.AsUpdateable.IgnoreColumns(q => q.ID).UpdateColumns(q => new { q.SOURCE_CODE, q.SOURCE_ORDER, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
-                    var so = db.Storageable(PrepOrder.SourceOrders, UserCode).WhereColumns(t => new { t.ORDER_NO, t.SOURCE_ORDER, t.GHOST_ROW }).ToStorage();
-                    so.AsInsertable.ExecuteCommand();
-                    var sd = db.Storageable(PrepOrder.SourceDetails, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage();
-                    sd.AsInsertable.ExecuteCommand();
-                    var d = db.Storageable(PrepOrder.Details, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage();
+                    o.AsUpdateable.IgnoreColumns(q => q.ID).UpdateColumns(q => new { q.WS_CODE, q.SOURCE_CODE, q.SOURCE_ORDER, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
+                    db.Storageable(Order.SourceOrders, UserCode).WhereColumns(t => new { t.ORDER_NO, t.SOURCE_ORDER, t.GHOST_ROW }).ToStorage().AsInsertable.ExecuteCommand();
+                    db.Storageable(Order.SourceDetails, UserCode).WhereColumns(t => new { t.ORDER_NO, t.ITEM_CODE, t.GHOST_ROW }).ToStorage().AsInsertable.ExecuteCommand();
+                    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();
                 });
                 if (dbTran.IsSuccess)
                 {
-                    //action.LocaleMsg = Biz.L("澶囨枡浠诲姟[{0}娣诲姞]鍗曟嵁[{1}]鎴愬姛锛屽彲浠ュ紑濮嬪鏂欎笅鏋�");
-                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.LoadSuccess", PrepOrder?.ORDER_NO, orderNo);
+                    //action.LocaleMsg = Biz.L("澶囨枡浠诲姟[{0}娣诲姞]鍗曟嵁[{1}]鎴愬姛锛岃閫夋嫨澶囨枡鐨勭墿鏂欒");
+                    action.LocaleMsg = Biz.L("WMS.Out_BIZ_WMS_PREP.AddOrder.LoadSuccess", Order?.ORDER_NO, orderNo);
                 }
                 else
                 {
@@ -175,6 +201,198 @@
             }
         }
 
+        /// <summary>
+        /// 鐢熸垚棰嗘枡鍗曪細璋冪敤棰嗘枡鍗曟帴鍙�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        //public async Task<ApiAction> GenerateRequisition(BaseInput input)
+        //{
+        //    var action = new ApiAction();
+        //    var orderNo = input.Data;
+        //    try
+        //    {
+        //        var order = await MainDB.Queryable<BIZ_U9_ASN>().Where(q => q.ORDER_NO == orderNo).Includes(q => q.Details, d => d._ItemInfos).IncludesAllFirstLayer().FirstAsync();
+        //        if (order.IsNullOrEmpty())
+        //        {
+        //            action.IsSuccessed = false;
+        //            //action.LocaleMsg = Biz.L($"鎵句笉鍒伴�佽揣鍗昜{0}]鐨勫崟鎹俊鎭紝璇锋彁浜ゆ纭殑鍗曞彿");
+        //            action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceipt.ASNNotExists", orderNo);
+        //            return action;
+        //        }
+        //        //楠岃瘉鏉$爜鏄惁姝g‘
+        //        if (order.STATUS != BIZ_U9_ASN.STATUSs.Counting.GetValue())
+        //        {
+        //            action.IsSuccessed = false;
+        //            //action.LocaleMsg = Biz.L("鐢熸垚鏀惰揣鍗曪細閫佽揣鍗曠姸鎬乕{0}]寮傚父");
+        //            action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceipt.StatusException", order.STATUS.GetEnumDesc<BIZ_U9_ASN.STATUSs>());
+        //            return action;
+        //        }
+
+        //        //鏌ヨ鏄惁娓呯偣瀹屾垚
+        //        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())
+        //        {
+        //            action.IsSuccessed = false;
+        //            //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;
+        //        }
+
+        //        var iInput = new CreateRcvBySrcASNInput
+        //        {
+        //            userId = UserCode,
+        //            IsLogin = true,
+        //            CreateRcvBySrcASNParam = new()
+        //            {
+        //                aSNToRcvTransDTOs = order.Details.Select(q => new ASNToRcvTransDTO
+        //                {
+        //                    ASNLineKey = q.ID,
+        //                    TransQty = new() { m_amount1 = q.QTY },
+        //                    BinInfoList = new() { new() { Bin = new() { m_code = q.ItemInfo.DEFAULT_LOCATION }, LocationQtySU = q.QTY, LocationQtyTU = q.QTY } },
+        //                }).ToList(),
+        //            }
+        //        };
+        //        var result = await DI.Resolve<IWMS_U9C>().CreateRcvBySrcASN(iInput);
+        //        if (!result.IsSuccessed)
+        //        {
+        //            action.IsSuccessed = false;
+        //            action.LocaleMsg = result.LocaleMsg;
+        //            return action;
+        //        }
+
+        //        //鏍规嵁鎺ュ彛杩斿洖鏀惰揣鍗曞崟鍙锋煡璇㈠崟鎹槑缁嗭紝骞跺垱寤烘潯鐮佹槑缁�
+        //        var receipt = new BIZ_U9_RECEIPT();
+        //        receipt.Details = new();
+        //        receipt.SnList = new();
+        //        DbClient U9Cdb = Biz.DataSource["YadaU9C"].Client;
+        //        var list = U9Cdb.Queryable<mes_ReturnedDocInfo>().Where(x => x.RcvId == result.Data[0].ID.ToDouble() && x.DocNo == result.Data[0].Code && x.SplitFlag != 1).ToList();
+
+        //        if (list != null && list.Count > 0)
+        //        {
+        //            receipt.ID = list.First().RcvId.ToString();
+        //            receipt.AUTH_ORG = order.AUTH_ORG;
+        //            receipt.STATUS = BIZ_U9_RECEIPT.STATUSs.InQC.GetValue();
+        //            receipt.ORDER_NO = list.First().DocNo;
+        //            receipt.SUPP_CODE = list.First().SupplierCode;
+        //            receipt.SUPP_NAME = list.First().SupplierName;
+        //            receipt.RECEIVER = UserCode;
+        //            receipt.RECEIVE_DATE = DateTime.Now;
+        //            receipt.ASN_ID = order.ID;
+        //            receipt.ASN_NO = order.ORDER_NO;
+        //            receipt.ORDER_DATE = list.First().ModifiedOn;
+        //            receipt.HANDLED = 0;
+        //            receipt.HANDLED_DATE = DateTime.Now;
+
+        //            foreach (var item in list)
+        //            {
+        //                var asnDtl = order.Details.First(q => q.ID == item.SrcASNDocLineId.ToString());
+        //                BIZ_U9_RECEIPT_DTL receiptDt = new()
+        //                {
+        //                    ID = item.RcvLineId.ToString(),
+        //                    AUTH_ORG = receipt.AUTH_ORG,
+        //                    STATUS = BIZ_U9_RECEIPT.STATUSs.InQC.GetValue(),
+        //                    ORDER_NO = item.DocNo,
+        //                    LINE_NO = item.DocLineNo.ToString(),
+        //                    ITEM_CODE = item.ItemCode,
+        //                    QTY = item.EyeballingQtyTU.ToDouble(), // mes鍗曟嵁鏁伴噺 --U9閫�琛ユ暟閲�
+        //                    QTY_GIFT = asnDtl.QTY_GIFT,
+        //                    ASN_ID = item.SrcASNDocId.ToString(),
+        //                    ASN_NO = asnDtl.ORDER_NO,
+        //                    ASN_LINE_ID = item.SrcASNDocLineId.ToString(),
+        //                    ASN_LINE = asnDtl.LINE_NO,
+        //                    ERP_CODE = item.ItemCode1,
+        //                };
+        //                receipt.Details.Add(receiptDt);
+        //            }
+
+        //            foreach (var sn in order.SnList)
+        //            {
+        //                var dtl = receipt.Details.First(q => q.ASN_LINE == sn.LINE_NO);
+        //                BIZ_U9_RECEIPT_SN receiptSn = new()
+        //                {
+        //                    AUTH_ORG = dtl.AUTH_ORG,
+        //                    ORDER_NO = dtl.ORDER_NO,
+        //                    LINE_NO = dtl.LINE_NO,
+        //                    SN = sn.SN,
+        //                    META_SN = sn.META_SN,
+        //                    ITEM_CODE = sn.ITEM_CODE,
+        //                    STATUS = WMS_ITEM.STATUSs.WaitIn.GetValue(),
+        //                    QTY = sn.QTY,
+        //                    UNIT = sn.UNIT,
+        //                    IS_OK = sn.IS_OK,
+        //                    IS_IN = sn.IS_IN,
+        //                    LOTNO = sn.LOTNO,
+        //                    CARTON_NO = sn.CARTON_NO,
+        //                    PALLET_NO = sn.PALLET_NO,
+        //                };
+        //                receipt.SnList.Add(receiptSn);
+        //            }
+        //        }
+
+        //        //鏇存柊搴撳瓨琛ㄤ俊鎭�
+        //        var items = MainDB.Queryable<WMS_ITEM>().Where(q => SqlFunc.Subqueryable<BIZ_U9_ASN_SN>().Where(s => s.SN == q.SN && s.ORDER_NO == order.ORDER_NO).Any()).ToList();
+        //        var historys = new List<WMS_ITEM_HIS>();
+        //        foreach (var item in items)
+        //        {
+        //            item.AUTH_ORG = receipt.AUTH_ORG;
+        //            item.STATUS = WMS_ITEM.STATUSs.WaitIn.GetValue();
+        //            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 = receipt.SnList.First(q => q.SN == item.SN).LINE_NO;
+        //            historys.Add(new WMS_ITEM_HIS(item, $"閫佽揣鍗昜{order.ORDER_NO}]鐨勬潯鐮乕{item.SN}]鐢熸垚鏀惰揣鍗昜{receipt.ORDER_NO}]锛屽緟妫�楠屽畬鎴愬悗鍙叆搴�"));
+        //        }
+        //        var pkgs = MainDB.Queryable<WMS_ITEM_PKG>().Where(q => SqlFunc.Subqueryable<BIZ_U9_ASN_SN>().Where(s => s.SN == q.SN && s.ORDER_NO == order.ORDER_NO).Any()).ToList();
+        //        foreach (var item in pkgs)
+        //        {
+        //            item.AUTH_ORG = receipt.AUTH_ORG;
+        //            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 = 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;
+
+        //        //浣跨敤缁熶竴鐨勪簨鍔B瀵硅薄
+        //        var db = GetCommitDB();
+        //        var dbTran = db.UseTran(() =>
+        //        {
+        //            db.Updateable(items, UserCode).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.AUTH_ORG, q.STATUS, q.TRANS_CODE, q.TRANS_NO, q.TRANS_LINE, q.SOURCE_CODE, q.SOURCE_ORDER, q.SOURCE_LINE }).ExecuteCommand();
+        //            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.Insertable(receipt, UserCode).ExecuteCommand();
+        //            db.Insertable(receipt.Details, UserCode).ExecuteCommand();
+        //            db.Insertable(receipt.SnList, UserCode).ExecuteCommand();
+        //        });
+        //        if (dbTran.IsSuccess)
+        //        {
+        //            //action.LocaleMsg = Biz.L($"閫佽揣鍗昜{0}]鐢熸垚鏀惰揣鍗昜{1}]鎴愬姛");
+        //            action.LocaleMsg = Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceipt.Success", order.ORDER_NO, receipt.ORDER_NO);
+        //        }
+        //        else
+        //        {
+        //            Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception");
+        //            //鎶涘嚭寮傚父
+        //            throw dbTran.ErrorException;
+        //        }
+        //    }
+        //    catch (System.Exception ex)
+        //    {
+        //        //return action.CatchExceptionWithLog(ex, Biz.L("閫佽揣鍗昜{0}]鐢熸垚鏀惰揣鍗曞紓甯�"));
+        //        return action.CatchExceptionWithLog(ex, Biz.L("WMS.Count_BIZ_U9_ASN.GenerateReceiptException", orderNo));
+        //    }
+        //    return action;
+        //}        
         #endregion Functions
     }
 }

--
Gitblit v1.9.3