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;
|
/// <summary>
|
/// 下发任务
|
/// </summary>
|
/// <param name="taskDetial">请求参数</param>
|
/// <param name="url">请求地址</param>
|
/// <param name="agvMsg">返回信息</param>
|
/// <param name="priority">优先级</param>
|
/// <returns></returns>
|
public static bool CreateTaskForAgv(TaskDetial taskDetial, string url, out string agvMsg, string priority = null)
|
{
|
bool result = false;
|
var tasktype = "F12";
|
|
//跨楼层任务tasktype值赋值……
|
//tasktype = "";
|
|
List<targetRoute> pahtList = new List<targetRoute>();
|
//起始位置
|
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<string, string> key = new Dictionary<string, string>();
|
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<OutCommanAgvDto>(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;
|
}
|
/// <summary>
|
/// 下发AGV绑定载具和站点
|
/// </summary>
|
/// <param name="palletNo">桶号L</param>
|
/// <param name="url">请求地址</param>
|
/// <param name="agvMsg">返回信息</param>
|
/// <param name="locateNo">返回信息</param>
|
/// <returns></returns>
|
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<string, string> key = new Dictionary<string, string>();
|
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<OutCommanAgvDto>(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;
|
}
|
|
/// <summary>
|
/// 下发AGV解绑载具和站点
|
/// </summary>
|
/// <param name="palletType">容器类型1:400L,2:800/1000L</param>
|
/// <param name="url">请求地址</param>
|
/// <param name="agvMsg">返回信息</param>
|
/// <param name="locateNo">返回信息</param>
|
/// <returns></returns>
|
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<string, string> key = new Dictionary<string, string>();
|
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<OutCommanAgvDto>(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;
|
}
|
}
|
}
|