using Microsoft.AspNetCore.Mvc;
using ServiceCenter.Extensions;
using ServiceCenter.Logs;
using ServiceCenter.Redis;
using ServiceCenter.SqlSugars;
using WCS.Entity;
using WCS.WorkEngineering.WebApi.Models.AGV;
using WCS.WorkEngineering.WebApi.Models.AGV.Request;
using WCS.WorkEngineering.WebApi.Models.AGV.Response;
namespace WCS.WorkEngineering.WebApi.Controllers
{
///
/// AGV相关接口控制器
///
[ApiController]
[Route("api/[controller]/[action]")]
public class AgvController : ControllerBase
{
///
/// AGV任务下发测试
///
/// 任务类型
/// RFID
/// 目标位置
///
[HttpPost]
public string AgvDebug(int type, string code, string pos)
{
try
{
switch (type)
{
case 1:
//AgvApi.机台补空(pos, code, "1");
break;
case 2:
//AgvApi.机台补满();
break;
case 3:
//AgvApi.满轮入库(code, pos, Guid.NewGuid().ToString().Replace("-", ""), "1");
break;
}
return "成功";
}
catch (Exception ex)
{
return $"Error-----" +
$"{ex.Message}------" +
$"{ex.StackTrace}";
}
}
/////
///// AGV执行回调
/////
/////
/////
//[HttpPost]
//public AgvCallbackResponse AgvCallback([FromBody] AgvCallbackRequest reqDto)
//{
// var key = $"WCS:Lock:AGV:{nameof(AgvCallback)}";
// var res = new AgvCallbackResponse() { code = AgvResponseCode.Success, message = "失败" };
// //LogHub.InterfacePublish(nameof(AgvCallback), $"传入参数--reqCode:{reqDto.reqCode}--taskCode:{reqDto.taskCode}--method:{reqDto.method}");
// try
// {
// RedisHub.Do(key, redis =>
// {
// SqlSugarHelper.Do(db =>
// {
// //跟据AGVid找到对应的AGV任务
// var agvTask = db.Default.Queryable().UpdLock().SplitTable(tabs => tabs.Take(2))
// .First(v => v.AgvID == reqDto.taskCode && v.Status < AGVTaskStatus.MissionCompleted);
// if (agvTask == null)
// {
// res.code = AgvResponseCode.Fail;
// res.message = "未找到对应的AGV任务";
// return;
// }
// switch (reqDto.method)
// {
// case "applyContinue": //表示请求巷道
// agvTask.AgvStatus = AGVTaskStatus.RequestOrPermission1;
// break;
// case "outbin": //小车退出取货位
// agvTask.AgvStatus = AGVTaskStatus.LeaveGet;
// break;
// case "applySecurity": //表示请求放货或取货
// agvTask.AgvStatus = AGVTaskStatus.RequestOrPermission2;
// break;
// case "applySecurityPut": //表示请求放货或取货
// agvTask.AgvStatus = AGVTaskStatus.PutRequestOrPermission;
// break;
// case "FJend": //任务完成
// agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
// break;
// case "cancel": //取消任务
// if (agvTask.TaskType == AGVTaskType.EnterDepot)
// {
// agvTask.AgvStatus = AGVTaskStatus.Cancel;
// }
// break;
// }
// int i = db.Default.Updateable(agvTask).SplitTable(x => x.Take(2)).ExecuteCommand();
// if (i > 0)
// {
// res.code = AgvResponseCode.Success;
// res.message = "成功";
// }
// else
// {
// return;
// }
// });
// });
// }
// catch (Exception ex)
// {
// res.code = AgvResponseCode.Error;
// res.message = ex.Message;
// }
// //LogHub.InterfacePublish(nameof(AgvCallback), $"返回结果--reqCode:{reqDto.reqCode}--code:{res.code}--message:{res.message}--taskCode:{reqDto.taskCode}");
// return res;
//}
}
}