From 7f4b5fb7a89052f1fbd2e00b34e60e1b55f73ab3 Mon Sep 17 00:00:00 2001
From: Demo <Demo@DESKTOP-CPA90BF>
Date: 星期六, 16 三月 2024 16:58:40 +0800
Subject: [PATCH] Merge branch 'csc'

---
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs |  128 +++++++++++++++++++++++++++++-------------
 1 files changed, 89 insertions(+), 39 deletions(-)

diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 334564f..6cf26c6 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -141,6 +141,7 @@
                             SupplierLot = stocks.First().SupplierLot,
                             IsWave = "0",
                             WaveNo = "",
+                            IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo)? "0":"1",
 
                             CreateUser = 0,
                         };
@@ -330,42 +331,60 @@
             }
         }
 
-        public List<ExStockInfoDto> GetStockGroupList(string type, string msg)
+        public List<ExStockInfoDto> GetStockGroupList(string type, string ownerNo, string msg)
         {
             try
             {
+                if (string.IsNullOrEmpty(type))
+                {
+                    throw new Exception("璇烽�夋嫨鍑哄簱鍗曠被鍨�");
+                }
+                if (type == "6" && string.IsNullOrEmpty(ownerNo))
+                {
+                    throw new Exception("浠e偍鍗曟嵁璇烽�夋嫨璐т富");
+                }
                 var plnList = new List<string>() { "100099" };
                 var skuList = new List<string>();
                 var sku = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && !plnList.Contains(m.SkuNo)); //鎺掗櫎绌烘墭鐩樼殑鐗╂枡闆嗗悎
                 string skuType = string.Empty;
+                string inspectStatus = string.Empty;
                 switch (type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧
                 {
-                    case "0"://鎴愬搧鍏ュ簱
+                    case "0"://鎴愬搧鍑哄簱
                         skuType = "(2)";
+                        inspectStatus = "1";
                         break;
                     case "1"://棰嗘枡鍑哄簱
                         skuType = "(0,1,3)";
+                        inspectStatus = "1";
                         break;
                     case "2"://鎶芥鍑哄簱
-                        skuType = "(2)";
+                        skuType = "(0,1,2,3)";
+                        inspectStatus = "0,1,2";
                         break;
                     case "3"://鐗╂枡鍙栨牱鍑哄簱
-                        skuType = "(0)";
+                        skuType = "(0,1,2,3)";
+                        inspectStatus = "0";
                         break;
                     case "4"://涓嶅悎鏍煎搧鍑哄簱
-                        skuType = "(2)";
+                        skuType = "(0,1,2,3)";
+                        inspectStatus = "2";
                         break;
                     case "5"://涓棿鍝佸嚭搴�
                         skuType = "(4)";
+                        inspectStatus = "0,1";
                         break;
                     case "6"://浠e偍鍑哄簱
-                        skuType = "(2)";
+                        skuType = "(0,1,2,3)";
+                        inspectStatus = "0,1";
                         break;
                     case "8"://瀵勫瓨鍑哄簱
-                        skuType = "(3)";
+                        skuType = "(0,1,2,3)";
+                        inspectStatus = "0,1";
                         break;
                     default: //鍏跺畠鍑哄簱
                         skuType = "(0,1,2,3,4)";
+                        inspectStatus = "0,1";
                         break;
                 }
                 skuList = sku.Where(m => skuType.Contains(m.Type)).Select(m => m.SkuNo).ToList();
@@ -373,13 +392,23 @@
                 {
                     throw new Exception("鏈煡鍒板搴斿嚭搴撶被鍨嬬殑鐗╂枡");
                 }
+
+                if (type!="8")
+                {
+                    skuList = skuList.Where(m => m != "100088").ToList();
+                }
+                else
+                {
+                    skuList = skuList.Where(m => m == "100088").ToList();
+                }
                 //skuList = sku.Select(m => m.SkuNo).ToList();
                 var stockRst = new StockServer();
                 var stockDetailRst = new StockDetailServer();
                 Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
                     //.And(it => it.WareHouseNo == wareHouseNo)
-                    .And(it => it.InspectStatus == "1")
+                    .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus))
                     .And(m => skuList.Contains(m.SkuNo))
+                    .AndIF(type == "6", m => m.OwnerNo == ownerNo)//浠e偍鍑哄簱闇�瑕佸叧鑱旇揣涓�
                     .AndIF(!string.IsNullOrWhiteSpace(msg), it => (it.SkuNo.Contains(msg) || it.SkuName.Contains(msg) || it.LotNo.Contains(msg)))
                     .And(it => (it.Qty - it.LockQty - it.FrozenQty) > 0)
                     .And(it => (it.Status == "0" || it.Status == "1"))
@@ -2560,18 +2589,22 @@
                             throw new Exception("搴撳瓨涓嶈冻,鏃犲彲鍑哄簱搴撳瓨");
                         }
                         //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�3锛氱墿鏂欏彇鏍峰嚭搴撱��4:涓嶅悎鏍煎搧鍑哄簱銆�5:涓棿鍝佸嚭搴撱��6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆�8:瀵勫瓨鍑哄簱
