HistoryTaskProcessingController.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using DevExpress.Utils.Extensions;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Configuration;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Web.Http;
  8. using XdCxRhDW.Dto;
  9. using XdCxRhDW.WebApi;
  10. using XdCxRhDW.X2D1TaskServer.Service;
  11. using XdCxRhDW.X2D1TaskServer.Tasks;
  12. namespace XdCxRhDW.X2D1TaskServer.Controllers
  13. {
  14. /// <summary>
  15. ///离线任务处理接口
  16. /// </summary>
  17. public class HistoryTaskProcessingController : BaseController
  18. {
  19. /*******************
  20. * !!!不要在Controller中放业务逻辑的全局变量
  21. * !!!不要在Controller写太复杂的业务逻辑
  22. * Controller主要就是调用Service层的东西。Service层执行业务逻辑和调用Repository层操作数据库
  23. * ********************/
  24. private readonly HistoryTaskService _service;
  25. public HistoryTaskProcessingController(HistoryTaskService service)
  26. {
  27. _service = service;
  28. }
  29. /// <summary>
  30. /// 执行离线任务
  31. /// </summary>
  32. /// <param name="dto">离线任务信息</param>
  33. /// <returns></returns>
  34. [HttpPost]
  35. public AjaxResult Run(HistoryTaskProcessingDto dto)
  36. {
  37. try
  38. {
  39. _service.allTask.RemoveAll(a => a.IsRuning == false);
  40. LogHelper.Info($"接收到开始执行任务[{dto.TaskName}],ID={dto.ID}");
  41. if (!Directory.Exists(dto.CapDir))
  42. {
  43. LogHelper.Error($"文件路径[{dto.CapDir}]不存在");
  44. return Error($"文件路径[{dto.CapDir}]不存在");
  45. }
  46. if (dto.PosType == EnumPosTypeDto.X2D1)
  47. {
  48. X2D1Task x2D1 = new X2D1Task();
  49. x2D1.Start(dto);
  50. _service.allTask.Add(x2D1);
  51. }
  52. else
  53. {
  54. return Error($"【任务{dto.ID}】执行异常,暂不支持{dto.PosType.GetEnumDisplayName()}");
  55. }
  56. return Success();
  57. }
  58. catch (Exception ex)
  59. {
  60. Serilog.Log.Error(ex, $"【任务{dto.ID}】开始执行异常!");
  61. return Error($"【任务{dto.ID}】开始执行异常!");
  62. }
  63. }
  64. /// <summary>
  65. /// 历史任务停止
  66. /// </summary>
  67. /// <param name="dto"></param>
  68. /// <returns></returns>
  69. [HttpPost]
  70. public AjaxResult Stop(HistoryTaskStopDto dto)
  71. {
  72. try
  73. {
  74. LogHelper.Info($"接收到停止执行任务,ID={dto.ID}");
  75. var historys = _service.allTask.Where(t => t.TaskDto.ID == dto.ID);
  76. foreach (var item in historys)
  77. {
  78. item.Stop();
  79. }
  80. _service.allTask.Remove(t => t.TaskDto.ID == dto.ID);
  81. return Success();
  82. }
  83. catch (Exception ex)
  84. {
  85. Serilog.Log.Error(ex, $"【任务{dto.ID}】停止执行异常!");
  86. return Error($"【任务{dto.ID}】停止执行异常!");
  87. }
  88. }
  89. }
  90. }