using DevExpress.CodeParser; using Ips.Library.Basic; using Ips.Library.DxpLib; using Ips.Library.Entity; using Ips.Library.Signals; using Ips.Library.WebApi; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ips.Service.CapServer { /// /// 采集接口 /// public class AdController : BaseController { private readonly ILogger _logger; public AdController(ILogger logger) { _logger = logger; } [Autowired] private AdcService AdcService { get; set; }//Service单例注入 /******************* * !!!不要在Controller中放业务逻辑的全局变量 * !!!不要在Controller写太复杂的业务逻辑 * Controller主要就是调用Service层的东西。Service层执行业务逻辑和调用Repository层操作数据库 * ********************/ /// /// 开始采集 /// /// 采集参数 /// [HttpPost] public async Task> StartAD(AdcOptions dto) { try { #region 判断存储路径是否有效 //未指定存储目录,使用配置中配置的目录 if (string.IsNullOrWhiteSpace(AppConst.DataDir)) { return Error("采集服务配置文件未指定数据存储目录"); } dto.StorePath = AppConst.DataDir; Directory.CreateDirectory(dto.StorePath); #endregion var res = await AdcService.StartTestAsync(dto); return Success(res); } catch (Exception ex) { IpsLogger.Error("开始采集异常", ex); return Error("开始采集异常"); } } /// /// 停止采集 /// /// [HttpPost] public async Task StopAD() { var res = await Task.Run(() => { // 先停止采集 IpsLogger.Info($"接收{RemoteIp}下发的停止采集任务"); try { AdcService.Stop(); IpsLogger.Info("采集已停止"); return Success(); } catch (Exception ex) { IpsLogger.Error($"停止采集异常", ex); return Error("停止采集异常"); } }); return res; } } }