From 5e2454c2a75cb70afc0d1933e5c29e02e21231e6 Mon Sep 17 00:00:00 2001
From: chengsc <Demo@DESKTOP-CPA90BF>
Date: 星期一, 19 八月 2024 17:01:31 +0800
Subject: [PATCH] 测试流程,修改问题

---
 Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs |  364 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 363 insertions(+), 1 deletions(-)

diff --git a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
index 3fc7046..aa3f43a 100644
--- a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
@@ -31,6 +31,366 @@
         {
         }
 
+        #region 鎺ュ彛鏂规硶
+
+        //缁戝畾鐗╂枡鎵樼洏
+        public void BindPalletStock(BoxPalletBindVm model, int userId)
+        {
+            try
+            {
+                #region 鍒ゆ柇
+
+                //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶�
+                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
+                if (stockDetail != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo))
+                    {
+                        throw new Exception("璇ユ墭鐩樺凡鏈夊簱瀛樹俊鎭紝璇锋牳瀹烇紒");
+                    }
+                    return;
+                }
+                if (model.Type != "0" && model.Type != "1")
+                {
+                    throw new Exception("鎵樼洏绫诲瀷閿欒");
+                }
+                if (string.IsNullOrEmpty(model.PalletNo))
+                {
+                    throw new Exception("鎵樼洏鍙蜂笉鍙负绌�!");
+                }
+                //鎵樼洏鏄惁瀛樺湪
+                var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
+                if (pallet == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌鎵樼洏淇℃伅锛岃鏍稿疄锛�");
+                }
+                if (model.Detail.Count == 0)
+                {
+                    throw new Exception("鎵樼洏缁戝畾鏄庣粏淇℃伅涓虹┖锛岃鏍稿疄");
+                }
+                BllArrivalNotice notice = null;
+                BllArrivalNoticeDetail detail = null;
+                if (model.Type == "0")
+                {
+                    //0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欏叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴�
+                    if (string.IsNullOrEmpty(model.AsnNo))
+                    {
+                        throw new Exception("鍗曟嵁鍙蜂笉鍙负绌�!");
+                    }
+                    if (model.AsnDetailNo == 0)
+                    {
+                        throw new Exception("鍗曟嵁鏄庣粏涓嶅彲涓虹┖!");
+                    }
+                    //鏍规嵁鍗曟嵁鍙疯幏鍙栧叆搴撳崟鎬诲崟
+                    notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo && a.OrderCode == model.OrderCode);
+                    if (notice.Status != "0" && notice.Status != "1" && notice.Status != "2")
+                    {
+                        throw new Exception("璇ュ崟鎹凡鍏冲崟!");
+                    }
+                    if (notice.Type != "0")
+                    {
+                        throw new Exception("褰撳墠鍗曟嵁涓嶈兘鐢熶骇鎴愬搧鍏ュ簱锛岃鏍稿疄");
+                    }
+                    if (string.IsNullOrEmpty(model.LotNo))
+                    {
+                        throw new Exception("鎵规涓嶈兘涓虹┖!");
+                    }
+                    // 楠岃瘉鍏ュ簱鍗曟槑缁嗘槸鍚﹀瓨鍦�
+                    detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailNo && m.ASNNo == model.AsnNo && m.LotNo == model.LotNo && m.SkuNo == model.SkuNo);
+                    if (detail == null)
+                    {
+                        throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!");
+                    }
+                }
+
+                #endregion
+
+                Db.BeginTran();
+
+                var comTime = DateTime.Now;
+
+                #region 鍖呰
+                var package = Db.Queryable<SysPackag>().Where(m => m.IsDel == "0");
+                var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == model.SkuNo);
+                SysPackag pack = null;
+                if (model.Type == "0")
+                {
+                    pack = package.First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo);     
+                }
+                else
+                {
+                    pack = package.First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo);     
+                }
+
+                var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 
+                var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 
+
+                if (pack == null)
+                {
+                    throw new Exception("鑾峰彇鐗╂枡鍖呰澶辫触锛岃鏍稿疄!");
+                }
+                if (pack.L5Num.HasValue)
+                {
+                    pNum = (int)pack.L5Num;
+                    bNum = (int)pack.L4Num;
+                }
+                else if (pack.L4Num.HasValue)
+                {
+                    pNum = (int)pack.L4Num;
+                    bNum = (int)pack.L3Num;
+                }
+                else if (pack.L3Num.HasValue)
+                {
+                    pNum = (int)pack.L3Num;
+                    bNum = (int)pack.L2Num;
+                }
+                else if (pack.L2Num.HasValue)
+                {
+                    pNum = (int)pack.L2Num;
+                    bNum = (int)pack.L1Num;
+                }
+                else if (pack.L1Num.HasValue)
+                {
+                    pNum = (int)pack.L1Num;
+                    bNum = (int)pack.L1Num;
+                }
+                if (pNum == 0 || bNum == 0)
+                {
+                    throw new Exception($"缁戝畾澶辫触锛寋detail.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒");
+                }
+
+                #endregion
+
+                #region 楠岃瘉鏄惁鍏佽绔嬪簱鍚屾墭鐩樹笉鍚岀墿鏂欏叆搴撴垨鍚屾墭鐩樺悓鐗╂枡涓嶅悓鎵规鍏ュ簱
+                var list = model.Detail.GroupBy(m => new { m.SkuNo, m.LotNo }).ToList();
+
+                if (list.Count >= 2)
+                {
+                    var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "Fun045");
+                    if (funSetting == null || funSetting.IsEnable == "OFF")
+                    {
+                        throw new Exception($"涓嶅厑璁哥珛搴撳悓鎵樼洏涓嶅悓鐗╂枡鍏ュ簱鎴栧悓鎵樼洏涓嶅悓鎵规鍏ュ簱锛�");
+                    }
+                }
+
+                #endregion
+
+                //鍒ゆ柇鎵樼洏缁戝畾淇℃伅涓槸鍚︽湁
+                var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailNo && m.PalletNo == model.PalletNo && m.Status != "2");
+                var bindId = 0;
+                if (bind == null)
+                {
+                    bind = new BllPalletBind
+                    {
+                        ASNNo = model.AsnNo,
+                        ASNDetailNo = model.AsnDetailNo,
+                        PalletNo = model.PalletNo,
+                        PalletNo2 = "",
+                        PalletNo3 = "",
+                        Qty = model.Qty,
+                        FullQty = pNum,
+                        Status = "0",//绛夊緟鎵ц
+                        Type = model.Type, //鎵樼洏绫诲瀷  0鐗╂枡鎵�  1绌烘墭鐩樻墭
+                        LotNo = model.LotNo,
+                        LotText = model.LotText,
+                        SupplierLot = model.SupplierLot,
+                        InspectMark = "0",      //鏄惁鍙栨牱鎵樼洏 
+                        //SamplingQty = 0,     //鍙栨牱鏁伴噺  鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇
+                        BitPalletMark = model.Qty == pNum ? "0" : "1",
+                        IsBale = "0",
+                        IsBelt = "0",
+                        CreateUser = userId,
+
+                    };
+                    if (bind.FullQty < bind.Qty)
+                    {
+                        throw new Exception("鎵樼洏缁戝畾鏁伴噺宸茶秴鍑鸿鐗╂枡鍖呰鏁伴噺");
+                    }
+                    // 鎻掑叆鎵樼洏缁戝畾琛�
+                    bindId = Db.Insertable(bind).ExecuteReturnIdentity();
+                }
+                else
+                {
+                    throw new Exception("缁勭洏淇℃伅閲嶅");
+                }
+
+
+                #region 绠辩爜淇℃伅 
+                decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲�
+
+                var boxInfoList = new List<BllBoxInfo>();
+                if (model.Type == "1")//鎵樼洏鎵�
+                {
+                    if (model.Detail.Count > 1)
+                    {
+                        throw new Exception("绌烘墭鐩樼粦瀹氫俊鎭腑鏄庣粏閿欒锛岃秴杩囦簡涓ゆ潯鏄庣粏");
+                    }
+                    //娣诲姞绠辩爜淇℃伅/绌烘墭鐩樻槑缁嗕俊鎭�
+                    foreach (var box in model.Detail)
+                    {
+                        var boxInfo = new BllBoxInfo()
+                        {
+                            ASNNo = model.AsnNo,
+                            ASNDetailNo = model.AsnDetailNo,
+                            OrderCode = box.OrderCode,
+                            BindNo = bindId,
+                            BoxNo = box.BoxNo,
+                            BoxNo2 = box.BoxNo2,
+                            BoxNo3 = box.BoxNo3,
+                            PalletNo = model.PalletNo,
+                            Qty = box.Qty,
+                            FullQty = box.FullQty,
+                            Status = "1",
+                            SkuNo = box.SkuNo,
+                            SkuName = box.SkuName,
+                            LotNo = box.LotNo,
+                            LotText = box.LotText,
+                            SupplierLot = model.SupplierLot,
+                            ProductionTime = box.ProductionTime,
+                            ExpirationTime = box.ExpirationTime,
+                            CompleteTime = comTime,
+                            InspectMark = box.InspectMark,
+                            BitBoxMark = box.BitBoxMark,
+                            InspectStatus = box.InspectStatus,
+                            Origin = "WCS",
+                            Standard = box.Standard,
+                            PackageStandard = box.PackageStandard,
+                            StoreTime = box.StoreTime,
+                            CreateUser = userId,
+                            CreateTime = comTime,
+                        };
+
+                        boxInfoList.Add(boxInfo);
+                        factQty += box.Qty;
+                    }
+                    if (factQty > pNum)
+                    {
+                        throw new Exception($"缁戝畾澶辫触锛屾墭鐩樼粦瀹氭暟閲忓ぇ浜庤鐗╁搧鍖呰鏁伴噺锛�");
+                    }
+                }
+                else if (model.Type == "0")//鐗╂枡鎵�
+                {
+                    if (model.Detail.Count(m => m.OrderCode != detail.OrderDetailCode) > 0)
+                    {
+                        throw new Exception($"鎵樼洏缁戝畾鏄庣粏涓紝鍚湁绠辩爜鐢熶骇宸ュ崟涓嶄竴鑷�");
+                    }
+                    if (model.Detail.Count(m => m.SkuNo != model.SkuNo || m.LotNo != model.LotNo) > 0)
+                    {
+                        throw new Exception($"鎵樼洏缁戝畾鏄庣粏涓紝鍚湁绠辩爜鐗╂枡鎴栨壒娆′笉涓�鑷�");
+                    }
+                    var boxGroup = model.Detail.GroupBy(m => m.BoxNo).ToList();
+                    foreach (var g in boxGroup)
+                    {
+                        decimal boxFullQty = 0;//绠卞唴鎬绘暟閲�
+                        foreach (var box in g)
+                        {
+                            factQty += box.Qty;
+                            boxFullQty += box.Qty;
+                            var boxInfo = new BllBoxInfo()
+                            {
+                                ASNNo = model.AsnNo,
+                                ASNDetailNo = model.AsnDetailNo,
+                                OrderCode = box.OrderCode,
+                                BindNo = bindId,
+                                BoxNo = box.BoxNo,
+                                BoxNo2 = box.BoxNo2,
+                                BoxNo3 = box.BoxNo3,
+                                PalletNo = model.PalletNo,
+                                Qty = box.Qty,
+                                FullQty = box.FullQty,
+                                Status = "1",//宸茬粍鎵�
+                                SkuNo = box.SkuNo,
+                                SkuName = box.SkuName,
+                                LotNo = box.LotNo,
+                                LotText = box.LotText,
+                                SupplierLot = model.SupplierLot,
+                                ProductionTime = box.ProductionTime,
+                                ExpirationTime = box.ExpirationTime,
+                                CompleteTime = comTime,
+                                InspectMark = box.InspectMark,
+                                BitBoxMark = box.BitBoxMark,
+                                InspectStatus = box.InspectStatus,
+                                Origin = "WCS",
+                                Standard = box.Standard,
+                                PackageStandard = box.PackageStandard,
+                                StoreTime = box.StoreTime,
+                                QtyCount = (int)box.QtyCount,
+                                QtyOrd = (int)box.QtyOrd,
+                                CreateUser = userId,
+                                CreateTime = comTime,
+                            };
+                            boxInfoList.Add(boxInfo);
+
+                        }
+                        if (boxFullQty > bNum)
+                        {
+                            throw new Exception($"缁戝畾澶辫触锛寋g.Key}绠辩爜缁戝畾鏁伴噺澶т簬璇ョ墿鍝佸寘瑁呮暟閲忥紒");
+                        }
+                    }
+                }
+
+                Db.Insertable(boxInfoList).ExecuteCommand();
+                #endregion
+
+
+                if (factQty != bind.Qty)
+                {
+                    throw new Exception("绠辩爜鏄庣粏鎬绘暟閲忎笉鍚屼簬鎵樼洏鎬绘暟閲忥紝璇锋牳瀹�");
+                }
+
+                #region 鍏ュ簱鍗曞強鏄庣粏
+                if (model.Type == "0")
+                {
+                    detail.FactQty += factQty;//宸茬粍鏁伴噺
+                    //detail.CompleteQty += factQty;//瀹屾垚鏁伴噺
+
+                    detail.Status = "1";//0锛氱瓑寰呮墽琛� 1锛氭鍦ㄦ墽琛� 2锛氭墽琛屽畬鎴�
+                    if (detail.CompleteQty >= detail.Qty)
+                    {
+                        detail.Status = "2";
+                        detail.CompleteTime = comTime;
+                    }
+                    detail.UpdateUser = userId;
+                    detail.UpdateTime = comTime;
+                    //鏇存柊鍏ュ簱鍗曟槑缁�
+                    Db.Updateable(detail).ExecuteCommand();
+
+                    notice.UpdateUser = userId;
+                    notice.UpdateTime = comTime;
+                    if (notice.Status == "0")
+                    {
+                        notice.Status = "1";
+                    }
+                    var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>().Count(m => m.IsDel == "0" && m.ASNNo == detail.ASNNo && m.Status != "2");
+                    if (asnDetailNum == 0)
+                    {
+                        notice.Status = "2";
+                        notice.CompleteTime = comTime;//瀹屾垚鏃堕棿
+                    }
+                    //鏇存柊鍏ュ簱鍗�
+                    Db.Updateable(notice).ExecuteCommand();
+                }
+
+                #endregion
+
+                // 鏇存敼鎵樼洏浣跨敤鐘舵��
+                var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{model.PalletNo}';";
+                //娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹�
+                sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{model.AsnNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
+                Db.Ado.ExecuteCommand(sqlStr);
+                new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎵樼洏缁戝畾", model.AsnNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{model.PalletNo}鐨勭粍鐩樹俊鎭�", userId);
+
+                Db.CommitTran();
+            }
+            catch (Exception e)
+            {
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+        }
+
+        #endregion
+
         #region 鎵樼洏缁戝畾
         public List<PalletBindDto> GetPalletBindList(PalletBindVm model, out int count)
         {
@@ -1770,10 +2130,11 @@
                         var oldTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == oldTaskNo);
                         oldTask.EndLocat = locate.LocatNo;
                         oldTask.EndRoadway = locate.RoadwayNo;
+                        oldTask.Msg += $"{roadwayNo}宸烽亾鍙�=>>{locate.LocatNo}鍌ㄤ綅鍦板潃";
                         if (oldTask.IsSuccess == 0)
                         {
                             oldTask.IsSuccess = 1;
-                            oldTask.Status = "1";
+                            oldTask.Status = "1"; 
                         }
                         Db.Updateable(oldTask).ExecuteCommand();
 
@@ -2045,6 +2406,7 @@
                 {
                     locate.Status = "1";
                     Db.Updateable(locate).ExecuteCommand();
+                    Db.CommitTran();
                     return;
                 }
                 // 鍒ゆ柇鍌ㄤ綅鏄惁涓虹┖

--
Gitblit v1.8.0