using System.ComponentModel.DataAnnotations.Schema;
using YLErp.Commons;
namespace YLErp.Modules.SuperviseReportModule.CFMMC.Model
{
public abstract class SuperviseReportBaseModel
{
///
/// 报告主体名称
///
public string MainName { get; set; }
///
/// 报告主体的统一社会信用代码
///
public string MainCode { get; set; }
///
/// 交易对手方名称
///
public string ClientName { get; set; }
///
/// 交易对手方的统一社会信用代码
///
public string ClientLicenseCode { get; set; }
///
/// 交易编号
///
public string TradeNumber { get; set; }
///
/// 交易确认时间
///
public DateTime? TradeDate { get; set; }
///
/// 交易确认时间
///
public string TradeDateString
{
get
{
return TradeDate == null ? "" : TradeDate.Value.ToString("yyyy-MM-dd");
}
}
///
/// 标的资产类型
///
public string VarietyType { get; set; }
///
/// 买入卖出
///
public string BuySell { get; set; }
///
/// 工具类型
///
public string ToolType { get; set; }
///
/// 期权行权时间类型
///
public string ExerciseMode { get; set; }
///
/// 期权权利类型
///
public string OptionType { get; set; }
///
/// 产品结构
///
public string TradeType { get; set; }
///
/// 产品结构En
///
public string TradeTypeEn { get; set; }
///
/// 结构化交易中的组合类型
/// 确定产品结构时使用
///
public string StructureType { get; set; }
///
/// 二元期权PayoffType
/// 确定产品结构时使用
///
public string PayoffType { get; set; }
///
/// 资产类型En
///
public string AssetTypeEn { get; set; }
///
/// 标的资产品种
///
public string VarietyCode { get; set; }
///
/// 标的资产对应合约
///
public string UnderlyingCode { get; set; }
///
/// 数量单位
///
public string QuoteUnit { get; set; }
///
/// 数量单位En
///
public string QuoteUnitEn { get; set; }
///
/// 总名义数量
///
public string TradeAmount { get; set; }
///
/// 已平仓总名义数量/交易名义数量
/// 该笔成交为部分解约或者解约,终止合约,所涉及的名义数量;成交对应合约手数*标的合约的合约乘数。
///
public string EndTradeAmount { get; set; }
///
/// 价格符号
///
public int PriceSymbol { get; set; }
private double _strike;
///
/// 执行价格
///
public double Strike
{
get
{
return _strike;
}
set
{
if (PS.Config.Company == Configuration.CompanyEnum.国投)
{
_strike = OtcFormatHelper.FormatValue(value, 2);
}
else
{
_strike = OtcFormatHelper.FormatValue(value, 6);
}
}
}
///
/// 互换成交报送可能有两个Strike
///
public List Strike2 { get; set; }
public string StrikeString
{
get
{
var strikeString = "";
if (Strike2 != null && Strike2.Count > 0)
{
foreach (var x in Strike2)
{
if (PS.Config.Company == Configuration.CompanyEnum.国投)
{
strikeString += x.ToString("0.##") + ",";
}
else
{
strikeString += x.ToString("0.######") + ",";
}
}
strikeString = strikeString.Substring(0, strikeString.Length - 1);
}
else
{
if (PS.Config.Company == Configuration.CompanyEnum.国投)
{
strikeString += Strike.ToString("0.##");
}
else
{
strikeString += Strike.ToString("0.######");
}
}
return strikeString;
}
}
private double? _foreignCurrencyRate;
///
/// 外汇对人民币汇率
///
public double? ForeignCurrencyRate
{
get { return _foreignCurrencyRate; }
set { _foreignCurrencyRate = value.HasValue ? (double?)OtcFormatHelper.FormatValue(value ?? 0, 4) : null; }
}
private double _participateRate;
///
/// 参与率
///
public double ParticipateRate
{
get { return _participateRate; }
set { _participateRate = OtcFormatHelper.FormatValue(value, 6); }
}
///
/// 参与率
///
public string ParticipateRateString
{
get
{
return ParticipateRate.ToString("0.######");
}
}
///
/// 计价货币
///
public string QuoteCurrency { get; set; }
///
/// 总名义金额
///
public string StockEqvNotional { get; set; }
///
/// 已平仓总名义金额/交易名义金额
/// 该笔成交为部分解约或者解约,终止合约,所涉及的名义金额;交易名义数量*成交时标的期初价格。
///
public string EndStockEqvNotional { get; set; }
private double _pv;
///
/// 合约价值
///
public double Pv
{
get { return _pv; }
set { _pv = Math.Abs(OtcFormatHelper.FormatValue(value, 4)); }
}
///
/// 合约价值
///
public string PvString
{
get
{
return Pv.ToString("0.####");
}
}
///
/// 交易Id
///
public int TradeId { get; set; }
///
/// 交易确认书编号
///
public string ContractCode { get; set; }
///
/// 是否为年化期权
///
public string IsAnnualTrade { get; set; }
///
/// 估值方法
///
public string ValuationMethod { get; set; }
///
/// 浮动盈亏
///
public decimal? UnRealizedPnL { get; set; }
///
/// 到期日
///
public DateTime? ExerciseDate { get; set; }
///
/// 到期日
///
public string ExerciseDateString
{
get
{
return ExerciseDate == null ? "" : ExerciseDate.Value.ToString("yyyy-MM-dd");
}
}
public string DeltaCash { get; set; }
#region 辅助属性
[NotMapped]
public string OriginalTradeNumber { get; set; }
public trade _trade;
public trade originalTrade { get; set; }
[NotMapped]
public trade trade
{
get
{
try
{
if (_trade == null)
{
if (!string.IsNullOrWhiteSpace(TradeJson))
{
_trade = trade.Deserialize(TradeJson);
}
else { _trade = originalTrade; }
}
}
catch (Exception ex)
{
LogFactory.GetLogger("SuperviseReportBaseModel").Error(ex);
}
return _trade;
}
}
[NotMapped]
public string TradeJson { get; set; }
/////
///// 报价单位比率
///// 通常情况下只有鸡蛋会是2
/////
//[NotMapped]
//public int CountRatio { get; set; }
[NotMapped]
public string OriginalVarietyCode { get; set; }
///
/// 平仓比例
///
[NotMapped]
public double? UnwindPercentRate { get; set; }
///
/// 客户Id
///
[NotMapped]
public int ClientId { get; set; }
///
/// 父交易Id
///
[NotMapped]
public int? ParentTradeId { get; set; }
///
/// 交易状态
///
[NotMapped]
public string TradeStatus { get; set; }
public int IsGroup { get; set; }
public double? _deltaCash { get; set; }
#endregion
}
}