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