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];
}
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= int.Parse(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; }
}
}