using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Web; using System.Collections; using Newtonsoft.Json.Linq; using DK.XuWei.WebMes; using Curtain.Log; /// /// 金马AGV库位接口 xuwei 2022-03-26 /// public static class AgvApi { public static string ip = "http://172.19.24.15:9001/api/venders/wms/area/"; /// /// 金马原生方法提供的数据 /// /// /// public static string GetWmsArea(string areaCode="") { string url = ip + areaCode; try { string result = JsonClient.Get(url); JArray json = JArray.Parse(result); return new JsonResult() { success = true, status = JsonStatus.success, message = "AGV接口调用成功!", rows=json }.ToJson(); } catch { return new JsonResult() { success = false, status = JsonStatus.error, message = "AGV接口调用异常!" }.ToJson(); } } /// /// 改进的库位数据,提供顺序XY坐标 /// /// /// public static string GetWmsAreaXY(string areaCode = "") { string url = ip + areaCode; try { string result = JsonClient.Get(url); //阴干区库位整理 if (areaCode == "2") { result = result.Replace("200834", "200000"); result = result.Replace("201917", "202764"); result = result.Replace("205751", "207254"); result = result.Replace("207668", "209184"); result = result.Replace("209585", "211114"); result = result.Replace("211502", "213044"); result = result.Replace("213419", "214974"); result = result.Replace("217849", "218834"); result = result.Replace("219766", "220764"); result = result.Replace("221683", "222694"); result = result.Replace("225517", "227184"); result = result.Replace("227434", "229114"); result = result.Replace("229351", "231044"); } JArray json = JArray.Parse(result); //查找横纵坐标并记录到xNumber和yNumber List xNumber = new List(); List yNumber = new List(); for (int i = 0; i < ((JArray)json[0]["positions"]).Count; i++) { if (!xNumber.Contains(Convert.ToDouble(json[0]["positions"][i]["position"]["cooX"]))) xNumber.Add(Convert.ToDouble(json[0]["positions"][i]["position"]["cooX"])); if (!yNumber.Contains(Convert.ToDouble(json[0]["positions"][i]["position"]["cooY"]))) yNumber.Add(Convert.ToDouble(json[0]["positions"][i]["position"]["cooY"])); } xNumber.Sort(); yNumber.Sort(); //Logger.Debug(new JsonResult(xNumber).ToJson()); //Logger.Debug(new JsonResult(yNumber).ToJson()); //int count = ((JArray)json[0]["positions"]).Count; //Logger.Debug(new JsonResult("库位"+areaCode.ToString()+":"+xNumber.Count.ToString() + "x" + yNumber.Count.ToString() + "=" + count.ToString()).ToJson()); //将横纵坐标增加到对象 for (int i = 0; i < ((JArray)json[0]["positions"]).Count; i++) { ((JObject)json[0]["positions"][i]["position"]).Add(new JProperty("dongkeX", xNumber.FindIndex((double n) => n == Convert.ToDouble(json[0]["positions"][i]["position"]["cooX"])) + 1)); ((JObject)json[0]["positions"][i]["position"]).Add(new JProperty("dongkeY", yNumber.FindIndex((double n) => n == Convert.ToDouble(json[0]["positions"][i]["position"]["cooY"])) + 1)); } ((JObject)json[0]).Add(new JProperty("dongkecountX", xNumber.Count)); ((JObject)json[0]).Add(new JProperty("dongkecountY", yNumber.Count)); return new JsonResult() { success = true, status = JsonStatus.success, message = "AGV接口调用成功!", rows = json }.ToJson(); } catch { return new JsonResult() { success = false, status = JsonStatus.error, message = "AGV接口调用异常!" }.ToJson(); } } }