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任务
|
/// <summary>
|
/// 处理海康不同类型的任务,进行不同的业务逻辑处理(配套任务:修改平库货位信息/换层任务记录小车信息(小车位置层);出入库任务处理库位信息)
|
/// </summary>
|
/// <param name="tasks"></param>
|
public void HIKROBOTTask(List<Dt_Task> tasks)
|
{
|
foreach (var item in tasks)
|
{
|
var content = SendHIKROBOTTask(item);
|
}
|
}
|
#endregion
|
|
#region 处理海康待继续执行任务
|
public void SendAGVWaitToExecuteTask(List<Dt_Task> 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<TargetRouteDto>
|
{
|
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<HIKROBOTReturn>();
|
if (hIKROBOTReturn.code == "SUCCESS")
|
{
|
var data = hIKROBOTReturn.data.ToString().DeserializeObject<HIKROBOTReturnData>();
|
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
|
}
|
}
|