From 13b0b92e981330f3c0dfaf351c203045f90bdb93 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期三, 08 十月 2025 08:16:14 +0800
Subject: [PATCH] 修改四向车库移库分配库位逻辑

---
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs |   94 ++++++++++++++++++++++++++++++++---------------
 1 files changed, 64 insertions(+), 30 deletions(-)

diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 5cdeeb8..294d448 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -948,6 +948,7 @@
                     WaveNo = a.WaveNo,
                     IsDespatch = a.IsDespatch,
                     Demo = a.Demo,
+                    OrderCode = a.OrderCode,
 
                     CreateUserName = c.RealName,
                     UpdateUserName = c.RealName,
@@ -1187,10 +1188,10 @@
                 switch (model.WareHouseNo)
                 {
                     case "W01"://鎴愬搧搴�
-                        if (skuList.Any(m => m.Type != "2"))
-                        {
-                            throw new Exception("浠撳簱涓庡嚭搴撶墿鏂欎笉绗�");
-                        }
+                        //if (skuList.Any(m => m.Type != "2"))
+                        //{
+                        //    throw new Exception("浠撳簱涓庡嚭搴撶墿鏂欎笉绗�");
+                        //}
                         break;
                     case "W02"://鍘熸枡搴�
                         if (skuList.Any(m => m.Type == "2"))
@@ -1830,9 +1831,9 @@
                 {
                     throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁淇℃伅");
                 }
-                if (notice.Origin != "WMS" || notice.Status != "0")
+                if (notice.Status != "0")//notice.Origin != "WMS" ||
                 {
-                    throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︽湭绛夊緟鎵ц鎴栨潵婧愭槸鍚︽槸WMS");
+                    throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︽湭绛夊緟鎵ц");
                 }
 
                 //鎬诲簱瀛樹俊鎭�
@@ -4307,31 +4308,65 @@
 
                         var tray2 = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == item2.SkuNo
                             && m.LotNo == item2.LotNo && !slotList.Contains(m.LocatNo) && m.PalletTags == item2.PalletTags && okLan.Contains(m.RoadwayNo)).ToList();
-                        foreach (var s in tray2)
+                        if (tray2.Count > 0)
                         {
-                            if (string.IsNullOrWhiteSpace(s.RoadwayNo))//鍒ゆ柇鏄惁鍦ㄥ簱澶栵紝濡傛槸璺宠繃
+                            foreach (var s in tray2)
                             {
-                                continue;
-                            }
-                            var lan = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == s.RoadwayNo).OrderBy(m => m.LocatNo).ToList();
-                            //鍒ゆ柇鏄惁鏈夊叆搴撲腑銆佸嚭搴撲腑銆佺Щ鍏ヤ腑銆佺Щ鍑轰腑
-                            if (lan.Count(m => m.Status == "2" || m.Status == "3" || m.Status == "4" || m.Status == "5") > 0)
-                            {
-                                continue;
-                            }
-                            if (lan.Count(m => m.Status == "0") > 0)
-                            {
-
-                                var bol = GetBecomingLocation(s.RoadwayNo, ref location);
-                                if (bol && !string.IsNullOrWhiteSpace(location))
+                                if (string.IsNullOrWhiteSpace(s.RoadwayNo))//鍒ゆ柇鏄惁鍦ㄥ簱澶栵紝濡傛槸璺宠繃
                                 {
-                                    newAddress = location;
-                                    return newAddress;
+                                    continue;
+                                }
+                                var lan = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == s.RoadwayNo).OrderBy(m => m.LocatNo).ToList();
+                                //鍒ゆ柇鏄惁鏈夊叆搴撲腑銆佸嚭搴撲腑銆佺Щ鍏ヤ腑銆佺Щ鍑轰腑
+                                if (lan.Count(m => m.Status == "2" || m.Status == "3" || m.Status == "4" || m.Status == "5") > 0)
+                                {
+                                    continue;
+                                }
+                                if (lan.Count(m => m.Status == "0") > 0)
+                                {
+
+                                    var bol = GetBecomingLocation(s.RoadwayNo, ref location);
+                                    if (bol && !string.IsNullOrWhiteSpace(location))
+                                    {
+                                        newAddress = location;
+                                        return newAddress;
+                                    }
 
                                 }
-
                             }
                         }
+                        if(string.IsNullOrEmpty(newAddress))
+                        {
+                            //宸叉湁鐗╁搧鐨勫贩閬�
+                            var roadwayHave = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == "W01").GroupBy(g => g.RoadwayNo).Select(s => s.RoadwayNo).ToList();
+                            //鏌ユ壘娌℃湁鐗╁搧鐨勫贩閬�
+                            var roadwayNull = Db.Queryable<SysStorageRoadway>().Where(w => w.IsDel == "0" && w.WareHouseNo == "W01" && w.Status == "0" && okLan.Contains(w.RoadwayNo) && !roadwayHave.Contains(w.RoadwayNo)).Select(s => s.RoadwayNo).ToList();
+                            if (roadwayNull.Count > 0)
+                            {
+                                foreach (var itemRoad in roadwayNull)
+                                {
+                                    var bol = GetBecomingLocation(itemRoad, ref location);
+                                    if (bol && !string.IsNullOrWhiteSpace(location))
+                                    {
+                                        newAddress = location;
+                                        return newAddress;
+                                    }
+                                }
+                            }
+                            else
+                            {
+                                foreach (var itemRoad in roadwayHave)
+                                {
+                                    var bol = GetBecomingLocation(itemRoad, ref location);
+                                    if (bol && !string.IsNullOrWhiteSpace(location))
+                                    {
+                                        newAddress = location;
+                                        return newAddress;
+                                    }
+                                }
+                            }
+                        }
+                        
                     }
                 }
 
@@ -4505,16 +4540,15 @@
 
                 if (slotModel[0].Column > aisleRow)
                 {
-                    // 鍙栨渶涓婇潰涓�鎺�
-                    location = slotModel[0].LocatNo;
-
-                }
-                else
-                {
                     // 鍙栨渶涓嬮潰涓�鎺�
 
                     location = slotModel[slotModel.Count - 1].LocatNo;
                 }
+                else
+                {
+                    // 鍙栨渶涓婇潰涓�鎺�
+                    location = slotModel[0].LocatNo;                    
+                }
 
                 bl = true;
             }

--
Gitblit v1.8.0