From 5b4f00ff3ea04a3246a8f6f86bdefe749fcfd0c4 Mon Sep 17 00:00:00 2001
From: yuyou_x <2336760928@qq.com>
Date: 星期二, 26 三月 2024 08:24:28 +0800
Subject: [PATCH] 合并代码

---
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs |  875 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 595 insertions(+), 280 deletions(-)

diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 334564f..e85ca4e 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -108,48 +108,118 @@
                         }
                         //搴撳瓨
                         List<DataStock> stocks;
+
+                        decimal q1 = 0;
+                        Dictionary<int, decimal> dic = new Dictionary<int, decimal>();
+
                         if (!string.IsNullOrWhiteSpace(d.LotNo))
                         {
                             stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList();
+                            if (stocks.Count < 1)
+                            {
+                                throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}");
+                            }
+                            //鍒ゆ柇鏁伴噺
+                            var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
+                            if (d.Qty > qty)
+                            {
+                                throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+                            }
+                            if (qty > d.Qty - q1)
+                            {
+                                q1 += d.Qty - q1;
+                                dic.Add(stocks.First().Id, d.Qty - q1);
+                            }
+                            else
+                            {
+                                q1 += qty;
+                                dic.Add(stocks.First().Id, qty);
+                            }
+
                         }
                         else
                         {
-                            stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+                            stocks = stockList.Where(m=> m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList();
+                            
+                            foreach (var demo in stocks)
+                            {
+                                if (q1 >= d.Qty)
+                                {
+                                    continue;
+                                }
+                                var q2 = demo.Qty - demo.LockQty - demo.FrozenQty;
+                                 
+                                if (q2 > d.Qty - q1)
+                                {
+                                    q1 += d.Qty - q1;
+                                    dic.Add(demo.Id, d.Qty - q1);
+                                }
+                                else
+                                {
+                                    q1 += q2;
+                                    dic.Add(demo.Id,q2);
+                                }
+                                
+                            }
+                            if (d.Qty >= q1)
+                            {
+                                stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+                                if (stocks.Count == 0)
+                                {
+                                    throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}搴撳瓨鏁伴噺涓嶈冻");
+                                }
+                                var q2 = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
+                                if (q2 > d.Qty - q1)
+                                {
+                                    q1 += d.Qty - q1;
+                                    dic.Add(stocks.First().Id, d.Qty - q1);
+                                }
+                                else
+                                {
+                                    q1 += q2;
+                                    dic.Add(stocks.First().Id, q2);
+                                }
+                            }
+                            if (d.Qty > q1)
+                            {
+                                throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻");
+                            }
                         }
-                        if (stocks.Count < 1)
+                        
+                        foreach (var s in dic)
                         {
-                            throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}");
+                            var st = stockList.First(a => a.Id == s.Key);
+                            var item = new BllExportNoticeDetail()
+                            {
+                                SONo = billNo,
+                                SkuNo = sku.SkuNo,
+                                SkuName = sku.SkuName,
+                                Standard = sku.Standard,
+                                LotNo = st.LotNo,
+                                LotText = st.LotText,
+                                Qty = s.Value,
+                                AllotQty = 0,
+                                FactQty = 0,
+                                CompleteQty = 0,
+                                PackagNo = sku.PackagNo,
+                                Price = sku.Price,
+                                Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty,
+                                IsBale = "",
+                                IsBelt = "",
+                                SupplierLot = stocks.First().SupplierLot,
+                                IsWave = "0",
+                                WaveNo = "",
+                                IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1",
+
+                                CreateUser = 0,
+                            };
+                            list.Add(item);
+                           
+                            st.LockQty += s.Value;//閿佸畾鏁伴噺
+                            var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty })
+                                .ExecuteCommand();
                         }
