X2D1TaskProcessingController.cs 3.1 KB

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