From 4b4db960821387e8e29151ca15a1a7a2825f5f6f Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期五, 20 六月 2025 16:31:10 +0800
Subject: [PATCH] Merge branch 'master' of http://47.95.120.53:8083/r/JC34WMS

---
 Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs |  167 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 121 insertions(+), 46 deletions(-)

diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index a5376b2..880f59b 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -119,6 +119,7 @@
                      Status = tb1.Status,
                      AsnType = tb2.Type,
                      AsnStatus = tb2.Status,
+                     IsPasteCode = tb5.IsPasteCode,
                      Lot1 = tb1.Lot1,
                      Lot2 = tb1.Lot2,
                      UDF1 = tb1.UDF1,
@@ -148,8 +149,15 @@
                 }
 
                 var labelQty = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == id).Sum(m => m.Qty + (m.SamplingQty == null? 0: m.SamplingQty));
+                if (labelQty == null)
+                {
+                    labelQty = 0;
+                }
                 var qty = detail.Qty - labelQty;
-
+                if (qty<0)
+                {
+                    qty = 0;
+                }
                 return qty.ToString();
             }
             catch (Exception e)
@@ -249,11 +257,11 @@
             string strMessage = "";
 
             /** model.type 锛堝崟鎹被鍨�)
-            * 鎴愬搧鍏ュ簱     0
+            * 鎴愬搧鍏ュ簱   0
             * 閲囪喘鍏ュ簱 	1
-            * 涓棿鍝佷笉璐�	2
-            * 閫�璐у叆搴�		3
+            * 閫�璐у叆搴�	3
             * 浣欐枡閫�鍥炲叆搴�	4
+            * 鐢熶骇閫�鏂欏叆搴�	8
             */
             var TypeLot = "1, 5, 6, 7";         //鎵规鍙负绌哄崟鎹被鍨�
 
@@ -293,6 +301,8 @@
                     };
 
                     List<BllArrivalNoticeDetail> details = new List<BllArrivalNoticeDetail>();
+                    var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList();
+
                     foreach (ArrivalNoticeDetailVm detailModel in model.AsnDetail)
                     {
                         if (string.IsNullOrEmpty(detailModel.SkuNo))
@@ -310,8 +320,8 @@
                             strMessage = "-1:鏁伴噺蹇呴』澶т簬0;";
                             continue;
                         }
-
-                        if (model.Type == "1" || model.Type == "5" || model.Type == "6" || model.Type == "7")
+                        
+                        if ( model.Type == "5" || model.Type == "6" || model.Type == "7")
                         {
                             if (!string.IsNullOrWhiteSpace(detailModel.LotNo))
                             {
@@ -343,12 +353,27 @@
                                 detailModel.LotNo = maxLotNo;
                             }
                         }
-                        if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
+                        //if (model.Type == "0" || model.Type == "1" || model.Type == "2" || model.Type == "3" || model.Type == "4" && model.Type == "8")
+                        //{
+                        //    if (string.IsNullOrWhiteSpace(detailModel.LotNo))
+                        //    {
+                        //        throw new Exception("褰撳墠鍗曟嵁绫诲瀷鎵规涓嶅彲涓虹┖!");
+                        //    }
+                        //}
+                        detailModel.BoxCodeStr = detailModel.LotNo;
+                        if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                         {
-                            if (string.IsNullOrWhiteSpace(detailModel.LotNo))
+                            string toDayTime = DateTime.Now.ToString("yyyyMM");
+                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") && m.CreateTime.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd")).Max(m => m.BoxCodeStr);
+                            if(string.IsNullOrWhiteSpace(maxBoxCodeStr))
                             {
-                                throw new Exception("褰撳墠鍗曟嵁绫诲瀷鎵规涓嶅彲涓虹┖!");
+                                maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
                             }
+                            else
+                            {
+                                maxBoxCodeStr = "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();                         
+                            }
+                            detailModel.BoxCodeStr = maxBoxCodeStr;
                         }
 
                         // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ綋鍓嶆槑缁�
@@ -367,6 +392,33 @@
                         {
                             detailModel.Price = 0;
                         }