-
-                        var item = new BllExportNoticeDetail()
-                        {
-                            SONo = billNo,
-                            SkuNo = sku.SkuNo,
-                            SkuName = sku.SkuName,
-                            Standard = sku.Standard,
-                            LotNo = d.LotNo,
-                            LotText = "",
-                            Qty = d.Qty,
-                            AllotQty = 0,
-                            FactQty = 0,
-                            CompleteQty = 0,
-                            PackagNo = sku.PackagNo,
-                            Price = sku.Price,
-                            Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty,
-                            IsBale = "",
-                            IsBelt = "",
-                            SupplierLot = stocks.First().SupplierLot,
-                            IsWave = "0",
-                            WaveNo = "",
-
-                            CreateUser = 0,
-                        };
-                        list.Add(item);
-                        stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺
-
-                        var i = Db.Updateable(stocks.First()).UpdateColumns(it => new { it.LockQty })
-                            .ExecuteCommand();
-
+                       
                     }
                     var notice = new BllExportNotice()
                     {
@@ -330,42 +400,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 +461,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"))
@@ -408,7 +506,8 @@
                     SkuName = it.SkuName,
                     LotNo = it.LotNo,
                     Standard = it.Standard,
-                    Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty
+                    //Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty,
+                    Qty = it.Qty - it.LockQty - it.FrozenQty,
 
                 }).ToList();
 
@@ -493,29 +592,82 @@
                         }
                         //搴撳瓨
                         List<DataStock> stocks;
-                        //List<DataStockDetail> pallets;
+
+                        decimal q1 = 0;
+                        Dictionary<int, decimal> dic = new Dictionary<int, decimal>();
                         if (!string.IsNullOrWhiteSpace(d.LotNo))
                         {
                             stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList();
-                            //pallets = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList();
+                            //if (stocks.Count < 1)
+                            //{
+                            //    throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}");
+                            //}
+                            ////鍒ゆ柇鏁伴噺
+                            //var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
+                            //if (d.Qty > qty)
+                            //{
+                            //    throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+                            //}
+                            //if (qty > d.Qty - q1)
+                            //{
+                            //    q1 += d.Qty - q1;
+                            //    dic.Add(stocks.First().Id, d.Qty - q1);
+                            //}
+                            //else
+                            //{
+                            //    q1 += qty;
+                            //    dic.Add(stocks.First().Id, qty);
+                            //}
                         }
                         else
                         {
-                            stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
-                            //pallets = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList();
-                        }
-                        if (stocks.Count < 1)
-                        {
-                            throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}");
-                        }
+                            //stocks = stockList.Where(m => m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList();
 
-                        //鍒ゆ柇鏁伴噺
-                        var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
-                        if (d.Qty > qty)
-                        {
-                            throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
-                        }
+                            //foreach (var demo in stocks)
+                            //{
+                            //    if (q1 >= d.Qty)
+                            //    {
+                            //        continue;
+                            //    }
+                            //    var q2 = demo.Qty - demo.LockQty - demo.FrozenQty;
 
+                            //    if (q2 > d.Qty - q1)
+                            //    {
+                            //        q1 += d.Qty - q1;
+                            //        dic.Add(demo.Id, d.Qty - q1);
+                            //    }
+                            //    else
+                            //    {
+                            //        q1 += q2;
+                            //        dic.Add(demo.Id, q2);
+                            //    }
+
+                            //}
+                            //if (d.Qty >= q1)
+                            //{
+                                stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+                            //    if (stocks.Count == 0)
+                            //    {
+                            //        throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}搴撳瓨鏁伴噺涓嶈冻");
+                            //    }
+                            //    var q2 = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
+                            //    if (q2 > d.Qty - q1)
+                            //    {
+                            //        q1 += d.Qty - q1;
+                            //        dic.Add(stocks.First().Id, d.Qty - q1);
+                            //    }
+                            //    else
+                            //    {
+                            //        q1 += q2;
+                            //        dic.Add(stocks.First().Id, q2);
+                            //    }
+                            //}
+                            //if (d.Qty > q1)
+                            //{
+                            //    throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻");
+                            //}
+                        }
+                        
                         var item = new BllExportNoticeDetail()
                         {
                             SONo = billNo,
@@ -541,10 +693,19 @@
                             CreateUser = userId,
                         };
                         list.Add(item);
