Files
zszq-trs/Framework/YLErp.Core/DBModels/trade_swap.cs
T
2024-05-09 14:06:26 +08:00

368 lines
11 KiB
C#

using System.ComponentModel.DataAnnotations.Schema;
using YLErp.DBModels.Attributes;
using YLErp.Helpers;
namespace YLErp.DBModels
{
[DataChange]
[Table("trade_swap")]
public class trade_swap : TradeExtendBase, IClonable<trade_swap>
{
public static string LogClass = "收益互换交易";
/// <summary>
/// 年交易天数
/// </summary>
[DisplayName("年化天数"), TradeAuditChangeMsg]
[DataChange]
public int? AnnualDays { get; set; }
/// <summary>
/// [收取]是否浮动收益
/// </summary>
[DisplayName("浮动收益"), TradeAuditChangeMsg]
[DataChange]
public bool IsGetFloatingProfit { get; set; }
/// <summary>
/// [收取]标的品种
/// </summary>
[DisplayName("标的品种"), TradeAuditChangeMsg]
[DataChange]
public int? GetVarietyId { get; set; }
/// <summary>
/// [收取]标的代码
/// </summary>
[DisplayName("标的代码"), TradeAuditChangeMsg]
[DataChange]
public int? GetUnderlyingId { get; set; }
/// <summary>
/// [收取]标的代码
/// </summary>
[DisplayName("标的代码"), TradeAuditChangeMsg]
[DataChange]
public string GetUnderlyingCode { get; set; }
///// <summary>
///// [收取]标的名称
///// </summary>
//[DisplayName("标的名称"), TradeAuditChangeMsg]
//public string GetUnderlyingAssetName { get; set; }
/// <summary>
/// [收取]多头空头
/// </summary>
[DisplayName("多头空头"), TradeAuditChangeMsg]
[DataChange]
public string GetLongShort { get; set; }
/// <summary>
/// [收取]期初标的价格
/// </summary>
[DisplayName("期初标的价格"), TradeAuditChangeMsg]
[DataChange]
public double? GetSpotPrice { get; set; }
/// <summary>
/// [收取]开仓价格
/// </summary>
[NotMapped]
public double? GetOpenPrice { get; set; }
/// <summary>
/// [收取]交易费用
/// </summary>
[DisplayName("交易费用"), TradeAuditChangeMsg]
[DataChange]
public double? GetTradePrice { get; set; }
/// <summary>
/// [收取]互换间隔及互换利率
/// </summary>
[DisplayName("互换间隔"), TradeAuditChangeMsg]
[DataChange]
public string GetSwapTimeAndRate { get; set; }
[DisplayName("互换利率(年化)")]
[NotMapped]
public double GetSwapRate { get; set; }
/// <summary>
/// [收取]固定收益
/// </summary>
[DisplayName("固定收益"), TradeAuditChangeMsg]
[DataChange]
public double? GetFixedProfit { get; set; }
/// <summary>
/// [收取]按手数收费
/// </summary>
[DisplayName("按手数收费"), TradeAuditChangeMsg]
[DataChange]
public double? GetSingleFee { get; set; }
/// <summary>
/// [收取]按名义本金收费
/// </summary>
[DisplayName("按名义本金收费"), TradeAuditChangeMsg]
[DataChange]
public double? GetUnAnnualRate { get; set; }
private double? _getMarginRate;
/// <summary>
/// [收取]初始预付金率
/// </summary>
[DisplayName("初始预付金率"), TradeAuditChangeMsg]
[DataChange]
public double? GetMarginRate
{
get { return NumberHelper.Normalize(_getMarginRate); }
set
{
_getMarginRate = NumberHelper.Normalize(value);
}
}
/// <summary>
/// [收取]期末价格
/// </summary>
[DisplayName("期末价格"), TradeAuditChangeMsg]
[DataChange]
public double? GetFinalPrice { get; set; }
/// <summary>
/// [收取]份额
/// </summary>
[DisplayName("份额"), TradeAuditChangeMsg]
[DataChange]
public double? GetNotional { get; set; }
/// <summary>
/// [收取]数量
/// </summary>
[DisplayName("数量"), TradeAuditChangeMsg]
[DataChange]
public double? GetTradeAmount { get; set; }
/// <summary>
/// [收取]手数
/// </summary>
[NotMapped]
public double? GetLot { get; set; }
/// <summary>
/// [支付]是否浮动收益
/// </summary>
[DisplayName("浮动收益"), TradeAuditChangeMsg]
[DataChange]
public bool IsPayFloatingProfit { get; set; }
/// <summary>
/// [支付]标的品种
/// </summary>
[DisplayName("标的品种"), TradeAuditChangeMsg]
[DataChange]
public int? PayVarietyId { get; set; }
/// <summary>
/// [支付]标的代码
/// </summary>
[DisplayName("标的代码"), TradeAuditChangeMsg]
[DataChange]
public int? PayUnderlyingId { get; set; }
/// <summary>
/// [支付]标的代码
/// </summary>
[DisplayName("标的代码"), TradeAuditChangeMsg]
[DataChange]
public string PayUnderlyingCode { get; set; }
///// <summary>
///// [收取]标的名称
///// </summary>
//[DisplayName("标的名称"), TradeAuditChangeMsg]
//public string PayUnderlyingAssetName { get; set; }
/// <summary>
/// [支付]多头空头
/// </summary>
[DisplayName("多头空头"), TradeAuditChangeMsg]
[DataChange]
public string PayLongShort { get; set; }
/// <summary>
/// [支付]期初标的价格
/// </summary>
[DisplayName("期初标的价格"), TradeAuditChangeMsg]
[DataChange]
public double? PaySpotPrice { get; set; }
/// <summary>
/// [支付]开仓价格
/// </summary>
[NotMapped]
public double? PayOpenPrice { get; set; }
/// <summary>
/// [支付]交易费用
/// </summary>
[DisplayName("交易费用"), TradeAuditChangeMsg]
[DataChange]
public double? PayTradePrice { get; set; }
/// <summary>
/// [支付]互换间隔及互换利率
/// </summary>
[DisplayName("互换间隔"), TradeAuditChangeMsg]
[DataChange]
public string PaySwapTimeAndRate { get; set; }
[DisplayName("互换利率(年化)")]
[NotMapped]
public double PaySwapRate { get; set; }
/// <summary>
/// [支付]固定收益
/// </summary>
[DisplayName("固定收益"), TradeAuditChangeMsg]
[DataChange]
public double? PayFixedProfit { get; set; }
/// <summary>
/// [支付]按手数收费
/// </summary>
[DisplayName("按手数收费"), TradeAuditChangeMsg]
[DataChange]
public double? PaySingleFee { get; set; }
/// <summary>
/// 计息方式 11:算头算尾;10:算头不算尾;01:不算头算尾;00:不算头不算尾,
/// 默认:算头算尾
/// </summary>
[DisplayName("计息方式"), TradeAuditChangeMsg]
[DataChange]
public string RateCalcMode { get => rateCalcMode.TrimToNull() ?? "11"; set => rateCalcMode = value; }
/// <summary>
/// 计息是否包括首日
/// </summary>
[NotMapped]
public bool IncludeFirstDay => string.IsNullOrEmpty(RateCalcMode) || RateCalcMode == "10" || RateCalcMode == "11";
/// <summary>
/// [支付]按名义本金收费
/// </summary>
[DisplayName("按名义本金收费"), TradeAuditChangeMsg]
[DataChange]
public double? PayUnAnnualRate { get; set; }
private double? _payMarginRate;
private string rateCalcMode;
/// <summary>
/// [支付]初始预付金率
/// </summary>
[DisplayName("初始预付金率"), TradeAuditChangeMsg]
[DataChange]
public double? PayMarginRate
{
get { return NumberHelper.Normalize(_payMarginRate); }
set
{
_payMarginRate = NumberHelper.Normalize(value);
}
}
/// <summary>
/// [支付]期末价格
/// </summary>
[DisplayName("期末价格"), TradeAuditChangeMsg]
[DataChange]
public double? PayFinalPrice { get; set; }
/// <summary>
/// [支付]份额
/// </summary>
[DisplayName("份额"), TradeAuditChangeMsg]
[DataChange]
public double? PayNotional { get; set; }
/// <summary>
/// [支付]数量
/// </summary>
[DisplayName("数量"), TradeAuditChangeMsg]
[DataChange]
public double? PayTradeAmount { get; set; }
/// <summary>
/// [支付]手数
/// </summary>
[NotMapped]
public double? PayLot { get; set; }
/// <summary>
/// 交易流水Id --国君 trade_swap_flow_more
/// </summary>
public int? FlowId { get; set; }
/// <summary>
/// 变动收益是否年化
/// </summary>
public bool AnnualVarIncome { get; set; }
///// <summary>
///// 计息是否排除首日
///// </summary>
//public bool ExcludeFirstDay { get; set; }
/// <summary>
/// 互换类型
/// </summary>
[DisplayName("互换类型"), TradeAuditChangeMsg]
public string SwapType { get; set; }
/// <summary>
/// 了结支付方式
/// 0代表了结时支付,1代表结算日支付
/// </summary>
public int SettlementPayType { get; set; }
/// <summary>
/// 是否开仓时收取开仓费
/// </summary>
[DisplayName("是否开仓时收取开仓费")]
public bool IsTradePriceWhenOpen { get; set; }
/// <summary>
/// 收费基本单位 false 按份额收费 true按手数收费
/// </summary>
[DisplayName("收费基本单位")]
public bool IsShare { get; set; }
/// <summary>
/// 原始交易Id
/// </summary>
public int? OriginalTradeId { get; set; }
[NotMapped]
public double GetCountRatio { get; set; }
[NotMapped]
public double PayCountRatio { get; set; }
[NotMapped]
public double GetContractSize { get; set; }
[NotMapped]
public double PayContractSize { get; set; }
public trade_swap Clone()
{
return (trade_swap)MemberwiseClone();
}
}
}