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;
}
}
}