using Microsoft.AspNetCore.Mvc; 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.机台补空(); break; case 2: //AgvApi.机台补满(); break; case 3: AgvApi.满轮入库(code, pos, Guid.NewGuid().ToString().Replace("-", ""), "1"); break; default: break; } return "成功"; } catch (Exception ex) { return $"Error-----" + $"{ex.Message}------" + $"{ex.StackTrace}"; } } /// /// AGV执行回调 /// /// /// [HttpPost] public AgvCallbackResponse AgvCallback(AgvCallbackRequest reqDto) { var msg = "成功"; var code = AgvResponseCode.Success; try { SqlSugarHelper.Do(db => { //跟据AGVid找到对应的AGV任务 var agvTask = db.Default.Queryable().SplitTable(tabs => tabs.Take(3)).First(v => v.AgvID == reqDto.taskCode); if (agvTask == null) { msg = "未找到对应的AGV任务"; code = AgvResponseCode.Fail; } switch (reqDto.method) { case "巷道分配": agvTask.Status = AGVTaskStatus.RequestOrPermission1;//表示请求巷道 break; case "安全检测": agvTask.Status = AGVTaskStatus.RequestOrPermission2;//表示请求放货或取货 break; case "出库任务完成": agvTask.Status = AGVTaskStatus.MissionCompleted; break; case "入库任务完成": agvTask.Status = AGVTaskStatus.MissionCompleted; break; default: break; } db.Default.Updateable(agvTask).ExecuteCommand(); }); } catch (Exception ex) { code = AgvResponseCode.Error; msg = ex.Message; } var res = new AgvCallbackResponse() { code = code, message = msg }; return res; } } }