-                        stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺
 
+                        
+                        stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺
                         var i = Db.Updateable(stocks.First()).UpdateColumns(it => new { it.LockQty })
                             .ExecuteCommand();
+
+                        //foreach (var s in dic)
+                        //{
+                        //    var st = stockList.First(m => m.Id == s.Key);
+                        //    st.LockQty += s.Value;//閿佸畾鏁伴噺
+                        //    var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty })
+                        //        .ExecuteCommand();
+                        //}
 
                     }
                     var notice = new BllExportNotice()
@@ -687,161 +848,285 @@
 
                 try
                 {
-                    //鍒犻櫎鏃�
-                    foreach (var d in noticeDetail)
+                    if (notice.Origin == "WMS")
                     {
-                        var mq = model.Detail.Where(o => o.SkuNo == d.SkuNo).ToList();
-                        if (!string.IsNullOrWhiteSpace(d.LotNo))
+                        //鍒犻櫎鏃�
+                        foreach (var d in noticeDetail)
                         {
-                            mq = mq.Where(o => o.LotNo == d.LotNo).ToList();
-                        }
-                        if (mq.Any()) //濡傛灉鏈夎繖涓墿鏂欏強鎵规鍒欒烦杩�
-                        {
-                            continue;
-                        }
-                        //
-                        var fl = stockList.Where(s => s.SkuNo == d.SkuNo).ToList();
-                        DataStock fls;
-                        if (!string.IsNullOrWhiteSpace(d.LotNo))
-                        {
-                            fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo);
-                        }
-                        else
-                        {
-                            fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo));
-                        }
-                        if (fls == null)
-                        {
-                            throw new Exception($"鏈壘鍒扮墿鏂檣d.SkuNo}銆佹壒娆d.LotNo} 鐨勫簱瀛樹俊鎭�");
-                        }
-                        fls.LockQty -= d.Qty;
-                        d.IsDel = "1";
-                        d.UpdateUser = userId;
-                        d.UpdateTime = DateTime.Now;
-                        Db.Updateable(d).ExecuteCommand();
-                        Db.Updateable(fls).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
-                    }
-
-                    //鏇存柊鍑哄簱鍗�
-                    foreach (var d in model.Detail)
-                    {
-                        if (d.Qty < 1)
-                        {
-                            throw new Exception("鍑哄簱鏁版嵁蹇呴』澶т簬0");
-                        }
-                        var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo);
-                        if (sku == null)
-                        {
-                            throw new Exception("鍑哄簱鐗╁搧涓虹┖");
-                        }
-                        //搴撳瓨
-                        List<DataStock> stocks;
-                        List<DataStockDetail> pallet;
-                        if (!string.IsNullOrWhiteSpace(d.LotNo))
-                        {
-                            stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList();
-                            pallet = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList();
-                        }
-                        else
-                        {
-                            stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
-                            pallet = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList();
-                        }
-
-                        if (stocks.Count < 1)
-                        {
-                            throw new Exception("鍑哄簱鐗╁搧搴撳瓨涓嶈冻");
-                        }
-                        var stock = stocks.First();//鎬诲簱瀛�
-                        //
-                        BllExportNoticeDetail old;
-                        if (string.IsNullOrWhiteSpace(d.LotNo))
-                        {
-                            old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo));
-                        }
-                        else
-                        {
-                            old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo);
-                        }
-
-                        //鏂板姞椤�
-                        if (old == null)
-                        {
-                            //鍒ゆ柇鏁伴噺
-                            var qty = stock.Qty - stock.LockQty - stock.FrozenQty;
-                            if (d.Qty > qty)
+                            var mq = model.Detail.Where(o => o.SkuNo == d.SkuNo).ToList();
+                            if (!string.IsNullOrWhiteSpace(d.LotNo))
                             {
-                                throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+                                mq = mq.Where(o => o.LotNo == d.LotNo).ToList();
                             }
-
-                            var item = new BllExportNoticeDetail()
+                            if (mq.Any()) //濡傛灉鏈夎繖涓墿鏂欏強鎵规鍒欒烦杩�
                             {
-                                SONo = notice.SONo,
-                                SkuNo = sku.SkuNo,
-                                SkuName = sku.SkuName,
-                                Standard = sku.Standard,
-                                LotNo = d.LotNo,
-                                LotText = "",
-                                Status = "0",
-                                Qty = d.Qty,
-                                AllotQty = 0,
-                                FactQty = 0,
-                                CompleteQty = 0,
-                                PackagNo = sku.PackagNo,
-                                Price = sku.Price,
-                                Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty,
-                                IsBale = d.IsBale,
-                                IsBelt = d.IsBelt,
-                                SupplierLot = stocks.First().SupplierLot,
-                                IsWave = "0",
-                                WaveNo = "",
-
-                                CreateUser = userId,
-                            };
-
-                            stock.LockQty += d.Qty;//閿佸畾鏁伴噺
-                            var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand();
-                            var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
-                        }
-                        else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt)
-                        {
-                            if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty)
-                            {
-                                throw new Exception("鐗╁搧搴撳瓨鏁伴噺涓嶈冻");
+                                continue;
                             }
