using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.AGV.HIKROBOT;
using WIDESEAWCS_DTO.RGV.FOURBOT;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_Tasks
{
public partial class TaskJob
{
#region 处理海康AGV任务
///
/// 处理海康不同类型的任务,进行不同的业务逻辑处理(配套任务:修改平库货位信息/换层任务记录小车信息(小车位置层);出入库任务处理库位信息)
///
///
public void HIKROBOTTask(List tasks)
{
foreach (var item in tasks)
{
var content = SendHIKROBOTTask(item);
}
}
#endregion
#region 处理海康待继续执行任务
public void SendAGVWaitToExecuteTask(List tasks)
{
foreach (var item in tasks)
{
var content = SendHIKROBOTTask(item);
}
}
#endregion
#region 下发海康AGV任务
public WebResponseContent SendHIKROBOTTask(Dt_Task task)
{
WebResponseContent content = new WebResponseContent();
try
{
Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(HIKROBOTTaskSubmit)) ?? throw new Exception("未找到海康AGV任务下发接口配置信息!请检查接口配置");
#region 任务信息转换
HIKROBOTTaskSubmit hIKROBOTTaskSubmit = new HIKROBOTTaskSubmit()
{
taskType = "",
initPriority = task.Grade,
targetRoute = new List
{
new TargetRouteDto
{
type= "SITE",
code=task.CurrentAddress,
operation="COLLECT",//取货
},
new TargetRouteDto
{
type= "SITE",
code=task.NextAddress,
operation="DELIVERY",//送货
}
}
};
#endregion
string response = HttpHelper.Post(apiInfo.ApiAddress, hIKROBOTTaskSubmit.Serialize());
var hIKROBOTReturn = response.DeserializeObject();
if (hIKROBOTReturn.code == "SUCCESS")
{
var data = hIKROBOTReturn.data.ToString().DeserializeObject();
content.OK(data: data);
//task.Remark = data.robotTaskCode;
}
else
{
throw new Exception(hIKROBOTReturn.message);
}
//_taskService.UpdateData(task);
}
catch (Exception ex)
{
content.Error(ex.Message);
}
finally
{
}
return content;
}
#endregion
}
}