using AngleSharp.Io;
using HslCommunication;
using LogLibrary.Log;
using Mapster;
using Newtonsoft.Json;
using SkiaSharp;
using System.Diagnostics.CodeAnalysis;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.LogHelper;
using WIDESEAWCS_DTO.AGV;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
namespace WIDESEAWCS_TaskInfoService
{
public partial class TaskService
{
#region 调用AGV接口
private string GetAGVIPAddress(string baseIp, string name)
{
var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
var wcsBasez = configz.Where(x => x.ConfigKey == baseIp).FirstOrDefault()?.ConfigValue;
var address = configz.Where(x => x.ConfigKey == name).FirstOrDefault()?.ConfigValue;
if (wcsBasez == null || address == null)
{
throw new InvalidOperationException("WMS IP 未配置");
}
return wcsBasez + address;
}
///
/// 发送任务
///
///
///
///
public async Task SendAgvTask(string modelProcessCode, int taskNum)
{
WebResponseContent content = new WebResponseContent();
try
{
var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
List orderDetails = new List()
{
new taskOrderDetail()
{
taskPath = $"{task.CurrentAddress},{task.NextAddress}",
shelfNumber = "",
}
};
SendTask sendTask = new SendTask()
{
modelProcessCode = modelProcessCode,
priority = 1,
fromSystem = "WMS",
orderId = task.AGVTaskNum,
taskOrderDetail = orderDetails
};
var AgvSendTaskAddrss = GetAGVIPAddress(SysConfigKeyConst.AGVIP_BASE, SysConfigKeyConst.SendAGVTask);
// 发送请求并等待响应
var result = await HttpHelper.PostAsync(AgvSendTaskAddrss, sendTask.ToJsonString());
LogFactory.WriteInfo("下发AGV任务回调", $"{JsonConvert.SerializeObject(result)}");
var respone = JsonConvert.DeserializeObject(result.ToString());
if (respone.code != 1000)
{
content.Error(respone.desc);
}
content.OK(respone.desc);
}
catch (Exception ex)
{
content.Error(ex.Message);
}
return content;
}
public async Task ContinueAgvTask(string AGVTaskNum)
{
WebResponseContent content = new WebResponseContent();
try
{
SendTask sendTask = new SendTask()
{
orderId = AGVTaskNum.ToString(),
};
var AgvSendTaskAddrss = GetAGVIPAddress(SysConfigKeyConst.AGVIP_BASE, SysConfigKeyConst.ContinueAGVTask);
// 发送请求并等待响应
var result = await HttpHelper.PostAsync(AgvSendTaskAddrss, sendTask.ToJsonString());
var respone = JsonConvert.DeserializeObject(result.ToString());
if (respone.code != 1000)
{
content.Error(respone.desc);
}
content.OK("任务下发至AGV系统");
}
catch (Exception ex)
{
content.Error(ex.Message);
}
return content;
}
#endregion
}
}