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 taskResult(object taskRespon)
{
WebResponseContent content = new WebResponseContent();
try
{
var taskResult = JsonConvert.DeserializeObject(taskRespon.ToString());
if (taskResult == null)
{
throw new Exception("AGV调用接口失败:无请求参数");
}
LogFactory.GetLog("AGV回调参数").Info(true, $"\r\r--------------------------------------");
LogFactory.GetLog("AGV回调参数").Info(true, taskRespon.ToString());
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;
WebResponseContent responseContent = _taskService.CompleteAsync((int)task.TaskNum).Result;
if (!responseContent.Status)
{
throw new Exception(responseContent.Message);
}
//_taskRepository.Update(task);
}
return content.OK();
}
catch (Exception ex)
{
LogFactory.GetLog("AGV回调异常").Info(true, $"\r\r--------------------------------------");
LogFactory.GetLog("AGV回调异常").Info(true, ex.Message);
return content.Error($"AGV回调异常:{ex.Message}");
}
}
}
}