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;
@@ -29,16 +29,6 @@
        }
        /// <summary>
        /// èŽ·å–æ—§WMS系统辅料仓库存
        /// </summary>
        /// <returns></returns>
        [HttpPost, Route("GetContainerInfo"), AllowAnonymous]
        public WebResponseContent GetContainerInfo()
        {
            return Service.GetContainerInfo();
        }
        /// <summary>
        /// åˆå§‹åŒ–货位
        /// </summary>
        /// <param name="initializationLocationDTO"></param>
@@ -56,9 +46,9 @@
        /// <param name="palletType"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("AssignLocation"), AllowAnonymous]
        public Dt_LocationInfo? AssignLocation(string roadwayNo, int palletType, int warehouseId, int heightType)
        public Dt_LocationInfo? AssignLocation(string roadwayNo, int palletType, int warehouseId)
        {
            return Service.AssignLocation(roadwayNo, palletType, warehouseId, heightType: heightType);
            return Service.AssignLocation(roadwayNo, palletType, warehouseId);
        }
        /// <summary>
@@ -96,5 +86,136 @@
                return WebResponseContent.Instance.Error(e.Message);
            }
        }
        /// <summary>
        /// æŸ¥è¯¢æ¡ä»¶è´§ä½
        /// </summary>
        /// <param name="roadwayNo"></param>
        /// <param name="warehouseId"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("GetLocationStatus")]
        public WebResponseContent GetLocationStatus(string roadwayNo, int warehouseId = 0)
        {
            // å®šä¹‰è¿”回数据结构
            var result = new
            {
                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)
            {
                // èŽ·å–å½“å‰å±‚çš„è´§ä½
                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("成功", result);
        }
        /// <summary>
        /// æŸ¥è¯¢å…¨éƒ¨å··é“
        /// </summary>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("GetRow")]
        public WebResponseContent GetRow()
        {
            // ä¿æŒå…¼å®¹æ—§æŽ¥å£ï¼Œè¿”回巷道列表
            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>
        /// æŸ¥è¯¢è´§ä½RFID
        /// </summary>
        /// <param name="requestData"></param>
        /// <returns></returns>
        [HttpPost, Route("GetRfid")]
        public WebResponseContent GetRfid([FromBody] dynamic requestData)
        {
            try
            {
                if (requestData == null)
                {
                    return WebResponseContent.Instance.Error("请求数据为空");
                }
                // æ£€æŸ¥locationCodes字段是否存在且不为null(兼容locationCode)
                if (requestData.locationCodes == null && requestData.locationCode == null)
                {
                    return WebResponseContent.Instance.Error("货位编号数组不能为空");
                }
                // è½¬æ¢ä¸ºstring[],优先使用locationCodes
                string[] locationCode = null;
                var locationCodeField = requestData.locationCodes ?? requestData.locationCode;
                if (locationCodeField is Newtonsoft.Json.Linq.JArray)
                {
                    locationCode = ((Newtonsoft.Json.Linq.JArray)locationCodeField).ToObject<string[]>();
                }
                else
                {
                    return WebResponseContent.Instance.Error("货位编号必须是数组格式");
                }
                // æ£€æŸ¥warehouseId字段是否存在
                int warehouseId = 0;
                if (requestData.warehouseId != null)
                {
                    warehouseId = Convert.ToInt32(requestData.warehouseId);
                }
                return Service.GetRfid(locationCode, warehouseId);
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error($"参数解析失败: {ex.Message}");
            }
        }
    }
}