using System.Text; namespace YLErp.Modules.UnderlyingModule { /// /// 标的数据帮助类 /// public static class UnderlyingHelper { /// /// 获取组合标的品种对象 /// 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; } } } /// /// 获取篮子标的品种对象 /// public static Variety GetBasketVariety() { return DataCacheProvider.GetVarietyDataSource().AsQueryable() .FirstOrDefault(v => v.VarietyCode == "篮子标的") ?? new Variety { VarietyCode = "篮子标的", VarietyName = "篮子标的", QuoteUnit = "元(人民币)/股", TradeUnit = "100股/手" }; } /// /// 获取标的品种代码 例:BU,BU-CU /// /// /// 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; } } }