AgvController.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using Microsoft.AspNetCore.Mvc;
  2. using ServiceCenter.SqlSugars;
  3. using WCS.Entity;
  4. using WCS.WorkEngineering.WebApi.Models.AGV;
  5. using WCS.WorkEngineering.WebApi.Models.AGV.Request;
  6. using WCS.WorkEngineering.WebApi.Models.AGV.Response;
  7. namespace WCS.WorkEngineering.WebApi.Controllers
  8. {
  9. /// <summary>
  10. /// AGV相关接口控制器
  11. /// </summary>
  12. [ApiController]
  13. [Route("api/[controller]/[action]")]
  14. public class AgvController : ControllerBase
  15. {
  16. /// <summary>
  17. /// AGV任务下发测试
  18. /// </summary>
  19. /// <param name="type">任务类型</param>
  20. /// <param name="code">RFID</param>
  21. /// <param name="pos">目标位置</param>
  22. /// <returns></returns>
  23. [HttpPost]
  24. public string AgvDebug(int type, string code, string pos)
  25. {
  26. try
  27. {
  28. switch (type)
  29. {
  30. case 1:
  31. //AgvApi.机台补空();
  32. break;
  33. case 2:
  34. //AgvApi.机台补满();
  35. break;
  36. case 3:
  37. AgvApi.满轮入库(code, pos, Guid.NewGuid().ToString().Replace("-", ""), "1");
  38. break;
  39. default:
  40. break;
  41. }
  42. return "成功";
  43. }
  44. catch (Exception ex)
  45. {
  46. return $"Error-----" +
  47. $"{ex.Message}------" +
  48. $"{ex.StackTrace}";
  49. }
  50. }
  51. /// <summary>
  52. /// AGV执行回调
  53. /// </summary>
  54. /// <param name="reqDto"></param>
  55. /// <returns></returns>
  56. [HttpPost]
  57. public AgvCallbackResponse AgvCallback(AgvCallbackRequest reqDto)
  58. {
  59. var msg = "成功";
  60. var code = AgvResponseCode.Success;
  61. try
  62. {
  63. SqlSugarHelper.Do(db =>
  64. {
  65. //跟据AGVid找到对应的AGV任务
  66. var agvTask = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(tabs => tabs.Take(3)).First(v => v.AgvID == reqDto.taskCode);
  67. if (agvTask == null)
  68. {
  69. msg = "未找到对应的AGV任务";
  70. code = AgvResponseCode.Fail;
  71. }
  72. switch (reqDto.method)
  73. {
  74. case "巷道分配":
  75. agvTask.Status = AGVTaskStatus.RequestOrPermission1;//表示请求巷道
  76. break;
  77. case "安全检测":
  78. agvTask.Status = AGVTaskStatus.RequestOrPermission2;//表示请求放货或取货
  79. break;
  80. case "出库任务完成":
  81. agvTask.Status = AGVTaskStatus.MissionCompleted;
  82. break;
  83. case "入库任务完成":
  84. agvTask.Status = AGVTaskStatus.MissionCompleted;
  85. break;
  86. default:
  87. break;
  88. }
  89. db.Default.Updateable(agvTask).ExecuteCommand();
  90. });
  91. }
  92. catch (Exception ex)
  93. {
  94. code = AgvResponseCode.Error;
  95. msg = ex.Message;
  96. }
  97. var res = new AgvCallbackResponse() { code = code, message = msg };
  98. return res;
  99. }
  100. }
  101. }