From aec8d4748f4013998a5042c07285278fa9925e9c Mon Sep 17 00:00:00 2001
From: yuyou_x <2336760928@qq.com>
Date: 星期二, 20 二月 2024 11:17:46 +0800
Subject: [PATCH] 修改入库单据编辑添加问题

---
 Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs |  154 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 125 insertions(+), 29 deletions(-)

diff --git a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
index 7affefe..a5e06a7 100644
--- a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
@@ -48,7 +48,7 @@
                   .AndIF(!string.IsNullOrWhiteSpace(model.PalletNo), it => it.PalletNo.Contains(model.PalletNo.Trim()))
                   .AndIF(!string.IsNullOrWhiteSpace(model.LocatNo), it => it.LocatNo.Contains(model.LocatNo.Trim()))
                   .AndIF(!string.IsNullOrEmpty(model.RoadwayNo), a => a.RoadwayNo == model.RoadwayNo)
-                  .AndIF(!string.IsNullOrEmpty(model.WareHouseNo), a => a.RoadwayNo == model.WareHouseNo)
+                  .AndIF(!string.IsNullOrEmpty(model.WareHouseNo), a => a.WareHouseNo == model.WareHouseNo)
                   .AndIF(strList.Count>0, it => strList.Contains((int)it.ASNDetailNo))
                   .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => it.LotNo.Contains(model.LotNo.Trim()))
                   .AndIF(!string.IsNullOrWhiteSpace(model.LotText), it => it.LotText.Contains(model.LotText.Trim()))
@@ -359,8 +359,11 @@
                 foreach (var item in boxInfos)
                 {
                     //鍒犻櫎瑙g粦绠辨敮淇℃伅
-                    item.ASNNo = "";
-                    item.ASNDetailNo = null;
+                    if (item.Origin != "WMS")
+                    {
+                        item.ASNNo = "";
+                        item.ASNDetailNo = null;
+                    }                    
                     item.BindNo = null;
                     item.PalletNo = "";
                     item.Status = "0";
@@ -696,20 +699,25 @@
                 //鏌ヨ鎵樼洏缁戝畾淇℃伅(鐘舵�佷负绛夊緟鍏ュ簱鐨�)
                 var palletBindList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "2").ToList();
                 var haveLocate = palletBindList.FirstOrDefault(m => !string.IsNullOrWhiteSpace(m.LocatNo));
-
+                
+                var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList();
+                //鐗╂枡绫诲埆淇℃伅
+                var skuCategoryList = Db.Queryable<SysMaterialCategory>().Where(m => m.IsDel == "0").ToList();
+                
+                var skuNo = ""; //鍏ュ簱鐗╂枡
 
                 if (palletBindList.Count >= 1) //姝e父鍏ュ簱
                 {
-                    var bindIdList = palletBindList.Select(m => m.Id).ToList();
+                    //var bindIdList = palletBindList.Select(m => m.Id).ToList();
                     //鍒ゆ柇鏄惁鏈夐浂绠�
-                    foreach (var item in bindIdList)
-                    {
-                        var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BindNo == item);
-                        if (boxInfo.Count(m => m.BitBoxMark == "1") > 0)
-                        {
-                            throw new Exception($"{palletNo}鎵樼洏涓婃湁闆剁锛岃鍏ラ浂绠卞簱锛�");
-                        }
-                    }
+                    //foreach (var item in bindIdList)
+                    //{
+                    //    var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BindNo == item);
+                    //    if (boxInfo.Count(m => m.BitBoxMark == "1") > 0)
+                    //    {
+                    //        throw new Exception($"{palletNo}鎵樼洏涓婃湁闆剁锛岃鍏ラ浂绠卞簱锛�");
+                    //    }
+                    //}
 
                     var palletBind = palletBindList.FirstOrDefault(m => m.Status == "1");
                     if (palletBind != null)
@@ -737,6 +745,7 @@
                     {
                         isHaveLocateNo = true; //宸叉湁鎸囧畾鍌ㄤ綅
                     }
