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

141 lines
4.2 KiB
C#

using YLErp;
using YLErp.BLL;
using YLErp.DBModels;
using YLErp.Modules.UnderlyingModule;
namespace YLErp.Jobs.Imp
{
/// <summary>
/// 系统日期自动更新
/// </summary>
public class SystemDateJob : BaseJob
{
static readonly IYcLogger logger;
static SystemDateJob()
{
logger = LogFactory.GetLogger<SystemDateJob>();
}
GuoYuanCalcVolJob _guoYuanCalcVolJob;
public SystemDateJob(GuoYuanCalcVolJob guoYuanCalcVolJob)
{
_guoYuanCalcVolJob = guoYuanCalcVolJob;
}
public override Task JobImp()
{
logger.Info("执行SysDateJob");
try
{
if (DateTime.Now.Hour < 20)
{
logger.Info("当前时间小于20点,拒绝执行");
return Task.CompletedTask;
}
using (var ylcon = new YLContext())
{
var curDate = ylcon.valuedate.FirstOrDefault(v => v.State == valuedate.当前使用);
if (curDate == null)
{
logger.Info("数据库中表valuedate没有State为'当前使用'的数据");
}
else
{
if (curDate.ValueDate > DateTime.Today)
{
logger.Info("[ValueDate]数据库中ValueDate已经大于今天:" + curDate.ValueDate);
}
else
{
logger.Info($"[ValueDate Current]:{curDate.ValueDate}");
UpdateValueDate();//UpdateValueDate(context);
}
}
}
}
catch (Exception ex)
{
logger.Error(ex);
}
logger.Info("任务执行完成");
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
private void UpdateValueDate()
{
var nextValueDate = valuedateBLL.GetNonHoliday(DateTime.Today.AddDays(1));
//需要拷贝下一交易日的波动率
Task.Run(() =>
{
logger.Info("[UpdateValueDate]:" + nextValueDate);
var db = YLErp.Modules.DbContextFactory.GetYLDbContext();
var curDate = db.valuedate.FirstOrDefault(v => v.State == valuedate.当前使用);
if (curDate == null)
{
var vd = new valuedate() { ValueDate = nextValueDate, State = valuedate.当前使用, CreateTime = DateTime.Now };
db.valuedate.Add(vd);
}
else
{
curDate.ValueDate = nextValueDate;
}
db.SaveChanges();
valuedateBLL.ResetValueDate();
if (PS.Config.Company == YLErp.Configuration.CompanyEnum.国元固收)
{
_guoYuanCalcVolJob.Execute(curDate.ValueDate);
}
}).ContinueWith(t =>
{
if (t.Exception != null)
{
logger.Error("[UpdateValueDate]", t.Exception);
}
new UnderlyingHisDataService(OptUserInfo.SystemUser).BackHisDataToMainTable();
}).ContinueWith(t =>
{
if (t.Exception != null)
{
logger.Error("[UnderlyingHisDataService.BackHisDataToMainTable]", t.Exception);
}
new VarietyHisDataService(OptUserInfo.SystemUser).BackHisDataToMainTable();
}).ContinueWith(t =>
{
if (t.Exception != null)
{
logger.Error("[VarietyHisDataService.BackHisDataToMainTable]", t.Exception);
}
});
}
}
}