using System; using System.Collections.Generic; using System.Linq; using System.Reflection.Metadata; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common; using WIDESEAWCS_Common.TaskEnum; 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 = _taskService.SendHIKROBOTTask(item); } } #endregion #region 处理海康待继续执行任务 public void SendAGVWaitToExecuteTask(List tasks) { foreach (var item in tasks) { var content = _taskService.SendHIKROBOTTask(item); } } #endregion #region 下发海康1-6楼的AGV任务 public void SendAGVTask(List tasks) { foreach (var item in tasks) { if (item.TaskState == (int)TaskTypeEnum.Q3CK) { // 调用接口获取小车信息 var result = _agvcartInfoService.CheckTheCar(); // 判断是否有 AA 或 FF bool hasAAOrFF = false; if (item.TaskState == (int)TaskTypeEnum.Q3CK) { if (result != null && result.Status) { var dataList = result.Data as List; if (dataList != null && dataList.Any()) { // 检查返回的 mapCode 列表中是否有 AA hasAAOrFF = dataList.Any(d => d.mapCode == "AA"); if (hasAAOrFF) { var content = _taskService.SendHIKROBOTTask(item); item.TaskState = (int)TaskStatusEnum.Execut; } else//这里我就要呼叫空车来 { //添加空车运输任务 AddAGVCartInfo(item); item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition; } } } } else { if (result != null && result.Status) { if (hasAAOrFF) { var content = _taskService.SendHIKROBOTTask(item); item.TaskState = (int)TaskStatusEnum.Execut; } else//这里我就要呼叫空车来 { //添加空车运输任务 AddAGVCartInfo(item); item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition; } } } } } _taskService.UpdateData(tasks); } #endregion #region 处理海康agv搬运任务 public WebResponseContent AddAGVCartInfo(Dt_Task task) { WebResponseContent content = new WebResponseContent(); try { task.TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)); task.WMSTaskNum = null; task.TaskType = (int)TaskTypeEnum.Move;//换层任务 task.TaskState = (int)TaskStatusEnum.CallingHKtransportation; var result = _taskService.SendHIKROBOTTask(task); _taskService.AddData(task); } catch (Exception ex) { content.Error($"创建失败:{ex.Message}"); } return content; } #endregion #region 处理agv待空车搬运任务 public void SendHKWaitTask() { try { List reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.Move); if (reslut.Count<0) { foreach (var item in reslut) { var content = _taskService.SendHIKROBOTTask(item); } reslut.ForEach(x => { x.TaskState =(int)TaskStatusEnum.Execut; }); } _taskService.UpdateData(reslut); } catch (Exception ex) { WriteError(nameof(TaskJob), ex.Message, ex); } } #endregion } }