using Model.InterFaceModel; using SqlSugar; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Text; using ZXing; using static Model.InterFaceModel.RCSModel; using WMS.Entity.Context; using WMS.Entity.SysEntity; namespace Utility.Tools { public static class RcsHelper { private static readonly SqlSugarScope Db = DataContext.Db; /// /// 下发任务 /// /// 请求参数 /// 请求地址 /// 返回信息 /// 优先级 /// public static bool CreateTaskForAgv(TaskDetial taskDetial, string url, out string agvMsg, string priority = null) { bool result = false; var tasktype = "F12"; //跨楼层任务tasktype值赋值…… //tasktype = ""; List pahtList = new List(); //起始位置 targetRoute royte1 = new targetRoute(); royte1.seq = 0; royte1.type = "SITE"; royte1.code = taskDetial.Startport; pahtList.Add(royte1); //目标位置 targetRoute royte2 = new targetRoute(); royte2.seq = 0; royte2.type = "SITE"; royte2.code = taskDetial.Endport; pahtList.Add(royte2); AgvCreateTaskModel taskModel = new AgvCreateTaskModel(); taskModel.taskType = tasktype; taskModel.targetRoute = pahtList; //AGV任务下发时增加hearder:X-LR-REQUEST-ID,值为随机数 long ran = DateTime.Now.Ticks; Dictionary key = new Dictionary(); key.Add("X-LR-REQUEST-ID", ran.ToString()); // 正式运行程序放开 var jsonData = JsonConvert.SerializeObject(taskModel); string response = HttpHelper.DoPost(url, jsonData, "下发给AGV转运命令", "AGV", key); //解析返回数据 var agvModel = JsonConvert.DeserializeObject(response); if (agvModel.Code == "0") { result = true;//给下车下发任务成功 agvMsg = ""; } else { var logStr = $@".\log\AGV\下发给AGV转运命令" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; LogFile.SaveLogToFile($"下发给AGV转运命令异常:( {agvModel.Message} ),", logStr); agvMsg = agvModel.Message; } return result; } /// /// 下发AGV绑定载具和站点 /// /// 桶号L /// 请求地址 /// 返回信息 /// 返回信息 /// public static bool BindPalletAndSite(string palletNo,string locateNo,string url,out string agvMsg) { bool result = false; carrierInfo carrierInfo = new carrierInfo(); carrierInfo.carrierCode = palletNo; carrierInfo.siteCode = locateNo; //AGV任务下发时增加hearder:X-LR-REQUEST-ID,值为随机数 long ran = DateTime.Now.Ticks; Dictionary key = new Dictionary(); key.Add("X-LR-REQUEST-ID", ran.ToString()); // 正式运行程序放开 var jsonData = JsonConvert.SerializeObject(carrierInfo); string response = HttpHelper.DoPost(url, jsonData, "下发给AGV绑定载具命令", "AGV", key); //解析返回数据 var agvModel = JsonConvert.DeserializeObject(response); if (agvModel.Code == "0") { result = true;//给下车下发任务成功 agvMsg = ""; } else { var logStr = $@".\log\AGV\下发给AGV绑定载具命令" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; LogFile.SaveLogToFile($"下发给AGV绑定载具命令异常:( {agvModel.Message} ),", logStr); agvMsg = agvModel.Message; } return result; } /// /// 下发AGV解绑载具和站点 /// /// 容器类型1:400L,2:800/1000L /// 请求地址 /// 返回信息 /// 返回信息 /// public static bool UnBindPalletAndSite(string palletType, string locateNo,string url, out string agvMsg) { bool result = false; carrierInfo carrierInfo = new carrierInfo(); carrierInfo.carrierCode = palletType; carrierInfo.siteCode = locateNo; //AGV任务下发时增加hearder:X-LR-REQUEST-ID,值为随机数 long ran = DateTime.Now.Ticks; Dictionary key = new Dictionary(); key.Add("X-LR-REQUEST-ID", ran.ToString()); // 正式运行程序放开 var jsonData = JsonConvert.SerializeObject(carrierInfo); string response = HttpHelper.DoPost(url, jsonData, "下发给AGV绑定载具命令", "AGV", key); //解析返回数据 var agvModel = JsonConvert.DeserializeObject(response); if (agvModel.Code == "0") { result = true;//给下车下发任务成功 agvMsg = ""; } else { var logStr = $@".\log\AGV\下发给AGV解绑载具命令" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; LogFile.SaveLogToFile($"下发给AGV解绑载具命令异常:( {agvModel.Message} ),", logStr); agvMsg = agvModel.Message; } return result; } } }