+
                     if (palletBindList.First().Type == "0") //鐗╂枡鎵樺叆搴�
                     {
                         //鍒ゆ柇鏄惁缁戝畾鍗曟嵁鍙婂崟鎹姸鎬佹槸鍚︽甯�
@@ -747,12 +756,26 @@
                             {
                                 throw new Exception("鎵樼洏瀛樺湪鐗╂枡鏈粦瀹氬叆搴撳崟锛屼笉鍙叆搴擄紒");
                             }
-
                             if (notice.Status == "3")
                             {
                                 throw new Exception($"鍏ュ簱鍗晎item.ASNNo}宸插叧闂紝涓嶅彲鍏ュ簱锛�");
                             }
                         }
+
+                        //鑾峰彇鐗╂枡瀛樻斁鍖哄煙
+                        var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m =>
+                            m.IsDel == "0" && m.Id == palletBindList.First().ASNDetailNo);
+                        if (noticeDetail == null)
+                        {
+                            throw new Exception("鎵樼洏瀛樺湪鐗╂枡鏈粦瀹氬叆搴撳崟鏄庣粏锛屼笉鍙叆搴�");
+                        }
+
+                        skuNo = noticeDetail.SkuNo;
+                        
+                    }
+                    else if(palletBindList.First().Type == "1")//绌烘墭鐩�
+                    {
+                        skuNo = "100099"; 
                     }
                 }
                 else //鍥炴祦鍏ュ簱
@@ -762,17 +785,19 @@
                     {
                         throw new Exception($"{palletNo}鎵樼洏鏉$爜涓嶅叿鏈夌鐮佷俊鎭紝涓嶅彲鍏ュ簱锛�");
                     }
-                    else
-                    {
-                        //鍒ゆ柇鏄惁鏈夐浂绠�
-                        var detailIdList = stockDetail.Select(m => m.Id).ToList();
-                        var dataBoxInfo = Db.Queryable<DataBoxInfo>().Where(m => detailIdList.Contains(m.StockDetailId)).ToList();
-                        if (dataBoxInfo.Count(m => m.BitBoxMark == "1")>0)
-                        {
-                            throw new Exception($"{palletNo}鎵樼洏涓婃湁闆剁锛屼笉鍙叆搴擄紒");
-                        }
+                    skuNo = stockDetail.First().SkuNo;
+                    //else
+                    //{
+                    //    //鍒ゆ柇鏄惁鏈夐浂绠�
+                    //    var detailIdList = stockDetail.Select(m => m.Id).ToList();
+                    //    var dataBoxInfo = Db.Queryable<DataBoxInfo>().Where(m => detailIdList.Contains(m.StockDetailId)).ToList();
+                    //    if (dataBoxInfo.Count(m => m.BitBoxMark == "1")>0)
+                    //    {
+                    //        throw new Exception($"{palletNo}鎵樼洏涓婃湁闆剁锛屼笉鍙叆搴擄紒");
+                    //    }
 
-                    }
+                    //}
+
 
                     //鑾峰彇瀵瑰簲鍥炲簱瑙勫垯
                     var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" &&  a.FunSetName == "鎵樼洏鍥炲簱楠岃瘉" && a.IsEnable == "NO");
@@ -810,7 +835,31 @@
                 }
                 else
                 {
-                    locate = allotLocate.GetSuiTableLocate(houseNo, roadwayNo);
+                    var sku = skuList.FirstOrDefault(m => m.SkuNo == skuNo);
+                    if (sku == null)
+                    {
+                        throw new Exception("鐗╂枡淇℃伅涓湭鏌ヨ鍒板叆搴撳崟鏄庣粏鍖呭惈鐨勭墿鏂欎俊鎭紝涓嶅彲鍏ュ簱");
+                    }
+                    //鍒ゆ柇鐗╂枡鏄惁鍚湁绫诲埆淇℃伅
+                    if (string.IsNullOrWhiteSpace(sku.CategoryNo))
+                    {
+                        throw new Exception($"鐗╂枡锛歿sku.SkuNo}鏈煡璇㈠埌绫诲埆淇℃伅");
+                    }
+
+                    var skuCategory = skuCategoryList.FirstOrDefault(m => m.CategoryNo == sku.CategoryNo);
+                    if (skuCategory == null)
+                    {
+                        throw new Exception($"鏈湪绫诲埆淇℃伅涓煡璇㈠埌鐗╂枡锛歿sku.SkuNo}鍖呭惈鐨勭被鍒�");
+                    }
+
+                    var areaStr = skuCategory.AreaNo.Split(",");
+                    var areaList = new List<string>();
+                    foreach (var item in areaStr)
+                    {
+                        areaList.Add(item);
+                    }
+
+                    locate = allotLocate.GetSuiTableLocate(houseNo, areaList, roadwayNo);
                 }               
                 Db.BeginTran();
                 try
