using Newtonsoft.Json;
using OfficeOpenXml.ConditionalFormatting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Comm.AGVTask;
using WIDESEA_Common.AGVTask;
using WIDESEA_Core;
using WIDESEA_Core.Enums;
using WIDESEA_Model.Models;
using WIDESEA_StorageTaskRepository;
namespace WIDESEA_StoragIntegrationServices
{
public partial class ToAGVService
{
///
/// AGV回调接口
///
///
///
public WebResponseContent agvCallback(object taskRespon)
{
WebResponseContent content = new WebResponseContent();
try
{
var taskResult = JsonConvert.DeserializeObject(taskRespon.ToString());
if (taskResult == null)
{
throw new Exception("AGV调用接口失败:无请求参数");
}
var task = _taskRepository.QueryFirst(x => x.AGVtaskId == taskResult.task_id);
if (task == null) throw new Exception($"未知任务{taskResult.task_id}");
if (taskResult.result.ToLower() == "task_execute") //AGV开始执行
{
task.TaskState = (int)TaskStatusEnum.Executing;
_taskRepository.Update(task);
}
if (taskResult.result.ToLower() == "task_complete") //AGV任务结束
{
task.TaskState = (int)TaskStatusEnum.Completed;
//_taskRepository.
//_stockInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
_taskRepository.Update(task);
}
return content.OK();
}
catch (Exception ex)
{
return content.Error($"AGV回调异常:{ex.Message}");
}
}
}
}