-                        if (notice.Type == "0" || notice.Type == "1" || notice.Type == "2" || notice.Type == "5")//鎴愬搧銆佸師杈呮枡鍑哄簱
+                        if (notice.Type == "0" || notice.Type == "1" )//鎴愬搧銆佸師杈呮枡鍑哄簱
                         {
                             stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
                         }
-                        else if (notice.Type == "3" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//鍙栨牱鍑哄簱
+                        else if (notice.Type == "3" )//鍙栨牱鍑哄簱
                         {
                             stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList();
+                        }
+                        else if (notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")
+                        {
+                            stockDetail = stockDetail.Where(m => m.InspectStatus == "0" || m.InspectStatus == "1").ToList();
                         }
                         else if (notice.Type == "4")//涓嶅悎鏍煎嚭搴�
                         {
                             stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
-                        }
+                        } 
 
                         #region 鍖呰淇℃伅
 
@@ -2821,7 +2854,11 @@
 
                         if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
                         {
-                            d.LotNo = "";
+                            if (d.IsIssueLotNo != "1")
+                            {
+                                d.LotNo = "";
+                            }
+                            
                         }
                     }
                     notice.Status = "0";
@@ -2985,6 +3022,8 @@
                 //搴撳瓨鏄庣粏
                 var stockList = Db.Queryable<DataStockDetail>().Where(a => stockIds.Contains(a.Id)).ToList();
 
+                //鍒嗛厤淇℃伅
+                var allots = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == detail.Id && m.Status == "0").ToList();
 
                 //搴撳瓨鎬昏〃
                 //var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo);
@@ -2998,37 +3037,48 @@
                     {
                         throw new Exception("鎿嶄綔澶辫触锛岄儴鍒嗗偍浣嶅簱瀛樺紓甯革紒");
                     }
-                    if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty - stock.InspectQty))
+                    if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty))     // 杈撳叆鐨勬暟閲� -  鎵樼洏涓婂彲鐢ㄧ殑鏁伴噺锛堟墭鐩樹笂鏁伴噺-閿佸畾鐨勬暟閲�-鍐荤粨鐨勬暟閲忥級
                     {
                         throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忚秴鍑哄簱瀛樻暟閲忥紒");
                     }
-                    //娣诲姞鍒嗛厤琛ㄤ俊鎭�
-                    var allot = new BllExportAllot
-                    {
-                        SONo = notice.SONo,
-                        WaveNo = "",
-                        SODetailNo = detail.Id,
-                        StockId = st.StockId,
-                        LotNo = stock.LotNo,
-                        LotText = stock.LotText,
-                        SupplierLot = stock.SupplierLot,
-                        SkuNo = stock.SkuNo,
-                        SkuName = stock.SkuName,
-                        Standard = stock.Standard,
-                        PalletNo = stock.PalletNo,
-                        IsBale = stock.IsBale,
-                        IsBelt = stock.IsBelt,
-                        Qty = st.Qty,
-                        CompleteQty = 0,
-                        Status = "0",
-                        LogisticsId = notice.LogisticsId,
-                        IsAdvance = "0",
-                        OutMode = "",//鍑哄簱鍙�
 
-                        CreateUser = userId,
-                        CreateTime = DateTime.Now
-                    };
-                    allotList.Add(allot);
+                    var bl = allots.FirstOrDefault(m => m.StockId == st.StockId);
+                    if (bl == null)
+                    {
+                        //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+                        var allot = new BllExportAllot
+                        {
+                            SONo = notice.SONo,
+                            WaveNo = "",
+                            SODetailNo = detail.Id,
+                            StockId = st.StockId,
+                            LotNo = stock.LotNo,
+                            LotText = stock.LotText,
+                            SupplierLot = stock.SupplierLot,
+                            SkuNo = stock.SkuNo,
+                            SkuName = stock.SkuName,
+                            Standard = stock.Standard,
+                            PalletNo = stock.PalletNo,
+                            IsBale = stock.IsBale,
+                            IsBelt = stock.IsBelt,
+                            Qty = st.Qty,
+                            CompleteQty = 0,
+                            Status = "0",
+                            LogisticsId = notice.LogisticsId,
+                            IsAdvance = "0",
+                            OutMode = "",//鍑哄簱鍙�
+
+                            CreateUser = userId,
+                            CreateTime = DateTime.Now
+                        };
+                        allotList.Add(allot);
+                    }
+                    else
+                    {
+                        bl.Qty += st.Qty;
+                        Db.Updateable(bl).ExecuteCommand();
+                    }
+                    
                     //搴撳瓨鏄庣粏
                     stock.LockQty += st.Qty;
                     stock.Status = stock.LockQty == stock.Qty ? "2" : "1";

--
Gitblit v1.8.0