X2D1TaskProcessingController.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4. using System.Web.Http;
  5. using X2D1TaskServer.Service;
  6. using XdCxRhDW.Dto;
  7. using XdCxRhDW.WebApi;
  8. namespace X2D1TaskServer.Controllers
  9. {
  10. /// <summary>
  11. ///两星一地任务处理接口
  12. /// </summary>
  13. public class X2D1TaskProcessingController : BaseController
  14. {
  15. /*******************
  16. * !!!不要在Controller中放业务逻辑的全局变量
  17. * !!!不要在Controller写太复杂的业务逻辑
  18. * Controller主要就是调用Service层的东西。Service层执行业务逻辑和调用Repository层操作数据库
  19. * ********************/
  20. private readonly TaskHistoryService _tskHservice;
  21. private readonly TaskRealService _tskRservice;
  22. public X2D1TaskProcessingController(TaskHistoryService tskHservice, TaskRealService tskRservice)
  23. {
  24. _tskHservice = tskHservice;
  25. _tskRservice = tskRservice;
  26. }
  27. /// <summary>
  28. /// 开始执行两星一地无参任务
  29. /// </summary>
  30. /// <param name="dto">离线任务信息</param>
  31. /// <returns></returns>
  32. [HttpPost]
  33. public AjaxResult Run(X2D1TaskHandleDto dto)
  34. {
  35. try
  36. {
  37. if (dto.TaskType == EnumTaskTypeDto.History)
  38. {
  39. if (_tskHservice.Stop(dto.ID))
  40. {
  41. Thread.Sleep(2000);
  42. }
  43. _tskHservice.StartAsync(dto);
  44. }
  45. else
  46. {
  47. if (_tskRservice.Stop(dto.ID))
  48. {
  49. Thread.Sleep(2000);
  50. }
  51. _tskRservice.StartAsync(dto);
  52. }
  53. return Success();
  54. }
  55. catch (Exception ex)
  56. {
  57. Serilog.Log.Error(ex, $"【任务{dto.ID}】开始执行异常!");
  58. return Error($"【任务{dto.ID}】开始执行异常!");
  59. }
  60. }
  61. /// <summary>
  62. /// 停止执行两星一地无参任务
  63. /// </summary>
  64. /// <param name="dto"></param>
  65. /// <returns></returns>
  66. [HttpPost]
  67. public async Task<AjaxResult> Stop(TaskStopHandleDto dto)
  68. {
  69. try
  70. {
  71. await LogHelper.Warning($"用户停止了任务,ID={dto.ID}");
  72. if (dto.TaskType == EnumTaskTypeDto.History)
  73. _tskHservice.Stop(dto.ID);
  74. else
  75. _tskRservice.Stop(dto.ID);
  76. return Success();
  77. }
  78. catch (Exception ex)
  79. {
  80. Serilog.Log.Error(ex, $"【任务{dto.ID}】停止执行异常!");
  81. return Error($"【任务{dto.ID}】停止执行异常!");
  82. }
  83. }
  84. }
  85. }