-                            //澧炲姞
-                            if (d.Qty > old.Qty)
+                            //
+                            var fl = stockList.Where(s => s.SkuNo == d.SkuNo).ToList();
+                            DataStock fls;
+                            if (!string.IsNullOrWhiteSpace(d.LotNo))
                             {
-                                stock.LockQty += d.Qty - old.Qty;
+                                fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo);
                             }
                             else
                             {
-                                stock.LockQty -= old.Qty - d.Qty;
+                                fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo));
                             }
-                            old.IsBale = d.IsBale;
-                            old.IsBelt = d.IsBelt;
-                            old.Qty = d.Qty;
-                            old.UpdateUser = userId;
-                            old.UpdateTime = DateTime.Now;
-                            var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand();
-                            var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+                            if (fls == null)
+                            {
+                                throw new Exception($"鏈壘鍒扮墿鏂檣d.SkuNo}銆佹壒娆d.LotNo} 鐨勫簱瀛樹俊鎭�");
+                            }
+                            fls.LockQty -= d.Qty;
+                            d.IsDel = "1";
+                            d.UpdateUser = userId;
+                            d.UpdateTime = DateTime.Now;
+                            Db.Updateable(d).ExecuteCommand();
+                            Db.Updateable(fls).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+                        }
+
+                        //鏇存柊鍑哄簱鍗�
+                        foreach (var d in model.Detail)
+                        {
+                            if (d.Qty < 1)
+                            {
+                                throw new Exception("鍑哄簱鏁版嵁蹇呴』澶т簬0");
+                            }
+                            var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo);
+                            if (sku == null)
+                            {
+                                throw new Exception("鍑哄簱鐗╁搧涓虹┖");
+                            }
+                            //搴撳瓨
+                            List<DataStock> stocks;
+                            List<DataStockDetail> pallet;
+                            if (!string.IsNullOrWhiteSpace(d.LotNo))
+                            {
+                                stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList();
+                                pallet = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList();
+                            }
+                            else
+                            {
+                                stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+                                pallet = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList();
+                            }
+
+                            if (stocks.Count < 1)
+                            {
+                                throw new Exception("鍑哄簱鐗╁搧搴撳瓨涓嶈冻");
+                            }
+                            var stock = stocks.First();//鎬诲簱瀛�
+                            //
+                            BllExportNoticeDetail old;
+                            if (string.IsNullOrWhiteSpace(d.LotNo))
+                            {
+                                old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo));
+                            }
+                            else
+                            {
+                                old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo);
+                            }
+
+                            //鏂板姞椤�
+                            if (old == null)
+                            {
+                                //鍒ゆ柇鏁伴噺
+                                var qty = stock.Qty - stock.LockQty - stock.FrozenQty;
+                                if (d.Qty > qty)
+                                {
+                                    throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+                                }
+
+                                var item = new BllExportNoticeDetail()
+                                {
+                                    SONo = notice.SONo,
+                                    SkuNo = sku.SkuNo,
+                                    SkuName = sku.SkuName,
+                                    Standard = sku.Standard,
+                                    LotNo = d.LotNo,
+                                    LotText = "",
+                                    Status = "0",
+                                    Qty = d.Qty,
+                                    AllotQty = 0,
+                                    FactQty = 0,
+                                    CompleteQty = 0,
+                                    PackagNo = sku.PackagNo,
+                                    Price = sku.Price,
+                                    Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty,
+                                    IsBale = d.IsBale,
+                                    IsBelt = d.IsBelt,
+                                    SupplierLot = stocks.First().SupplierLot,
+                                    IsWave = "0",
+                                    WaveNo = "",
+
+                                    CreateUser = userId,
+                                };
+
+                                stock.LockQty += d.Qty;//閿佸畾鏁伴噺
+                                var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand();
+                                var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+                            }
+                            else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt)
+                            {
+                                if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty)
+                                {
+                                    throw new Exception("鐗╁搧搴撳瓨鏁伴噺涓嶈冻");
+                                }
+                                //澧炲姞
+                                if (d.Qty > old.Qty)
+                                {
+                                    stock.LockQty += d.Qty - old.Qty;
+                                }
+                                else
+                                {
+                                    stock.LockQty -= old.Qty - d.Qty;
+                                }
+                                old.IsBale = d.IsBale;
+                                old.IsBelt = d.IsBelt;
+                                old.Qty = d.Qty;
+                                old.UpdateUser = userId;
+                                old.UpdateTime = DateTime.Now;
+                                var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand();
+                                var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+                            }
+                        }
+
+                        //瀹㈡埛淇℃伅
+                        var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault();
+                        notice.Type = model.Type;
+                        notice.CustomerNo = model.CustomerNo;
+                        notice.CustomerName = customer == null ? "" : customer.CustomerName;
+                        notice.LogisticsId = model.LogisticsId;
+                        notice.UpdateUser = userId;
+                        notice.UpdateTime = DateTime.Now;
+
+                        var n = Db.Updateable(notice).ExecuteCommand();
+                        if (n <= 0)
+                        {
+                            Db.RollbackTran();
+                            return false;
                         }
                     }
