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