From 9885a8a2f98104f5ee63dd5ab8023095a1d8b9f6 Mon Sep 17 00:00:00 2001
From: bklLiudl <673013083@qq.com>
Date: 星期一, 02 九月 2024 08:23:44 +0800
Subject: [PATCH] 功能测试

---
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs |   71 +++++++++++++++++++++--------------
 1 files changed, 43 insertions(+), 28 deletions(-)

diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 154a06f..230ca96 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -430,6 +430,7 @@
                                 IsWave = "0",
                                 WaveNo = "",
                                 IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1",
+                                IsMixBox = d.IsMixBox,
 
                                 OrderDetailCode = d.OrderDetailCode,
 
@@ -540,7 +541,7 @@
                                 var item = new BllExportNoticeDetail()
                                 {
                                     SONo = billNo,
-                                    OrderDetailCode=d.OrderDetailCode,
+                                    OrderDetailCode = d.OrderDetailCode,
                                     SkuNo = sku.SkuNo,
                                     SkuName = sku.SkuName,
                                     Standard = sku.Standard,
@@ -559,6 +560,7 @@
                                     IsWave = "0",
                                     WaveNo = "",
                                     IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1",
+                                    IsMixBox = d.IsMixBox,
 
                                     CreateUser = 0,
                                 };
@@ -4307,6 +4309,8 @@
                 var noticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo).ToList();
                 //搴撳瓨鎬昏〃淇℃伅
                 var data = Db.Queryable<DataStock>().Where(m => m.IsDel == "0").ToList();
+                //搴撳瓨鏄庣粏涓楠屽悎鏍兼壒娆¢泦鍚�
+                var dataDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.InspectStatus == "1").GroupBy(g => g.LotNo).Select(s => s.LotNo).ToList();
                 //搴撳瓨鏄庣粏琛ㄤ俊鎭�
                 var dataBoxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0").ToList();
 
@@ -4315,8 +4319,10 @@
                 foreach (var item in noticeDetail)
                 {
                     //楠岃瘉鍏堣繘鍏堝嚭鍘熷垯
-                    
-                    var forData = data.Where(m => m.SkuNo == item.SkuNo && m.LotNo != item.LotNo && (m.Qty - m.FrozenQty - m.LockQty) > 0 ).Select(m=>m.LotNo).ToList(); //鑾峰彇褰撳墠鐗╂枡鐨勬墍鏈夋壒娆′俊鎭�(鎺掗櫎鍗曟嵁鐨勬壒娆★紝闃叉鍗曟嵁鎵�鍦ㄦ壒娆¢攣瀹氭暟閲忓悗楠岃瘉灏忎簬绛変簬0)
+                    //鑾峰彇褰撳墠鐗╂枡鐨勬墍鏈夋壒娆′俊鎭�(鎺掗櫎鍗曟嵁鐨勬壒娆★紝闃叉鍗曟嵁鎵�鍦ㄦ壒娆¢攣瀹氭暟閲忓悗楠岃瘉灏忎簬绛変簬0)
+                    var forData = data.Where(m => m.SkuNo == item.SkuNo 
+                    && m.LotNo != item.LotNo && (m.Qty - m.FrozenQty - m.LockQty) > 0 
+                    && dataDetail.Contains(m.LotNo)).Select(m=>m.LotNo).ToList(); 
 
                     forData.Add(item.LotNo);  //闆嗗悎娣诲姞鍗曟嵁鐨勬壒娆�
                     //鑾峰彇鎺掑簭鍚庣殑绗竴涓壒娆�
@@ -4329,15 +4335,37 @@
 
                     //楠岃瘉鏁堟湡浼樺厛鍘熷垯
                     var forDataBox = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo && m.LotNo != item.LotNo && m.Qty > 0).ToList();