-
-                    //瀹㈡埛淇℃伅
-                    var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault();
-                    notice.Type = model.Type;
-                    notice.CustomerNo = model.CustomerNo;
-                    notice.CustomerName = customer == null ? "" : customer.CustomerName;
-                    notice.LogisticsId = model.LogisticsId;
-                    notice.UpdateUser = userId;
-                    notice.UpdateTime = DateTime.Now;
-
-                    var n = Db.Updateable(notice).ExecuteCommand();
-                    if (n <= 0)
+                    else  //erp/mes
                     {
-                        Db.RollbackTran();
-                        return false;
+                        //鏇存柊鍑哄簱鍗�
+                        foreach (var d in model.Detail)
+                        {
+                            if (d.Qty < 1)
+                            {
+                                throw new Exception("鍑哄簱鏁版嵁蹇呴』澶т簬0");
+                            }
+                            var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo);
+                            if (sku == null)
+                            {
+                                throw new Exception("鍑哄簱鐗╁搧涓虹┖");
+                            }
+                            //搴撳瓨
+                            List<DataStock> stocks;
+                            if (!string.IsNullOrWhiteSpace(d.LotNo))
+                            {
+                                stocks = stockList.Where(s => s.SkuNo == d.SkuNo && d.LotNo.Contains(s.LotNo)).ToList();
+                            }
+                            else
+                            {
+                                stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+                            }
+
+                            if (stocks.Count < 1)
+                            {
+                                throw new Exception("鍑哄簱鐗╁搧搴撳瓨涓嶈冻");
+                            }
+                            var stock = stocks.First();//鎬诲簱瀛�
+                            //
+                            BllExportNoticeDetail old;
+                            if (string.IsNullOrWhiteSpace(d.LotNo))
+                            {
+                                old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo));
+                            }
+                            else
+                            {
+                                old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo);
+                            }
+
+                            //鏂板姞椤�
+                            if (old == null)
+                            {
+                                //鍒ゆ柇鏁伴噺
+                                var qty = stock.Qty - stock.LockQty - stock.FrozenQty;
+                                if (d.Qty > qty)
+                                {
+                                    throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+                                }
+
+                                var item = new BllExportNoticeDetail()
+                                {
+                                    SONo = notice.SONo,
+                                    SkuNo = sku.SkuNo,
+                                    SkuName = sku.SkuName,
+                                    Standard = sku.Standard,
+                                    LotNo = d.LotNo,
+                                    LotText = "",
+                                    Status = "0",
+                                    Qty = d.Qty,
+                                    AllotQty = 0,
+                                    FactQty = 0,
+                                    CompleteQty = 0,
+                                    PackagNo = sku.PackagNo,
+                                    Price = sku.Price,
+                                    Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty,
+                                    IsBale = d.IsBale,
+                                    IsBelt = d.IsBelt,
+                                    SupplierLot = stocks.First().SupplierLot,
+                                    IsWave = "0",
+                                    WaveNo = "",
+
+                                    CreateUser = userId,
+                                };
+
+                                stock.LockQty += d.Qty;//閿佸畾鏁伴噺
+                                var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand();
+                                var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+                            }
+                            else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt)
+                            {
+                                if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty)
+                                {
+                                    throw new Exception("鐗╁搧搴撳瓨鏁伴噺涓嶈冻");
+                                }
+                                //澧炲姞
+                                if (d.Qty > old.Qty)
+                                {
+                                    stock.LockQty += d.Qty - old.Qty;
+                                }
+                                else
+                                {
+                                    stock.LockQty -= old.Qty - d.Qty;
+                                }
+                                old.IsBale = d.IsBale;
+                                old.IsBelt = d.IsBelt;
+                                old.Qty = d.Qty;
+                                old.UpdateUser = userId;
+                                old.UpdateTime = DateTime.Now;
+                                var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand();
+                                var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+                            }
+                        }
+
+                        //瀹㈡埛淇℃伅
+                        var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault();
+                        notice.Type = model.Type;
+                        notice.CustomerNo = model.CustomerNo;
+                        notice.CustomerName = customer == null ? "" : customer.CustomerName;
+                        notice.LogisticsId = model.LogisticsId;
+                        notice.UpdateUser = userId;
+                        notice.UpdateTime = DateTime.Now;
+
+                        var n = Db.Updateable(notice).ExecuteCommand();
+                        if (n <= 0)
+                        {
+                            Db.RollbackTran();
+                            return false;
+                        }
                     }
                     //娣诲姞鎿嶄綔鏃ュ織璁板綍
                     var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "缂栬緫", $"缂栬緫浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
