AdController.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using DevExpress.CodeParser;
  2. using Ips.Library.Basic;
  3. using Ips.Library.DxpLib;
  4. using Ips.Library.Entity;
  5. using Ips.Library.Signals;
  6. using Ips.Library.WebApi;
  7. using Microsoft.AspNetCore.Mvc;
  8. using Microsoft.Extensions.Logging;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.IO;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. namespace Ips.Service.CapServer
  16. {
  17. /// <summary>
  18. /// 采集接口
  19. /// </summary>
  20. public class AdController : BaseController
  21. {
  22. private readonly ILogger<AdController> _logger;
  23. public AdController(ILogger<AdController> logger)
  24. {
  25. _logger = logger;
  26. }
  27. [Autowired]
  28. private AdcService AdcService { get; set; }//Service单例注入
  29. /*******************
  30. * !!!不要在Controller中放业务逻辑的全局变量
  31. * !!!不要在Controller写太复杂的业务逻辑
  32. * Controller主要就是调用Service层的东西。Service层执行业务逻辑和调用Repository层操作数据库
  33. * ********************/
  34. /// <summary>
  35. /// 开始采集
  36. /// </summary>
  37. /// <param name="dto">采集参数</param>
  38. /// <returns></returns>
  39. [HttpPost]
  40. public async Task<AjaxResult<AdcResult>> StartAD(AdcOptions dto)
  41. {
  42. try
  43. {
  44. #region 判断存储路径是否有效
  45. //未指定存储目录,使用配置中配置的目录
  46. if (string.IsNullOrWhiteSpace(AppConst.DataDir))
  47. {
  48. return Error<AdcResult>("采集服务配置文件未指定数据存储目录");
  49. }
  50. dto.StorePath = AppConst.DataDir;
  51. Directory.CreateDirectory(dto.StorePath);
  52. #endregion
  53. var res = await AdcService.StartTestAsync(dto);
  54. return Success(res);
  55. }
  56. catch (Exception ex)
  57. {
  58. IpsLogger.Error("开始采集异常", ex);
  59. return Error<AdcResult>("开始采集异常");
  60. }
  61. }
  62. /// <summary>
  63. /// 停止采集
  64. /// </summary>
  65. /// <returns></returns>
  66. [HttpPost]
  67. public async Task<AjaxResult> StopAD()
  68. {
  69. var res = await Task.Run(() =>
  70. {
  71. // 先停止采集
  72. IpsLogger.Info($"接收{RemoteIp}下发的停止采集任务");
  73. try
  74. {
  75. AdcService.Stop();
  76. IpsLogger.Info("采集已停止");
  77. return Success();
  78. }
  79. catch (Exception ex)
  80. {
  81. IpsLogger.Error($"停止采集异常", ex);
  82. return Error("停止采集异常");
  83. }
  84. });
  85. return res;
  86. }
  87. }
  88. }