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 |   81 ++++++++++++++++++++++++++++------------
 1 files changed, 57 insertions(+), 24 deletions(-)

diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index c28c5bc..294d448 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -4308,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;
+                                    }
+                                }
+                            }
+                        }
+                        
                     }
                 }
 
@@ -4506,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