+                        var sku = skuList.FirstOrDefault(m => m.SkuNo == detailModel.SkuNo);
+                        if (sku == null)
+                        {
+                            throw new Exception("鏈煡璇㈠嚭鐗╂枡淇℃伅!");
+                        }
+                        string lot1 = detailModel.Lot1;
+                        string lot2 = detailModel.Lot2;
+                        if (sku.IsPasteCode == "0")
+                        {
+                            //涓嶈创鏍囩墿鏂� 鐢熶骇鏃ユ湡銆佹湁鏁堟湡涓嶈兘涓虹┖
+                            DateTime lot12;
+                            DateTime lot22;
+                            if (!DateTime.TryParse(detailModel.Lot1, out lot12))
+                            {
+                                throw new Exception("闈炶创鏍囩墿鏂欑敓浜ф棩鏈熻浆鎹㈠け璐�");
+                            }
+                            if (!DateTime.TryParse(detailModel.Lot2, out lot22))
+                            {
+                                throw new Exception("闈炶创鏍囩墿鏂欒繃鏈熸棩鏈熻浆鎹㈠け璐�");
+                            }
+                            lot1 = lot12.ToString();
+                            lot2 = lot22.ToString();
+                        }
+                        if (string.IsNullOrWhiteSpace(detailModel.PackagNo))
+                        {
+                            throw new Exception("鍖呰涓嶈兘涓虹┖");
+                        }
                         // 璁$畻鍑烘�婚噾棰�
                         detailModel.Money = detailModel.Price * detailModel.Qty;
                         BllArrivalNoticeDetail detail = new BllArrivalNoticeDetail()
@@ -375,7 +427,7 @@
                             SkuNo = detailModel.SkuNo,
                             SkuName = detailModel.SkuName,
                             Standard = detailModel.Standard,
-                            LotNo = detailModel.LotNo.Trim(),
+                            LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim(),
                             LotText = detailModel.LotText,
                             Qty = (decimal)detailModel.Qty,
                             PackagNo = detailModel.PackagNo,
@@ -389,6 +441,9 @@
                             Status = "0",
                             IsSampling = "0",
                             InspectStatus = "0",
+                            Lot1 = lot1, //鐢熶骇鏃ユ湡
+                            Lot2 = lot2, // 杩囨湡鏃ユ湡
+                            BoxCodeStr = detailModel.BoxCodeStr,
                             UDF1 = detailModel.UDF1,
                             UDF2 = detailModel.UDF2,
                             UDF3 = detailModel.UDF3,
@@ -446,12 +501,12 @@
                 lock (AsnLock)
                 {
                     //鍒ゆ柇鏄惁涓洪噰璐叆搴撳崟鎹垨杞﹂棿浣欐枡閫�鍥炲叆搴�
-                    // 0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欓��鍥炲叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴�
+                    // 0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欓��鍥炲叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴� 8 鐢熶骇閫�鏂欏叆搴�
                     //0銆�2銆�3銆�4 鎵规涓嶈兘涓虹┖
                     //1銆佹坊鍔犲繀椤讳负绌恒�佺紪杈戜笉鍙负绌猴紝涓嶈兘鏇存敼
                     //5銆�6 鎵规鍙负绌哄彲涓嶄负绌�
                     //7 蹇呴』涓虹┖
-                    var TypeLot = "1, 5, 6, 7"; //鎵规涓虹敓鎴愭壒娆″崟鎹被鍨�
+                    var TypeLot = " 5, 6, 7"; //鎵规涓虹敓鎴愭壒娆″崟鎹被鍨�
                     
                     var asnInfo = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0");
                     if (asnInfo == null) 
@@ -514,13 +569,13 @@
                             return strMessage;
                         }
                     