@@ -1597,6 +1882,7 @@
                                     OutMode = "",  //鐩爣鍦板潃
                                     Order = 1
                                 });
+                                taskNoStr = exTask.TaskNo;
                             }
                             else if (locate.Depth == "02") //娣卞害涓�2
                             {
@@ -1685,7 +1971,7 @@
                                                     IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
 
                                                     StartLocat = stockNew.LocatNo,//璧峰浣嶇疆
-                                                    EndLocat = "",//鐩爣浣嶇疆
+                                                    EndLocat = toLocation,//鐩爣浣嶇疆
                                                     PalletNo = stockNew.PalletNo,//鎵樼洏鐮�
                                                     IsSend = 1,//鏄惁鍙啀娆′笅鍙�
                                                     IsCancel = 1,//鏄惁鍙彇娑�
@@ -1702,7 +1988,7 @@
                                                     StartRoadway = slotBefore.RoadwayNo, //璧峰宸烽亾
                                                     PalletNo = stockNew.PalletNo,//鎵樼洏鍙�
                                                     StartLocate = stockNew.LocatNo, // 璧峰浣嶇疆
-                                                    EndLocate = "", // 鐩爣浣嶇疆 
+                                                    EndLocate = toLocation, // 鐩爣浣嶇疆 
                                                     EndRoadway = "", // 鐩爣宸烽亾 
                                                     TaskNo = exYkTask1.TaskNo, // 浠诲姟鍙�
                                                     TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
@@ -1739,7 +2025,7 @@
                                     IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
 
                                     StartLocat = locate.LocatNo,//璧峰浣嶇疆
-                                    EndLocat = "",//鐩爣浣嶇疆
+                                    EndLocat = toLocation,//鐩爣浣嶇疆
                                     PalletNo = item.PalletNo,//鎵樼洏鐮�
                                     IsSend = 1,//鏄惁鍙啀娆′笅鍙�
                                     IsCancel = 1,//鏄惁鍙彇娑�
@@ -1750,13 +2036,13 @@
                                     Msg = locate.LocatNo + "鐨勫嚭搴撲换鍔�"
                                 };
                                 Db.Insertable(exTask1).ExecuteCommand();
