HistoryTaskProcessingController.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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.TaskServer.Service;
  10. using XdCxRhDW.TaskServer.Task;
  11. using XdCxRhDW.WebApi;
  12. namespace XdCxRhDW.TaskServer.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.ID}");
  41. //dto.ID = 1;
  42. //dto.StartTime = new DateTime(2024, 03, 24, 12, 00, 00);
  43. //dto.DateDirFormat = "yyyyMMddHH";
  44. //dto.CapDir = @"D:\\data";
  45. //dto.SigType = EnumSigTypeDto.SX;
  46. //dto.PosType = EnumPosTypeDto.X2D1;
  47. //dto.TaskCheckType = EnumTaskCheckTypeDto.DAMA;
  48. if (!Directory.Exists(dto.CapDir))
  49. {
  50. LogHelper.Error($"采集路径:{dto.CapDir}不存在");
  51. return Error($"采集路径:{dto.CapDir}不存在");
  52. }
  53. if (dto.PosType == EnumPosTypeDto.X2D1)
  54. {
  55. X2D1Task x2D1 = new X2D1Task();
  56. x2D1.Start(dto);
  57. _service.allTask.Add(x2D1);
  58. }
  59. else
  60. {
  61. return Error($"历史任务不支持定位模式{dto.PosType.GetEnumDisplayName()}");
  62. }
  63. return Success();
  64. }
  65. catch (Exception ex)
  66. {
  67. Serilog.Log.Error(ex, "历史任务处理出错!");
  68. return Error("历史任务处理出错");
  69. }
  70. }
  71. /// <summary>
  72. /// 历史任务停止
  73. /// </summary>
  74. /// <param name="dto"></param>
  75. /// <returns></returns>
  76. [HttpPost]
  77. public AjaxResult Stop(HistoryTaskStopDto dto)
  78. {
  79. try
  80. {
  81. LogHelper.Info($"接收停止历史任务编号:{dto.ID}");
  82. var historys = _service.allTask.Where(t => t.TaskDto.ID == dto.ID);
  83. foreach (var item in historys)
  84. {
  85. item.Stop();
  86. }
  87. _service.allTask.Remove(t => t.TaskDto.ID == dto.ID);
  88. return Success();
  89. }
  90. catch (Exception ex)
  91. {
  92. Serilog.Log.Error(ex, "停止历史任务处理出错!");
  93. return Error("停止历史任务处理出错");
  94. }
  95. }
  96. }
  97. }