using HH.WCS.ZhongCeJinTan.core; using HH.WCS.ZhongCeJinTan.util; using HH.WCS.ZhongCeJinTan.wms; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Web.Caching; using static HH.WCS.ZhongCeJinTan.api.ApiModel; namespace HH.WCS.ZhongCeJinTan.dispatch { /// /// 国自调度辅助类 /// public class GZRobot { private static readonly HttpHelper apiHelper = new HttpHelper(); private static readonly string baseUrl = ""; private static readonly string baseUrl1 = ""; public static List GetIO() { var result = apiHelper.Get(baseUrl + "api/engine/view/iostates/"); var data = JsonConvert.DeserializeObject>(result); return data.data; } public static void UpdateIOState() { var data = new { data = new List() }; var result = apiHelper.Post(baseUrl + "api/engine/tasks/iostates/", JsonConvert.SerializeObject(data)); var dataResult = JsonConvert.DeserializeObject>(result); } public static int CreateOrder(string taskNo, int priority, string param, string ts = "p2p") { var msg = ""; var orderId = 0; var data = new OrderInfo() { order_name = taskNo, priority = priority, dead_line = DateTime.Now, ts_name = ts, parameters = param }; var request = JsonConvert.SerializeObject(data); var response = apiHelper.Post(baseUrl + "api/om/order/", request); msg = $"[guozi-CreateOrder] request={request} response={response}"; Console.WriteLine(msg); LogHelper.Info($"推送一楼参数信息{msg}","任务"); if (response != "") { try { var dataResult = JsonConvert.DeserializeObject>(response); if (dataResult.code == 0) { orderId = dataResult.data[0].in_order_id; } } catch (Exception ex) { } } else { msg = "[guozi-CreateOrder]创建订单失败"; Console.WriteLine(msg); } return orderId; } public static int CreateOrder1(string taskNo, int priority, string param, string ts = "p2p") { var msg = ""; var orderId = 0; var data = new OrderInfo() { order_name = taskNo, priority = priority, dead_line = DateTime.Now, ts_name = ts, parameters = param }; var request = JsonConvert.SerializeObject(data); var response = apiHelper.Post(baseUrl1 + "api/om/order/", request); msg = $"[guozi-CreateOrder] request={request} response={response}"; Console.WriteLine(msg); LogHelper.Info($"推送三楼参数信息{msg}", "任务"); if (response != "") { try { var dataResult = JsonConvert.DeserializeObject>(response); if (dataResult.code == 0) { orderId = dataResult.data[0].in_order_id; } } catch (Exception ex) { } } else { msg = "[guozi-CreateOrder]创建订单失败"; Console.WriteLine(msg); } return orderId; } public static bool CancelGZOrder(int orderId) { bool result = false; string msg = ""; List requests = new List(); var request = new CancelGZOrderInfo() { order_id = orderId, order_command_type_id = 2 }; requests.Add(request); var response = apiHelper.Put(baseUrl + "api/om/order/order-command/", JsonConvert.SerializeObject(requests)); msg = $"[guozi-CancelOrder] request={requests};response={response}"; LogHelper.Info($"{msg}", "任务"); if (response != "") { var dataResult = JsonConvert.DeserializeObject(response); if (dataResult.code == 0) { msg = "[guozi-CancelOrder]取消订单成功"; Console.WriteLine(msg); result = true; return result; } } else { msg = "[guozi-CancelOrder]取消订单失败"; Console.WriteLine(msg); } return result; } public static bool CancelGZOrder1(int orderId) { bool result = false; string msg = ""; List requests = new List(); var request = new CancelGZOrderInfo() { order_id = orderId, order_command_type_id = 2 }; requests.Add(request); var response = apiHelper.Put(baseUrl1 + "api/om/order/order-command/", JsonConvert.SerializeObject(requests)); msg = $"[guozi-CancelOrder] request={requests};response={response}"; LogHelper.Info($"{msg}", "任务"); if (response != "") { var dataResult = JsonConvert.DeserializeObject(response); if (dataResult.code == 0) { msg = "[guozi-CancelOrder]取消订单成功"; Console.WriteLine(msg); result = true; return result; } } else { msg = "[guozi-CancelOrder]取消订单失败"; Console.WriteLine(msg); } return result; } public static bool CancelOrder(int orderId) { bool result = false; string msg = ""; var request = new CancelOrderInfo() { order_list = new List(orderId) }; var response = apiHelper.Post(baseUrl + "api/om/order/cancel/", JsonConvert.SerializeObject(request)); msg = $"[guozi-CancelOrder] request={request};response={response}"; Console.WriteLine(msg); if (response != "") { var dataResult = JsonConvert.DeserializeObject(response); if (dataResult.code == 0) { msg = "[guozi-CancelOrder]取消订单成功"; Console.WriteLine(msg); result = true; return result; } } else { msg = "[guozi-CancelOrder]取消订单失败"; Console.WriteLine(msg); } return result; } public static QueryOrderResult QueryOrder(int id) { // var result = new QueryOrderResult() { agv_list = new List { 0 } }; string msg = ""; var response = apiHelper.Get(baseUrl + $"/api/om/order/{id}/"); msg = $"[guozi-QueryOrderResult] request={id};response={response}"; Console.WriteLine(msg); if (response != "") { var data = JsonConvert.DeserializeObject>(response); result = data.data[0]; } else { msg = "[guozi-QueryOrderResult]查询订单信息失败"; Console.WriteLine(msg); } return result; } /// /// 查询订单状态 /// /// /// public static AgvTaskState QueryOrder(string taskNo) { AgvTaskState result = new AgvTaskState(); string msg = ""; var response = apiHelper.Get(baseUrl + $"api/om/order/?order_name={taskNo}"); msg = $"[guozi-QueryOrderResult] request={taskNo};response={response}"; Console.WriteLine(msg); if (response != "") { var req = JsonConvert.DeserializeObject(response); LogHelper.Info($"{req.data.Count}"); if (req.code == 0 && req.data.Count > 0) { switch (req.data[0].orderStatus) { case "active": result.state = 1; break; case "source_finish": //取货完成 result.state = 4; break; case "dest_finish": //卸货完成 result.state = 6; break; case "finish": result.state = 2; break; case "cancel_finish": result.state = 7; break; default: result.state = 0; break; } result.task_no = req.data[0].orderName; if (req.data[0].agvIDList != null) { result.forklift_no = req.data[0].agvIDList[0].ToString(); } TaskCore.OperateTaskStatus(result); } } else { msg = "[guozi-QueryOrderResult]查询订单信息失败"; Console.WriteLine(msg); } return result; } /// /// 订单状态反馈 /// /// /// public static GzResult orderStatusReport(orderStatusReportParme model) { GzResult result = new GzResult(); AgvTaskState agv = new AgvTaskState(); if (model == null) { result.resultCode = 1; result.orderID = 0; result.msg = "返回订单状态失败,参数为空"; } switch (model.orderStatus) { case "active": agv.state = 1; break; case "source_finish": //取货完成 agv.state = 4; break; case "dest_finish": //卸货完成 agv.state = 6; break; case "finish": agv.state = 2; break; case "manually_finish": agv.state = 2; break; case "cancel_finish": agv.state = 7; break; case "error": agv.state = 7; break; default: agv.state = 0; break; } if (agv.state != 0) { agv.task_no = model.orderName; agv.forklift_no = model.agvIDList; TaskCore.OperateTaskStatus(agv); } result.resultCode = 0; result.msg = "返回订单状态成功"; result.orderID = model.orderID; LogHelper.Info("orderStatusReport 返回" + JsonConvert.SerializeObject(result), "API"); return result; } } public class gzResult { public string app_name { get; set; } public string version { get; set; } public int code { get; set; } public string msg { get; set; } public List data { get; set; } } public class IOState { public int io_id { get; set; } public string io_name { get; set; } public string io_type_id { get; set; } public string io_type { get; set; } public int io_status_id { get; set; } public string io_status_type { get; set; } public string parameter_definition_int4_1 { get; set; } public int io_value_int4_1 { get; set; } public string parameter_definition_int4_2 { get; set; } public int io_value_int4_2 { get; set; } public string parameter_definition_int4_3 { get; set; } public int io_value_int4_3 { get; set; } public string parameter_definition_int4_4 { get; set; } public int io_value_int4_4 { get; set; } public string parameter_definition_json { get; set; } public string io_value_json { get; set; } } public class CancelGZOrderInfo { public int order_id { get; set; } public int order_command_type_id { get; set; } } public class CancelGZOrderResult { public string app_name { get; set; } public string version { get; set; } public int code { get; set; } public string msg { get; set; } public cancle data { get; set; } public List success_list { get; set; } public List error_list { get; set; } } public class cancle { public List success_list { get; set; } public List error_list { get; set; } } public class IOSateInfo { public int io_id { get; set; } public int io_status_id { get; set; } public int io_value_int4_1 { get; set; } public int io_value_int4_2 { get; set; } public int io_value_int4_3 { get; set; } public int io_value_int4_4 { get; set; } public string io_value_json { get; set; } } public class IOStatesInfoResult { public List success_list { get; set; } public List error_list { get; set; } public class ResultInfo { public int io_id { get; set; } } } public class OrderInfo { public string order_name { get; set; } public int priority { get; set; } public DateTime dead_line { get; set; } public string ts_name { get; set; } public string parameters { get; set; }//{\"dock\":1} } public class OrderInfoResult { public int in_order_id { get; set; } } public class CancelOrderInfo { public List order_list { get; set; } } public class CancelOrderInfoResult { public List success_list { get; set; } public List error_list { get; set; } public class ResultInfo { public int order_id { get; set; } } } public class CancelOrderResult { public string app_name { get; set; } public string version { get; set; } public int code { get; set; } public string msg { get; set; } public cancle data { get; set; } } public class success_list { public int order_id { get; set; } } public class error_list { } public class QueryOrderResult { public int order_id { get; set; } public string order_name { get; set; } public int priority { get; set; } public DateTime dead_line { get; set; } public string ts_id { get; set; } public string parameters { get; set; }//{"LocationName":"3-2-B", "PalletType":1}", public string trigger { get; set; } public string command { get; set; } public string status { get; set; } public List agv_list { get; set; } public string current_task { get; set; } public string current_dest { get; set; } public string current_opt { get; set; } public string current_omi { get; set; } public DateTime create_time { get; set; } public DateTime? active_time { get; set; } public DateTime? finished_time { get; set; } public DateTime? cancel_time { get; set; } public string response_timespan { get; set; } public string execute_timespa { get; set; } public string total_timespan { get; set; } } public class QueryOrderResult1 { public string app_name { get; set; } public string version { get; set; } public int code { get; set; } public string msg { get; set; } public List data { get; set; } } public class InteractInfoResult { public int interaction_info_id { get; set; } public string interaction_info_name { get; set; } public string interaction_info_desp { get; set; } public int interaction_info_type_id { get; set; } public object value_json { get; set; }//{"dock": 1}, public string info_status { get; set; } public string return_value { get; set; } } public class UpdateInteractInfo { public int interaction_info_id { get; set; } public string info_status { get; set; } public string return_value { get; set; } } public class interaction_state { public string state { get; set; } } public class interaction_door { public string door { get; set; } } public class interaction_bit { public string order { get; set; } } }