-
+                                logTaskList.Add(exTask1);
                                 outDto2.Add(new OutCommandDto()
                                 {
                                     StartRoadway = locate.RoadwayNo, //璧峰宸烽亾
                                     PalletNo = item.PalletNo,//鎵樼洏鍙�
                                     StartLocate = locate.LocatNo, // 璧峰浣嶇疆
-                                    EndLocate = "", // 鐩爣浣嶇疆 
+                                    EndLocate = toLocation, // 鐩爣浣嶇疆 
                                     EndRoadway = locate.RoadwayNo, //鐩爣宸烽亾
                                     TaskNo = exTask1.TaskNo, // 浠诲姟鍙�
                                     TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
@@ -1831,7 +2117,7 @@
                             var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
                             if (taskNo == null)
                             {
-                                taskNo = logTaskList.First(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱
+                                taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱
                             }
                             if (taskNo == null)
                             {
@@ -1850,7 +2136,8 @@
                             flagList.Add(1);
                         }
                     }
-
+                    outDto1.AddRange(moveDto);
+                    outDto1.AddRange(outDto2);
                     //娣诲姞鎿嶄綔鏃ュ織璁板綍
                     var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId);
                     Db.CommitTran();
@@ -2262,6 +2549,38 @@
                     {
                         throw new Exception("鏈煡璇㈠埌浠诲姟淇℃伅");
                     }
+                    //鑾峰彇瀵瑰簲搴撲綅淇℃伅
+                    var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat);
+                    if (startlocat == null)
+                    {
+                        throw new Exception("鏈煡璇㈠埌鍌ㄤ綅淇℃伅");
+                    }
+                    startlocat.Status = "0";//淇敼鍒嗛厤淇℃伅鐘舵��
+                    //鑾峰彇鍌ㄤ綅淇℃伅
+                    var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat);
+                    //鑾峰彇绉诲簱浠籨鍔″搴旂洰鏍囧偍浣嶄俊鎭�
+                    SysStorageLocat endlocat = new SysStorageLocat();
+                    if (task.Type == "2")
+                    {
+                        endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.EndLocat);
+                        if (endlocat == null)
+                        {
+                            throw new Exception("鏈煡璇㈠埌鐩爣鍌ㄤ綅淇℃伅");
+                        }
+                    }
+                    if (locat == null)
+                    {
+                        Db.RollbackTran();
+                        throw new Exception("鏈煡璇㈠埌鍌ㄤ綅淇℃伅锛岃鏍稿疄锛�");
+                    }
+                    locat.Status = "1"; //鏈夌墿鍝�
+                    Db.Updateable(locat).ExecuteCommand();
+                    if (endlocat != null)
+                    {
+                        endlocat.Status = "0"; //绌哄偍浣� 0
+                        Db.Updateable(endlocat).ExecuteCommand();
+                    }
+
                     //淇敼浠诲姟 
                     task.IsSuccess = 1;
                     task.IsSend = 0;
