Files
zszq-trs/Framework/YLErp.Jobs/Imp/RealTimeCalcPositionJob.cs
T
2024-05-09 14:06:26 +08:00

75 lines
2.2 KiB
C#

using YLErp.BLL.Eod;
using YLErp;
using YLErp.BLL;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Configuration;
namespace YLErp.Jobs.Imp
{
/// <summary>
/// 实时持仓计算
/// </summary>
public class RealTimeCalcPositionJob : BaseJob
{
private readonly ILogger<RealTimeCalcPositionJob> _logger;
readonly IConfiguration _configuration;
public RealTimeCalcPositionJob(IConfiguration configuration, ILogger<RealTimeCalcPositionJob> logger)
{
_logger = logger;
_configuration = configuration;
}
public override async Task<bool> StartAsync()
{
_logger.LogInformation("实时持仓服务开始:{time}", DateTimeOffset.Now);
//设置波动率计算时的异常处理方法
VolCaculator.SetExHandler(msg =>
{
_logger.LogInformation($"VolCaculator:{msg}");
});
return await base.StartAsync();
}
public override async Task<bool> StopAsync()
{
_logger.LogInformation("实时持仓服务停止: {time}", DateTimeOffset.Now);
return await base.StopAsync();
}
public override Task JobImp()
{
try
{
var stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start(); // 开始监视代码
RealtimePnlCalc.RealtimePosition(new OptUserInfo(0, "实时持仓服务", OptUserFrom.Service));
stopwatch.Stop(); // 停止监视
var msecond = stopwatch.ElapsedMilliseconds; // 获取总时间
_logger.LogInformation($"实时持仓服务结束:共{msecond}毫秒");
}
catch (Exception ex)
{
_logger.LogError(ex, "实时持仓服务异常:" + ex.Message);
}
return Task.CompletedTask;
}
#region JobStatus Manager
static JobStatus jobStatus = JobStatus.Init;
public override JobStatus GetJobStatus()
{
return jobStatus;
}
public override void SetJobStatus(JobStatus status)
{
jobStatus = status;
}
#endregion
}
}