Files
zszq-trs/YLErpDAL/Modules/UnderlyingModule/UnderlyingHelper.cs
T
2024-05-09 14:06:26 +08:00

129 lines
4.6 KiB
C#

using System.Text;
namespace YLErp.Modules.UnderlyingModule
{
/// <summary>
/// 标的数据帮助类
/// </summary>
public static class UnderlyingHelper
{
/// <summary>
/// 获取组合标的品种对象
/// </summary>
public static Variety GetSyntheticVariety()
{
var variety = DataCacheProvider.GetVarietyDataSource().AsQueryable()
.FirstOrDefault(v => v.VarietyCode == "组合标的");
if (variety != null)
{
return variety;
}
lock (DataCacheProvider.GetVarietyDataSource())
{
using (var db = DbContextFactory.GetYLDbContext())
{
variety = db.variety.FirstOrDefault(n => n.VarietyCode == "组合标的");
if (variety != null)
{
return variety;
}
variety = new Variety()
{
VarietyCode = "组合标的",
VarietyName = "组合标的",
TradingMarketId = 0,
TradeUnit = "1手/份",
QuoteUnit = "元(人民币)/份",
DeliveryType = "",
HasNightMarket = false,
ShortName = "组合标的",
CommissionType = "固定",
CloseTodayCommissionType = "固定",
//UnderlyingInstrumentType = "CommodityFutures",
VolatilityRate = "",
VolatilityAdjust = 0,
AssetType = "",
OptId = 0,
OptName = "系统",
OptDate = DateTime.Now,
};
db.variety.Add(variety);
db.SaveChanges();
return variety;
}
}
}
/// <summary>
/// 获取篮子标的品种对象
/// </summary>
public static Variety GetBasketVariety()
{
return DataCacheProvider.GetVarietyDataSource().AsQueryable()
.FirstOrDefault(v => v.VarietyCode == "篮子标的") ??
new Variety
{
VarietyCode = "篮子标的",
VarietyName = "篮子标的",
QuoteUnit = "元(人民币)/股",
TradeUnit = "100股/手"
};
}
/// <summary>
/// 获取标的品种代码 例:BU,BU-CU
/// </summary>
/// <param name="underlyingCode"></param>
/// <returns></returns>
public static string GetUnderlyingVarietyCode(string underlyingCode)
{
var ret = "";
var un = DataCacheProvider.GetUnderlyingDataSource().GetData(underlyingCode);
if (un != null)
{
if (un.UnderlyingType == "组合标的")
{
var synthetic = DataCacheProvider.GetUnderlyingDataSource().GetSyntheticUnderlying(underlyingCode);
if (synthetic != null)
{
var sb = new StringBuilder();
var va1 = DataCacheProvider.GetVariety(synthetic.UnderlyingCode1);
var va2 = DataCacheProvider.GetVariety(synthetic.UnderlyingCode2);
var va3 = DataCacheProvider.GetVariety(synthetic.UnderlyingCode3);
var va4 = DataCacheProvider.GetVariety(synthetic.UnderlyingCode4);
if (va1 != null)
{
sb.Append(va1.VarietyCode).Append('-');
}
if (va2 != null)
{
sb.Append(va2.VarietyCode).Append('-');
}
if (va3 != null)
{
sb.Append(va3.VarietyCode).Append('-');
}
if (va4 != null)
{
sb.Append(va4.VarietyCode).Append('-');
}
ret = sb.ToString().Substring(0, sb.Length - 1);
}
}
else
{
var va = DataCacheProvider.GetVariety(un.UnderlyingCode);
ret = va.VarietyCode;
}
}
return ret;
}
}
}