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;
}
}
}