using HH.WCS.Mobox3.DSZSH; using HH.WCS.Mobox3.DSZSH.util; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Text; using System.Xml; namespace HH.WCS.Mobox3.DSZSH.dispatch { /// /// NDC的API接口,用于替代原NDC,NDCHelper和HostToAGV模块 /// public class NDCApi { public static string NDCApiUrl { set; get; } static NDCApi() { NDCApiUrl = Settings.NdcApiUrl; } public static AgvApiResult AddOrderNew(int ts, int pri, string taskNo, List param) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); var model = new AddOrderNewModel(); model.ts_no = ts; model.pri = pri; model.task_no = taskNo; model.param = param; try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"NDC任务下发:{taskNo}\n\n{jsonInfo}\n", "NDC"); var result = httpH.WebPost(NDCApiUrl + "Add", jsonInfo); LogHelper.Info($"NDC任务下发结果:res='{result}'", "NDC"); agvApiResult = JsonConvert.DeserializeObject(result); return agvApiResult; } catch (Exception e) { LogHelper.Info($"任务下发失败:res='{e.Message}'", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; return agvApiResult; } } public static AgvApiResult AddOrderNew(AddOrderNewModel model) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"任务{model.task_no}下发,{jsonInfo}", "NDC"); var result = httpH.WebPost(NDCApiUrl + "Add", jsonInfo); LogHelper.Info($"任务下发结果res={result}", "NDC"); agvApiResult = JsonConvert.DeserializeObject(result); return agvApiResult; } catch (Exception e) { LogHelper.Info($"任务下发失败 res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; return agvApiResult; } } public static AgvApiResult CancelOrder(string tsNo, bool is_force = true) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); var model = new CancelOrderModel(); model.task_no = tsNo; model.is_force = is_force; try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"任务{model.task_no}取消,{jsonInfo}", "NDC"); var result = httpH.WebPost(NDCApiUrl + "Cancel", jsonInfo); LogHelper.Info($"任务{model.task_no}取消结果={result}", "NDC"); agvApiResult = JsonConvert.DeserializeObject(result); return agvApiResult; } catch (Exception e) { LogHelper.Info($"CancelOrder res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; return agvApiResult; } } public static AgvApiResult CancelOrder(CancelOrderModel model) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"任务{model.task_no}取消,{jsonInfo}", "NDC"); var result = httpH.WebPost(NDCApiUrl + "Cancel", jsonInfo); LogHelper.Info($"任务{model.task_no}取消结果={result}", "NDC"); agvApiResult = JsonConvert.DeserializeObject(result); return agvApiResult; } catch (Exception e) { LogHelper.Info($"CancelOrder res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; return agvApiResult; } } public static AgvApiResult ChangeOrderPri(string taskNo, int newPri) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); var model = new ChangePriModel(); model.task_no = taskNo; model.pri = newPri; try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"任务{model.task_no}优先级更改,{jsonInfo}", "NDC"); var result = httpH.WebPost(NDCApiUrl + "ChangePri", jsonInfo); LogHelper.Info($"任务{model.task_no}优先级更改结果={result}", "NDC"); agvApiResult = JsonConvert.DeserializeObject(result); return agvApiResult; } catch (Exception e) { LogHelper.Info($"ChangeOrderPri res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; return agvApiResult; } } public static AgvApiResult ChangeOrderPri(ChangePriModel model) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"任务{model.task_no}优先级更改,{jsonInfo}", "NDC"); var result = httpH.WebPost(NDCApiUrl + "ChangePri", jsonInfo); LogHelper.Info($"任务{model.task_no}优先级更改结果={result}", "NDC"); agvApiResult = JsonConvert.DeserializeObject(result); return agvApiResult; } catch (Exception e) { LogHelper.Info($"ChangeOrderPri res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; return agvApiResult; } } public static AgvApiResult ChangeOrderParam(string taskNo, int paramNo, string paramStr) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); var model = new ChangeParamModel(); model.task_no = taskNo; model.param_no = paramNo; model.param = paramStr; try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"任务{model.task_no}参数更改,{jsonInfo}", "NDC"); var result = httpH.WebPost(NDCApiUrl + "ChangeParam", jsonInfo); LogHelper.Info($"任务{model.task_no}参数更改结果={result}", "NDC"); agvApiResult = JsonConvert.DeserializeObject(result); return agvApiResult; } catch (Exception e) { LogHelper.Info($"ChangeOrderParam res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; return agvApiResult; } } public static AgvApiResult ChangeOrderParam(ChangeParamModel model) { var httpH = new HttpHelper(); var agvApiResult = new AgvApiResult(); try { string jsonInfo = JsonConvert.SerializeObject(model); LogHelper.Info($"任务{model.task_no}参数更改,{jsonInfo}", "NDC"); var result = httpH.WebPost(NDCApiUrl + "ChangeParam", jsonInfo); LogHelper.Info($"任务{model.task_no}参数更改结果={result}", "NDC"); agvApiResult = JsonConvert.DeserializeObject(result); return agvApiResult; } catch (Exception e) { LogHelper.Info($"ChangeOrderParam res={e.Message}", "NDC"); agvApiResult.err_code = -1; agvApiResult.err_msg = e.Message; return agvApiResult; } } } /// /// 返回信息Model /// public class AgvApiResult { public int err_code { set; get; }//异常码:0 - 正常,其它值为异常错误码 public string err_msg { set; get; }//返回的错误描述,在 err_code <> 0 时返回 public object result { set; get; }//正确返回的结果内容,在 err_code = 0 且有返回内容时 } public class AddOrderNewModel { public int ts_no { set; get; }//TS 号,必须有值 public int pri { set; get; }//优先级 public string task_no { set; get; }//上游任务编码,如果 no_feedback = 1 时,可以为空 public List param { set; get; } = new List();//参数列表 } public class param { public string name { set; get; }//参数名 public string value { set; get; }//参数值 } public class CancelOrderModel { public string task_no { set; get; }//上游任务编码 public bool is_force { set; get; } = true;//是否强制取消,1 – 强制 } public class ChangeParamModel { public string task_no { set; get; }//上游任务编码 public int param_no { set; get; }//参数号 public string param { set; get; }//参数内容,多个参数以英文分号(;)分隔 } public class ChangePriModel { public string task_no { set; get; }//上游任务编码 public int pri { set; get; }//新优先级 } }