using YLErp.Models; namespace YLErp.Modules.TradeRiskCalcModule { public class TradingRiskReqModelBase { /// /// 波动率类型 /// public string VolType { get; set; } /// /// 分红率类型 交易、0 --国元特有,默认为交易 /// public string DividendRateType { get; set; } /// /// 簿记账户过滤列表 /// public List BookIds { get; set; } /// /// 用户绑定的簿记账户 /// public List UserBookIds { get; set; } /// /// 簿记账户组过滤列表 /// public IEnumerable AssetIdGroupList { get; set; } /// /// 客户过滤列表 /// public List ClientIds { get; set; } /// /// 结构类型过滤列表 /// public IEnumerable AssetTypes { get; set; } /// /// 只显示当日有持仓的交易 /// public bool OnlyPosition { get; set; } /// /// 反选项 /// public string[] InvertSelects { get; set; } /// /// 是否反选项 /// public bool IsInvertSelect(string input) { return InvertSelects != null && InvertSelects.Contains(input); } /// /// 标准化模型数据 /// public virtual void Normalize() { if (string.IsNullOrWhiteSpace(VolType)) { VolType = "对冲"; } if (BookIds != null && BookIds.All(n => n == 0)) { BookIds = null; } if (AssetIdGroupList != null && AssetIdGroupList.All(n => n == 0)) { AssetIdGroupList = null; } if (ClientIds != null && ClientIds.All(n => n == 0)) { ClientIds = null; } if (AssetTypes != null && AssetTypes.Any(n => !string.IsNullOrEmpty(n))) { AssetTypes = AssetTypes.Where(n => !string.IsNullOrEmpty(n)).ToArray(); } else { AssetTypes = null; } } } /// /// 实时风险查询模型 /// public class TradingRiskReqModel : TradingRiskReqModelBase { private string subListCode; /// /// 品种过滤列表(和标的过滤列表取并集) /// public IEnumerable VarietyIds { get; set; } /// /// 品种分组过滤列表(和品种过滤列表取并集) /// public IEnumerable VarietyGroups { get; set; } /// /// 标的过滤列表(和品种过滤列表取并集) /// public IEnumerable UnderlyingIds { get; set; } /// /// 标的代码过滤(优先于VarietyIds和UnderlyingIds) /// 在定价试算时会从前端页面传入 /// public IEnumerable UnderlyingCodes { get; set; } /// /// 品种代码或标的代码 /// public string SubListCode { get => subListCode; set { subListCode = value?.TrimEnd('\t'); IsMainList = string.IsNullOrEmpty(value); } } /// /// 是否主页面列表请求 /// public bool IsMainList { get; private set; } = true; public DateTime? ValueTime { get; set; } /// /// 是否权益类 /// public bool Stock { get; set; } /// /// 是否包含权益类 /// public bool IncludeStock { get; set; } /// /// 支持Delta风险敞口 /// public bool CalcDeltaRisk { get; set; } /// /// 场内期权现价使用行情价(详情页使用,非光子并且SubListCode有值的情况下) /// public bool UseMarketForExOptions { get; set; } /// /// 请求来源(非系统内部调用暂定为'a1') /// public string RequestFrom { get; set; } //----以下用于优化性能---- /// /// 强制获取最新结果集 /// 前端页面需根据查询条件是否变化来判断请求输入值 /// public bool ForceUpdate { get; set; } = true; /// /// 计算开始时间,ForceUpdate为false时适用 /// 由页面传入已加载数据的计算时间,用于判断是否和当前结果集相同 /// public DateTime CalcStartTime { get; set; } /// /// 标准化模型数据 /// public override void Normalize() { base.Normalize(); if (VarietyIds != null && VarietyIds.All(n => n < 1)) { VarietyIds = null; } if (UnderlyingIds != null && UnderlyingIds.All(n => n < 1)) { UnderlyingIds = null; } if (VarietyGroups != null && VarietyGroups.Any(n => !string.IsNullOrEmpty(n))) { VarietyGroups = VarietyGroups.Where(n => !string.IsNullOrEmpty(n)).ToArray(); } else { VarietyGroups = null; } if (UnderlyingCodes != null && UnderlyingCodes.Any(n => !string.IsNullOrEmpty(n))) { UnderlyingCodes = UnderlyingCodes.Where(n => !string.IsNullOrEmpty(n)).ToArray(); } else { UnderlyingCodes = null; } if (!string.IsNullOrWhiteSpace(SubListCode)) { VarietyIds = null; } } } /// /// 价格试算查询模型 /// public class TradingRiskPriceCalcReqModel : TradingRiskReqModelBase { /// /// [必需]标的价格 /// public IEnumerable Prices { get; set; } } public class TradingRiskPriceModel { public string Code { get; set; } public double Price { get; set; } public PriceModel ToPriceModel() { return new PriceModel { InstrumentCode = Code, Price = Price }; } } }