-                    var expirationTime = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.Qty > 0).OrderBy(m=>m.ExpirationTime).Select(m=>m.ExpirationTime).First();  //鑾峰彇褰撳墠鍗曟嵁鎵规鐨勬渶杩戞晥鏈�
-                    var num = forDataBox.Count(m => m.ExpirationTime > expirationTime); //鑾峰彇搴撳瓨涓叾瀹冩壒娆℃晥鏈熷ぇ浜庡綋鍓嶅崟鎹壒娆$殑鏁堟湡鏁伴噺
-                    //鍒ゆ柇鏄惁澶т簬0
-                    if (num>0)
+                    //鑾峰彇褰撳墠鍗曟嵁鎵规鐨勬渶杩戞晥鏈�
+                    var expirationTimedt = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo
+                    && m.LotNo == item.LotNo && m.Qty > 0).ToList();
+                    if (expirationTimedt.Count > 0)
                     {
-                        bl = false;
-                        break;
+                        var expirationTime = expirationTimedt.OrderBy(m => m.ExpirationTime).Select(m => m.ExpirationTime).First();
+                        //鑾峰彇搴撳瓨涓叾瀹冩壒娆℃晥鏈熷ぇ浜庡綋鍓嶅崟鎹壒娆$殑鏁堟湡鏁伴噺
+                        var num = forDataBox.Count(m => m.ExpirationTime > expirationTime);
+                        //鍒ゆ柇鏄惁澶т簬0
+                        if (num > 0)
+                        {
+                            bl = false;
+                            break;
+                        }
                     }
+                    else 
+                    {
+                        var dataDetailtime = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.InspectStatus == "1").
+                            Where(m => m.SkuNo == item.SkuNo
+                            && m.LotNo == item.LotNo && m.Qty > 0)
+                            .OrderBy(m => m.ExpirationTime)
+                            .Select(m => m.ExpirationTime).First();
 
+                        var num = forDataBox.Count(m => m.ExpirationTime > dataDetailtime);
+                        //鍒ゆ柇鏄惁澶т簬0
+                        if (num > 0)
+                        {
+                            bl = false;
+                            break;
+                        }
+                    }
                 }
 
 
@@ -4376,7 +4404,6 @@
 
                 var exAllotList = new List<BllExportAllot>();
                 var assign = new AllotSku();
-                var specialSku = new List<string>();//鐗规畩鐗╂枡闆嗗悎锛屾棤闇�鎵樼洏涓婂叏閮ㄥ垎閰嶇殑
                 Db.BeginTran();
                 try
                 {
@@ -4424,12 +4451,6 @@
                         {
                             stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
                         }
-                        if (notice.Type == "1" && !specialSku.Contains(detail.SkuNo))
-                        {
-                            //鍒嗛厤鏁翠釜鎵樼洏涓婄殑鐗╂枡 鍙煡璇㈡湭鍒嗛厤鐨勬墭鐩�
-                            stockDetail = stockDetail.Where(m => m.Status == "0").ToList();
-                           
-                        }
                         if (stockDetail.Sum(m=>m.Qty-m.LockQty) < needQty)
                         {
                             throw new Exception("搴撳瓨鏄庣粏鏁伴噺涓嶈冻");
@@ -4447,16 +4468,7 @@
                         Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟
                         var qty = 0m;
                         //鍒嗛厤璐х墿
-                        if (notice.Type == "1" && !specialSku.Contains(detail.SkuNo))//鍒ゆ柇鏄惁鏈鏂欏嚭搴�
-                        {
-                            //鍒嗛厤鍥涙ゼ澶囨枡鎶曟枡鐨勭墿鏂�
-                            qty += assign.LingLiaoAllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic);
-                        }
-                        else
-                        {
-                            qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic);
-                        }
-                        
+                        qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, detail.LotNo, detail.IsMixBox);
                         foreach (var sc in stockQtyDic)
                         {
                             var s = stockDetail.FirstOrDefault(m => m.Id == sc.Key);
@@ -4514,7 +4526,9 @@
                         if (qty > detail.Qty)
                         {
                             //搴撳瓨鎬昏〃
-                            var stock = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo);
+                            var stock = Db.Queryable<DataStock>().First(d => d.IsDel == "0" 
+                            && d.SkuNo == detail.SkuNo 
+                            && d.LotNo == detail.LotNo);
                             stock.LockQty += qty-detail.Qty;
                             Db.Updateable(stock).ExecuteCommand();
 
@@ -4575,7 +4589,8 @@
                     var zd = Db.Updateable(notice).ExecuteCommand();
 
                     //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                    var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "鍒嗛厤", $"鑷姩鍒嗛厤浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
+                    var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", 
+                        notice.SONo, "鍒嗛厤", $"鑷姩鍒嗛厤浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
 
                     if (zd > 0 && mx > 0 && fp > 0 && k)
                     {

--
Gitblit v1.8.0