-                        if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
-                        {
-                            if (string.IsNullOrWhiteSpace(detailModel.LotNo))
-                            {
-                                throw new Exception("褰撳墠鍗曟嵁绫诲瀷鎵规涓嶅彲涓虹┖!");
-                            }
-                        }
+                        //if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
+                        //{
+                        //    if (string.IsNullOrWhiteSpace(detailModel.LotNo))
+                        //    {
+                        //        throw new Exception("褰撳墠鍗曟嵁绫诲瀷鎵规涓嶅彲涓虹┖!");
+                        //    }
+                        //}
 
                         if (TypeLot.Contains(model.Type)) 
                         {
@@ -550,38 +605,48 @@
                         //鐢熸垚鑷湁鎵规
                         if (detailModel.Id == 0 || detailModel.Id == null || string.IsNullOrWhiteSpace(detailModel.LotNo))
                         {
-                            var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && TypeLot.Contains(m.Type)).Select(m => m.ASNNo).ToList();
-                            if (string.IsNullOrWhiteSpace(maxLotNo))
+                            //var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && TypeLot.Contains(m.Type)).Select(m => m.ASNNo).ToList();
+                            //if (string.IsNullOrWhiteSpace(maxLotNo))
+                            //{
+                            //    maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m => m.LotNo);
+                            //}
+                            //if (string.IsNullOrWhiteSpace(maxLotNo))
+                            //{
+                            //    maxLotNo = toDayTime.Substring(2, 6) + "0001";
+                            //}
+                            //else
+                            //{
+                            //    var lotStr = maxLotNo.Substring(0, 6);
+                            //    var timeStr = toDayTime.Substring(2, 6);
+                            //    if (lotStr == timeStr)
+                            //    {
+                            //        maxLotNo = toDayTime.Substring(2, 6) + (int.Parse(maxLotNo.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
+                            //    }
+                            //    else
+                            //    {
+                            //        maxLotNo = timeStr + "0001";
+                            //    }
+                            //}
+                            //detailModel.LotNo = maxLotNo;
+                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") && m.CreateTime.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd")).Max(m => m.BoxCodeStr);
+                            if (string.IsNullOrWhiteSpace(maxBoxCodeStr))
                             {
-                                maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m => m.LotNo);
-                            }
-                            if (string.IsNullOrWhiteSpace(maxLotNo))
-                            {
-                                maxLotNo = toDayTime.Substring(2, 6) + "0001";
+                                maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
                             }
                             else
                             {
-                                var lotStr = maxLotNo.Substring(0, 6);
-                                var timeStr = toDayTime.Substring(2, 6);
-                                if (lotStr == timeStr)
-                                {
-                                    maxLotNo = toDayTime.Substring(2, 6) + (int.Parse(maxLotNo.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
-                                }
-                                else
-                                {
-                                    maxLotNo = timeStr + "0001";
-                                }
+                                maxBoxCodeStr = "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();
                             }
-                            detailModel.LotNo = maxLotNo;
+                            detailModel.BoxCodeStr = maxBoxCodeStr;
                         }
 
                         if (detailModel.Id == 0 || detailModel.Id == null)
                         {
-                            if (model.Type == "1")
-                            {
-                                strMessage = "-1:閲囪喘鍏ュ簱涓嶅彲鏇存敼鏄庣粏锛屽彧鍙紪杈戞暟閲�;";
-                                return strMessage;
-                            }
+                            //if (model.Type == "1")
+                            //{
+                            //    strMessage = "-1:閲囪喘鍏ュ簱涓嶅彲鏇存敼鏄庣粏锛屽彧鍙紪杈戞暟閲�;";
+                            //    return strMessage;
+                            //}
                             // 璁$畻鍑烘�婚噾棰�
                             detailModel.Money = detailModel.Price * detailModel.Qty;
 
@@ -591,7 +656,7 @@
                                 SkuNo = detailModel.SkuNo,
                                 SkuName = detailModel.SkuName,
                                 Standard = detailModel.Standard,
-                                LotNo = detailModel.LotNo.Trim(),
+                                LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim(),
                                 LotText = detailModel.LotText,
                                 Qty = (decimal)detailModel.Qty,
                                 PackagNo = detailModel.PackagNo,
@@ -603,8 +668,11 @@
                                 IsBelt = detailModel.IsBelt,
                                 SupplierLot = detailModel.SupplierLot,
                                 Status = "0",
+                                IsSampling = "0",
+                                InspectStatus = "0",
                                 Lot1 = detailModel.Lot1,
                                 Lot2 = detailModel.Lot2,
+                                BoxCodeStr = detailModel.BoxCodeStr,
                                 UDF1 = detailModel.UDF1,
                                 UDF2 = detailModel.UDF2,
                                 UDF3 = detailModel.UDF3,
@@ -654,7 +722,7 @@
                             detailModel.Money = detailModel.Price * detailModel.Qty;
 
                             dbDetail.Qty = (decimal)detailModel.Qty;
-                            dbDetail.LotNo = detailModel.LotNo;
+                            dbDetail.LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim();
                             dbDetail.Money = detailModel.Money;
                             dbDetail.LotText = detailModel.LotText;
                             dbDetail.SupplierLot = detailModel.SupplierLot;
@@ -787,7 +855,7 @@
                     return "-1:鍏ュ簱鍗曠姸鎬佸凡鍙樻洿锛屼笉鍙垹闄�!";
 
                 }
-                if (asnModel.Origin != "褰曞叆" && asnModel.Origin != "閲囪喘鍗�")
+                if (asnModel.Origin != "褰曞叆" )//&& asnModel.Origin != "閲囪喘鍗�"
                 {
                     return "-1:涓婃父绯荤粺涓嬪彂鐨勫崟鎹紝涓嶅彲鍒犻櫎;";
 
@@ -818,10 +886,17 @@
                 asnDetail.UpdateTime = editDateTime;
                 asnDetail.UpdateUser = model.CreateUser;
 
+                //鐢熸垚鐨勬爣绛�
+                var boxList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == asnDetail.Id && m.Origin == "WMS鐢熸垚").ToList();
+
                 Db.Ado.BeginTran();
                 int rowCount = Db.Updateable(asnModel).ExecuteCommand();
                 rowCount += Db.Updateable(asnDetail).ExecuteCommand();
-
+                if (boxList.Count>0)
+                {
+                    rowCount += Db.Deleteable(boxList).ExecuteCommand(); 
+                }
+                
                 if (rowCount < 2)
                 {
                     Db.RollbackTran();

--
Gitblit v1.8.0