141 lines
4.2 KiB
C#
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);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|