liulijun
2026-02-06 d49aedf1a71838f3dcb6c762895c601174937c0b
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs
@@ -86,5 +86,121 @@
                return WebResponseContent.Instance.Error(e.Message);
            }
        }
        /// <summary>
        /// æŸ¥è¯¢æ¡ä»¶è´§ä½
        /// </summary>
        /// <param name="row"></param>
        /// <param name="warehouseId"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("GetLocationStatus")]
        public WebResponseContent GetLocationStatus(int row, int warehouseId = 0)
        {
            List<int> layers;
            if (warehouseId == 0)
            {
                layers = _repository.QueryData(x => x.Row == row).Select(x => x.Layer).Distinct().ToList();
            }
            else
            {
                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);
            }
            return WebResponseContent.Instance.OK("成功", listObj);
        }
        /// <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);
        }
        /// <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}");
            }
        }
    }
}