From 00e64cba66377cb75c9c947908627fe9f631746e Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期三, 21 一月 2026 13:53:14 +0800
Subject: [PATCH] '手动上传'

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs |   87 +++++++++++++++++++++++++++++++++++--------
 1 files changed, 71 insertions(+), 16 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
index abe2c87..2b89e47 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
@@ -1,4 +1,5 @@
 锘縰sing HslCommunication.WebSocket;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 using SqlSugar;
@@ -10,6 +11,7 @@
 using WIDESEA_Common.CommonEnum;
 using WIDESEA_Common.LocationEnum;
 using WIDESEA_Common.StockEnum;
+using WIDESEA_Common.WareHouseEnum;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -156,24 +158,39 @@
                 return WebResponseContent.Instance.Error(ex.Message);
             }
         }
-    
-        
+
+
         public string AccessingTunnel(int WarehouseId, int LocationType)
         {
             List<Dt_LocationInfo> locationData = BaseDal.QueryData(x => x.WarehouseId == WarehouseId);
-            var roadwayGroups = locationData
-                .Where(x => x.LocationType == LocationType)
-                .GroupBy(x => x.RoadwayNo)
-                .Select(g => new
-                {
-                    RoadwayNo = g.Key,
-                    LocationCount = g.Count(),
-                    AllLocations = g.ToList()
-                })
-                .OrderByDescending(g => g.LocationCount)  // 鏀逛负闄嶅簭鎺掑簭
-                .FirstOrDefault();  // 鍙栫涓�涓紙鏁伴噺鏈�澶氱殑锛�
+            var roadwayGroups = locationData.Where(x => x.LocationType == LocationType && x.EnableStatus== (int)EnableStatusEnum.Normal).GroupBy(x => x.RoadwayNo)
+            .Select(g => new
+            {
+                RoadwayNo = g.Key,
+                LocationCount = g.Count(),
+            }).OrderByDescending(g => g.LocationCount).ToList();
 
-            return roadwayGroups.RoadwayNo;
+            int minRequired = 15;
+            if(WarehouseId== (int)WarehouseEnum.YMYL)
+            {
+                if (LocationType == 2) minRequired = 6;
+
+                var selectedRoadway = roadwayGroups.FirstOrDefault(g => g.LocationCount >= minRequired);
+                if(selectedRoadway!=null) return selectedRoadway.RoadwayNo;
+
+            }
+            else
+            {
+                var selectedRoadway = roadwayGroups.FirstOrDefault(g => g.LocationCount >= minRequired);
+                if(selectedRoadway == null)
+                {
+                    selectedRoadway = roadwayGroups.FirstOrDefault(g => g.RoadwayNo == "5" && g.LocationCount != 0);
+
+                }
+                if(selectedRoadway != null) return selectedRoadway.RoadwayNo;
+            }
+
+            return "0";
         }
 
 
@@ -209,7 +226,8 @@
                     if (emptyLocations[i].Depth == 1)//鍒ゆ柇鏄惁1娣辫揣浣�
                     {
                         //鏌ヨ娣卞簱浣�
-                        int emprow = emptyLocations[i].Row == 2 ? 1 : 4;
+                        //int emprow = emptyLocations[i].Row == 2 ? 1 : 4;
+                        int emprow = judgmentRow(emptyLocations[i].RoadwayNo,emptyLocations[i].Row);
 
                         Dt_LocationInfo? sencondDepthLocationShen = emptyLocations.FirstOrDefault(x => x.Row == emprow && x.Layer == emptyLocations[i].Layer && x.Column == emptyLocations[i].Column);
                         if (sencondDepthLocationShen != null && sencondDepthLocationShen.LocationStatus == LocationStatusEnum.Free.ObjToInt())
@@ -224,13 +242,18 @@
                             {
                                 locationCaches.Add(new LocationCache { DateTime = DateTime.Now, LocationCode = emptyLocations[i].LocationCode });
                                 return emptyLocations[i];
+                            }else if (emptyLocations[i].RoadwayNo=="5" && emptyLocations[i].LocationStatus == LocationStatusEnum.Free.ObjToInt())
+                            {
+                                locationCaches.Add(new LocationCache { DateTime = DateTime.Now, LocationCode = emptyLocations[i].LocationCode });
+                                return emptyLocations[i];
                             }
                         }
                     }
                     else
                     {
                         //鏌ヨ2娣辫揣浣嶅搴旂殑1娣辫揣浣嶆槸鍚︿负绌�
-                        int emprow = emptyLocations[i].Row == 4 ? 3 : 2;
+                        //int emprow = emptyLocations[i].Row == 4 ? 3 : 2;
+                        int emprow = judgmentRow(emptyLocations[i].RoadwayNo, emptyLocations[i].Row);
 
                         Dt_LocationInfo? sencondDepthLocationQian = emptyLocations.FirstOrDefault(x => x.Row == emprow && x.Layer == emptyLocations[i].Layer && x.Column == emptyLocations[i].Column);
                         if (sencondDepthLocationQian != null && sencondDepthLocationQian.LocationStatus == LocationStatusEnum.Free.ObjToInt())
@@ -244,6 +267,38 @@
             }
         }
 
+        private int judgmentRow(string RoadwayNo, int locrow)
+        {
+            if (RoadwayNo == "1" || RoadwayNo == "3")
+            {
+                if(locrow==1 || locrow == 4)
+                {
+                    return locrow == 1 ? 2 : 3;
+                }
+                else
+                {
+                    return locrow == 2 ? 1 : 4;
+                }
+               
+            }
+            else if (RoadwayNo == "2" || RoadwayNo == "4")
+            {
+                if (locrow == 5 || locrow == 8)
+                {
+                    return locrow == 5 ? 6 : 7;
+                }
+                else
+                {
+                    return locrow == 6 ? 5 : 8;
+                }
+                    
+            }
+            else
+            {
+                return 0;
+            }
+        }
+
         public class LocationCache
         {
             public string LocationCode { get; set; }

--
Gitblit v1.9.3