Files
zszq-trs/YLErpDAL/Modules/SuperviseReportModule/CFMMC/Model/SuperviseReportBaseModel.cs
T
2024-05-09 14:06:26 +08:00

387 lines
10 KiB
C#

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