@@ -1101,7 +1150,7 @@
                             #region 搴撳瓨鏄庣粏
                             var sd = new DataStockDetail()
                             {
-                                LotNo = noticeDetail.LotNo,
+                                LotNo = item.LotNo,
                                 LotText = noticeDetail.LotText,
                                 SupplierLot = noticeDetail.SupplierLot,
                                 SkuNo = noticeDetail.SkuNo,
@@ -1201,7 +1250,7 @@
 
                             #region 搴撳瓨 
                             var dataStock = Db.Queryable<DataStock>().First(m =>
-                                m.IsDel == "0" && m.SkuNo == noticeDetail.SkuNo && m.LotNo == noticeDetail.LotNo);
+                                m.IsDel == "0" && m.SkuNo == noticeDetail.SkuNo && m.LotNo == item.LotNo);
                             if (dataStock != null)
                             {
                                 dataStock.Qty += item.Qty;
@@ -1214,7 +1263,7 @@
                                     SkuNo = noticeDetail.SkuNo,
                                     SkuName = noticeDetail.SkuName,
                                     Standard = noticeDetail.Standard,
-                                    LotNo = noticeDetail.LotNo,
+                                    LotNo = item.LotNo,
                                     LotText = noticeDetail.LotText,
                                     Qty = item.Qty,
                                     LockQty = 0,
@@ -1476,7 +1525,54 @@
                 AllotLocation allotLocate = new AllotLocation();
                 try
                 {
-                    locate = allotLocate.GetSuiTableLocate("W01", taskModel.EndRoadway);
+                    var skuNo = "";
+                    if (asnNo != "鍥炴祦鎵樼洏")
+                    {
+                        //鑾峰彇鐗╂枡瀛樻斁鍖哄煙
+                        var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m =>
+                            m.IsDel == "0" && m.Id == palletBindModel.ASNDetailNo);
+                        if (noticeDetail == null)
+                        {
+                            throw new Exception("鎵樼洏瀛樺湪鐗╂枡鏈粦瀹氬叆搴撳崟鏄庣粏锛屼笉鍙叆搴�");
+                        }
+
+                        skuNo = noticeDetail.SkuNo;
+                    }
+                    else
+                    {
+                        var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == model.PalletNo).ToList();
+                        if (stockDetail.Count == 0)
+                        {
+                            throw new Exception($"{model.PalletNo}鎵樼洏鏉$爜涓嶅叿鏈夌鐮佷俊鎭紝涓嶅彲鍏ュ簱锛�");
+                        }
+                        skuNo = stockDetail.First().SkuNo;
+                    }
+
+                    var sku = Db.Queryable<SysMaterials>().First(m =>m.IsDel =="0" && m.SkuNo == skuNo);
+                    if (sku == null)
+                    {
+                        throw new Exception("鐗╂枡淇℃伅涓湭鏌ヨ鍒板叆搴撳崟鏄庣粏鍖呭惈鐨勭墿鏂欎俊鎭紝涓嶅彲鍏ュ簱");
+                    }
+                    //鍒ゆ柇鐗╂枡鏄惁鍚湁绫诲埆淇℃伅
+                    if (string.IsNullOrWhiteSpace(sku.CategoryNo))
+                    {
+                        throw new Exception($"鐗╂枡锛歿sku.SkuNo}鏈煡璇㈠埌绫诲埆淇℃伅");
+                    }
+
+                    var skuCategory = Db.Queryable<SysMaterialCategory>().First(m =>m.IsDel=="0" && m.CategoryNo == sku.CategoryNo);
+                    if (skuCategory == null)
+                    {
+                        throw new Exception($"鏈湪绫诲埆淇℃伅涓煡璇㈠埌鐗╂枡锛歿sku.SkuNo}鍖呭惈鐨勭被鍒�");
+                    }
+
+                    var areaStr = skuCategory.AreaNo.Split(",");
+                    var areaList = new List<string>();
+                    foreach (var item in areaStr)
+                    {
+                        areaList.Add(item);
+                    }
+
+                    locate = allotLocate.GetSuiTableLocate("W01", areaList, taskModel.EndRoadway);
                 }
                 catch (Exception ex)
                 {

--
Gitblit v1.8.0