@@ -2285,31 +2604,6 @@
 
                         noticeDetail.FactQty -= item.Qty; //淇敼鍑哄簱鍗曟槑缁嗙殑涓嬫灦鏁伴噺
                         Db.Updateable(noticeDetail).ExecuteCommand();
-
-                        //鑾峰彇鍌ㄤ綅淇℃伅
-                        var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat);
-                        //鑾峰彇绉诲簱浠诲姟瀵瑰簲鐩爣鍌ㄤ綅淇℃伅
-                        SysStorageLocat endlocat = new SysStorageLocat();
-                        if (task.Type == "2")
-                        {
-                            endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W03" && a.LocatNo == task.EndLocat);
-                            if (endlocat == null)
-                            {
-                                throw new Exception("鏈煡璇㈠埌鐩爣鍌ㄤ綅淇℃伅");
-                            }
-                        }
-                        if (locat == null)
-                        {
-                            Db.RollbackTran();
-                            throw new Exception("鏈煡璇㈠埌鍌ㄤ綅淇℃伅锛岃鏍稿疄锛�");
-                        }
-                        locat.Status = "1"; //鏈夌墿鍝�
-                        Db.Updateable(locat).ExecuteCommand();
-                        if (endlocat != null)
-                        {
-                            endlocat.Status = "0"; //绌哄偍浣� 0
-                            Db.Updateable(endlocat).ExecuteCommand();
-                        }
 
                         if (noticeDetail.FactQty == 0)
                         {
@@ -2552,7 +2846,7 @@
                         }
                         else
                         {
-                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0").ToList(); //&& string.IsNullOrWhiteSpace(m.LotNo)
+                            stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0" && string.IsNullOrWhiteSpace(m.LotNo)).ToList(); //
                         }
 
                         if (stockDetail.Count < 1)
@@ -2560,18 +2854,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 鍖呰淇℃伅
 
@@ -2664,21 +2962,21 @@
                             }
 
                             var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
-                            if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
-                            {
-                                if (string.IsNullOrWhiteSpace(detail.LotNo))
-                                {
-                                    detail.LotNo = s.LotNo;
+                            //if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
+                            //{
+                            //    if (string.IsNullOrWhiteSpace(detail.LotNo))
+                            //    {
+                            //        detail.LotNo = s.LotNo;
 
-                                }
-                                else
-                                {
-                                    if (!detail.LotNo.Contains(s.LotNo))
-                                    {
-                                        detail.LotNo += ";" + s.LotNo;
-                                    }
-                                }
-                            }
+                            //    }
+                            //    else
+                            //    {
+                            //        if (!detail.LotNo.Contains(s.LotNo))
+                            //        {
+                            //            detail.LotNo += ";" + s.LotNo;
+                            //        }
+                            //    }
+                            //}
 
                         }
                         detail.AllotQty += qty;
@@ -2819,10 +3117,14 @@
                         d.UpdateUser = userId;
                         d.UpdateTime = DateTime.Now;
 
-                        if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
-                        {
-                            d.LotNo = "";
-                        }
+                        //if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
+                        //{
+                        //    if (d.IsIssueLotNo != "1")
+                        //    {
+                        //        d.LotNo = "";
+                        //    }
+                            
+                        //}
                     }
                     notice.Status = "0";
                     notice.UpdateUser = userId;
@@ -2985,6 +3287,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 +3302,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