HistoryTaskProcessingController.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.IO;
  5. using System.Web.Http;
  6. using XdCxRhDW.Dto;
  7. using XdCxRhDW.TaskServer.Service;
  8. using XdCxRhDW.TaskServer.Task;
  9. using XdCxRhDW.WebApi;
  10. namespace XdCxRhDW.TaskServer.Controllers
  11. {
  12. /// <summary>
  13. ///离线任务处理接口
  14. /// </summary>
  15. public class HistoryTaskProcessingController : BaseController
  16. {
  17. /*******************
  18. * !!!不要在Controller中放业务逻辑的全局变量
  19. * !!!不要在Controller写太复杂的业务逻辑
  20. * Controller主要就是调用Service层的东西。Service层执行业务逻辑和调用Repository层操作数据库
  21. * ********************/
  22. public List<HistoryTaskI> allTask = new List<HistoryTaskI>();
  23. private readonly TestService _testService;
  24. public HistoryTaskProcessingController(TestService testService)
  25. {
  26. _testService = testService;
  27. }
  28. /// <summary>
  29. /// 执行离线任务
  30. /// </summary>
  31. /// <param name="dto">离线任务信息</param>
  32. /// <returns></returns>
  33. [HttpPost]
  34. public AjaxResult Run(HistoryTaskProcessingDto dto)
  35. {
  36. try
  37. {
  38. //方式1:从构造函数注入
  39. var service1 = _testService;
  40. //方式2:从容器中主动获取
  41. var service2 = AutofacUtil.GetService<TestService>();
  42. //选一种简单的方式就行
  43. LogHelper.Info($"接收到历史任务编号:{dto.ID}");
  44. dto.StartTime = new DateTime(2024, 03, 24, 12, 00, 00);
  45. dto.DateDirFormat = "yyyyMMddHH";
  46. dto.CapDir = @"D:\\data";
  47. dto.SigType = EnumSigTypeDto.SX;
  48. dto.PosType = EnumPosTypeDto.X2D1;
  49. dto.TaskCheckType = EnumTaskCheckTypeDto.DAMA;
  50. if (!Directory.Exists(dto.CapDir))
  51. {
  52. LogHelper.Error($"采集路径:{dto.CapDir}不存在");
  53. return Error($"采集路径:{dto.CapDir}不存在");
  54. }
  55. if (dto.PosType == EnumPosTypeDto.X2D1)
  56. {
  57. X2D1Task x2D1 = new X2D1Task();
  58. x2D1.Start(dto);
  59. allTask.Add(x2D1);
  60. }
  61. else
  62. {
  63. return Error($"历史任务不支持定位模式{dto.PosType.GetEnumDisplayName()}");
  64. }
  65. return Success();
  66. }
  67. catch (Exception ex)
  68. {
  69. Serilog.Log.Error(ex, "历史任务处理出错!");
  70. return Error("历史任务处理出错");
  71. }
  72. }
  73. /// <summary>
  74. ///
  75. /// </summary>
  76. /// <param name="TaskId"></param>
  77. /// <returns></returns>
  78. [HttpPost]
  79. public AjaxResult Stop(int TaskId)
  80. {
  81. try
  82. {
  83. //方式1:从构造函数注入
  84. var service1 = _testService;
  85. //方式2:从容器中主动获取
  86. var service2 = AutofacUtil.GetService<TestService>();
  87. //选一种简单的方式就行
  88. LogHelper.Info($"接收停止历史任务编号:{TaskId}");
  89. var history = allTask.Find(t => t.TaskDto.ID == TaskId);
  90. if (history != null)
  91. {
  92. history.Stop();
  93. allTask.Remove(history);
  94. }
  95. return Success();
  96. }
  97. catch (Exception ex)
  98. {
  99. Serilog.Log.Error(ex, "停止历史任务处理出错!");
  100. return Error("停止历史任务处理出错");
  101. }
  102. }
  103. }
  104. }