using YLErp; using YLErp.BLL; using YLErp.DBModels; using YLErp.Modules.UnderlyingModule; namespace YLErp.Jobs.Imp { /// /// 系统日期自动更新 /// public class SystemDateJob : BaseJob { static readonly IYcLogger logger; static SystemDateJob() { logger = LogFactory.GetLogger(); } 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); } }); } } }