从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
namespace YLErp.Modules.DataProviderModule
|
||||
{
|
||||
/// <summary>
|
||||
/// 标的信息提供(这个类一般用于结算和涉及到历史数据时的业务)
|
||||
/// </summary>
|
||||
public class UnderlyingProvider : YLBaseService
|
||||
{
|
||||
private Dictionary<string, underlying_manager> _underlyingDic;
|
||||
|
||||
public UnderlyingProvider(OptUserInfo userInfo) : base(userInfo)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public UnderlyingProvider(YLBaseService baseService) : base(baseService)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化基础缓存,可以不调用,
|
||||
/// 如果涉及到批量处理时调用后提升一定的数据访问性能
|
||||
/// </summary>
|
||||
public UnderlyingProvider Initialize(DateTime? minMaturityDate)
|
||||
{
|
||||
var date = (minMaturityDate ?? DateTime.Today).AddDays(-30);
|
||||
_underlyingDic = DbContext.underlying_manager.AsNoTracking()
|
||||
.Where(n => n.MaturityDate >= date && n.UnderlyingInstrumentType == ConsGlobal.InstrumentType.CommodityFutures)
|
||||
.ToDictionary(n => n.UnderlyingCode, StringComparer.OrdinalIgnoreCase);
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 数据字典(初始化缓存后累加方式继续积累缓存)
|
||||
/// </summary>
|
||||
private Dictionary<string, underlying_manager> UnderlyingDic
|
||||
{
|
||||
get
|
||||
{
|
||||
return _underlyingDic ?? (_underlyingDic = new Dictionary<string, underlying_manager>(StringComparer.OrdinalIgnoreCase));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据代码获取标的信息
|
||||
/// </summary>
|
||||
public underlying_manager GetUnderlying(string underlyingCode)
|
||||
{
|
||||
if (underlyingCode is null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(underlyingCode));
|
||||
}
|
||||
|
||||
if (!UnderlyingDic.TryGetValue(underlyingCode, out var underlying))
|
||||
{
|
||||
UnderlyingDic[underlyingCode] = underlying = DbContext.underlying_manager.AsNoTracking().FirstOrDefault(n => n.UnderlyingCode == underlyingCode);
|
||||
}
|
||||
|
||||
return underlying;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回数据查询接口(现在返回的是EF查询接口)
|
||||
/// </summary>
|
||||
public IQueryable<underlying_manager> GetUnderlyingQuery()
|
||||
{
|
||||
return DbContext.underlying_manager.AsNoTracking();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user