From 201f679225383f21d6fcce0d60d17a1b9c4cd36f Mon Sep 17 00:00:00 2001
From: Admin <Admin@ADMIN>
Date: 星期六, 24 一月 2026 09:49:51 +0800
Subject: [PATCH] 优化巷道逻辑

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs |   72 +++++++++++++++++++++++++++++++++++-
 1 files changed, 70 insertions(+), 2 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 2b89e47..db6c92d 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"
@@ -163,7 +163,7 @@
         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 && x.EnableStatus== (int)EnableStatusEnum.Normal).GroupBy(x => x.RoadwayNo)
+            var roadwayGroups = locationData.Where(x => x.LocationType == LocationType && x.LocationStatus== (int)LocationStatusEnum.Free && x.EnableStatus== (int)EnableStatusEnum.Normal).GroupBy(x => x.RoadwayNo)
             .Select(g => new
             {
                 RoadwayNo = g.Key,
@@ -197,6 +197,11 @@
         public Dt_LocationInfo? ShallowGetLocation(string roadway, int Locationtype,int row ,int Layer, int Column)
         {
             return BaseDal.QueryData(x => x.RoadwayNo == roadway && x.LocationType == Locationtype && x.Row==row && x.Layer== Layer && x.Column== Column).FirstOrDefault();
+        }
+
+        public Dt_LocationInfo? FindStorageLocation(string LocationCode)
+        {
+            return BaseDal.QueryData(x => x.LocationCode == LocationCode).FirstOrDefault();
         }
 
 
@@ -267,7 +272,7 @@
             }
         }
 
-        private int judgmentRow(string RoadwayNo, int locrow)
+        public int judgmentRow(string RoadwayNo, int locrow)
         {
             if (RoadwayNo == "1" || RoadwayNo == "3")
             {
@@ -305,5 +310,68 @@
 
             public DateTime DateTime { get; set; }
         }
+
+
+
+        public WebResponseContent GetArea()
+        {
+            // WarehouseId鍒嗙粍锛岀劧鍚庢槸RoadwayNo
+            var result = BaseDal.QueryData()
+                .GroupBy(x => x.WarehouseId)
+                .Select(g => new {
+                    WarehouseId = g.Key,
+                    RoadwayNo = g.Select(x => x.RoadwayNo).Distinct().ToList()
+                })
+                .ToList();
+            return WebResponseContent.Instance.OK("鎴愬姛", result);
+        }
+
+        public WebResponseContent GetLocationStatus(int WarehouseId, string RoadwayNo)
+        {
+            // 鏍煎紡{灞�,{杩欎竴灞傜殑鍒楁暟鎹畗}
+            var locations = BaseDal.QueryData(x => x.WarehouseId == WarehouseId && x.RoadwayNo == RoadwayNo)
+                .Select(x => new
+                {
+                    x.RoadwayNo,
+                    x.WarehouseId,
+                    x.Row,
+                    x.Column,
+                    x.Layer,
+                    x.Depth,
+                    x.LocationType,
+                    x.LocationStatus,
+                    x.EnableStatus
+                })
+                .ToList();
+
+            // 濡傛灉娌℃湁鎵惧埌鏁版嵁锛岃繑鍥炵┖鍒楄〃鑰屼笉鏄痭ull
+            if (locations == null || !locations.Any())
+            {
+                return WebResponseContent.Instance.OK("鏈壘鍒板搴斿贩閬撶殑璐т綅鏁版嵁", new List<object>());
+            }
+
+            // 淇敼涓哄眰涓嬮潰鏀炬墍鏈夊垪鐨勪俊鎭�
+            var result = locations
+                .GroupBy(x => x.Layer)  // 鎸夊眰鍒嗙粍
+                .Select(layerGroup => new
+                {
+                    layer = layerGroup.Key,
+                    columns = layerGroup.GroupBy(x => x.Column)  // 姣忓眰涓寜鍒楀垎缁�
+                                       .Select(columnGroup => new
+                                       {
+                                           column = columnGroup.Key,
+                                           depths = columnGroup.Select(d => new
+                                           {
+                                               row = d.Row,
+                                               depth = d.Depth,
+                                               locationType = d.LocationType,
+                                               locationStatus = d.LocationStatus,
+                                               enableStatus = d.EnableStatus
+                                           }).ToList()
+                                       }).ToList()
+                }).ToList();
+
+            return WebResponseContent.Instance.OK("鎴愬姛", result);
+        }
     }
 }

--
Gitblit v1.9.3