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