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