wangxinhui
2026-03-19 5f53f4af369a1c7a8a09eb1f45c20a8581d107a9
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs
@@ -1,4 +1,4 @@
using HslCommunication.WebSocket;
using HslCommunication.WebSocket;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
@@ -90,69 +90,84 @@
        /// <summary>
        /// æŸ¥è¯¢æ¡ä»¶è´§ä½
        /// </summary>
        /// <param name="row"></param>
        /// <param name="roadwayNo"></param>
        /// <param name="warehouseId"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("GetLocationStatus")]
        public WebResponseContent GetLocationStatus(int row, int warehouseId = 0)
        public WebResponseContent GetLocationStatus(string roadwayNo, int warehouseId = 0)
        {
            List<int> layers;
            if (warehouseId == 0)
            // å®šä¹‰è¿”回数据结构
            var result = new
            {
                layers = _repository.QueryData(x => x.Row == row).Select(x => x.Layer).Distinct().ToList();
            }
            else
                row1 = new List<object>(), // å··é“第1排(东面)
                row2 = new List<object>()  // å··é“第2排(西面)
            };
            // æŸ¥è¯¢å··é“下所有货位
            var locations = _repository.QueryData(x => x.RoadwayNo == roadwayNo);
            // èŽ·å–æ‰€æœ‰å±‚ï¼ŒæŒ‰ä»Žé«˜åˆ°ä½ŽæŽ’åº
            var layers = locations.Select(x => x.Layer).Distinct().OrderByDescending(x => x).ToList();
            // å¤„理每一层
            foreach (var layer in layers)
            {
                layers = _repository.QueryData(x => x.Row == row && x.WarehouseId == warehouseId).Select(x => x.Layer).Distinct().ToList();
            }
            List<object> listObj = new List<object>();
            foreach (var item in layers)
            {
                object locationObj;
                if (warehouseId == 0)
                {
                    locationObj = _repository.QueryData(x => x.Row == row && x.Layer == item)
                        .OrderBy(x => x.Columns)
                        .Select(x => new
                        {
                            layer = x.Layer.ToString().PadLeft(2, '0'),
                            row = x.Row.ToString().PadLeft(2, '0'),
                            column = x.Columns.ToString().PadLeft(2, '0'),
                            locationCode = x.LocationCode,
                            location_lock = x.LocationStatus
                        }).ToList();
                }
                else
                {
                    locationObj = _repository.QueryData(x => x.Row == row && x.Layer == item && x.WarehouseId == warehouseId)
                        .OrderBy(x => x.Columns)
                        .Select(x => new
                        {
                            layer = x.Layer.ToString().PadLeft(2, '0'),
                            row = x.Row.ToString().PadLeft(2, '0'),
                            column = x.Columns.ToString().PadLeft(2, '0'),
                            locationCode = x.LocationCode,
                            location_lock = x.LocationStatus
                        }).ToList();
                }
                object obj = new { layer = item, locationObj };
                listObj.Add(obj);
                // èŽ·å–å½“å‰å±‚çš„è´§ä½
                var layerLocations = locations.Where(x => x.Layer == layer);
                // ç¬¬1排数据(东面)
                var row1Locations = layerLocations.Where(x => x.Row == 1)
                    .OrderBy(x => x.Columns)
                    .Select(x => new
                    {
                        layer = x.Layer.ToString().PadLeft(2, '0'),
                        row = x.Row.ToString().PadLeft(2, '0'),
                        column = x.Columns.ToString().PadLeft(2, '0'),
                        locationCode = x.LocationCode,
                        location_lock = x.LocationStatus
                    }).ToList();
                // ç¬¬2排数据(西面)
                var row2Locations = layerLocations.Where(x => x.Row == 2)
                    .OrderBy(x => x.Columns)
                    .Select(x => new
                    {
                        layer = x.Layer.ToString().PadLeft(2, '0'),
                        row = x.Row.ToString().PadLeft(2, '0'),
                        column = x.Columns.ToString().PadLeft(2, '0'),
                        locationCode = x.LocationCode,
                        location_lock = x.LocationStatus
                    }).ToList();
                // æ·»åŠ åˆ°ç»“æžœä¸­
                result.row1.Add(new { layer, locationObj = row1Locations });
                result.row2.Add(new { layer, locationObj = row2Locations });
            }
            return WebResponseContent.Instance.OK("成功", listObj);
            return WebResponseContent.Instance.OK("成功", result);
        }
        /// <summary>
        /// æŸ¥è¯¢å…¨éƒ¨è´§ä½
        /// æŸ¥è¯¢å…¨éƒ¨å··é“
        /// </summary>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("GetRow")]
        public WebResponseContent GetRow()
        {
            List<int> listRow = _repository.QueryData().Select(x => x.Row).Distinct().ToList();
            return WebResponseContent.Instance.OK("成功", listRow);
            // ä¿æŒå…¼å®¹æ—§æŽ¥å£ï¼Œè¿”回巷道列表
            List<string> roadwayList = _repository.QueryData().Select(x => x.RoadwayNo).Distinct().ToList();
            return WebResponseContent.Instance.OK("成功", roadwayList);
        }
        /// <summary>
        /// æŸ¥è¯¢å…¨éƒ¨å··é“
        /// </summary>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("GetRoadway")]
        public WebResponseContent GetRoadway()
        {
            List<string> roadwayList = _repository.QueryData().Select(x => x.RoadwayNo).Distinct().ToList();
            return WebResponseContent.Instance.OK("成功", roadwayList);
        }
        /// <summary>