Files
zszq-trs/Framework/YLErp.Core/DBModels/SwapFlowEvent.cs
T
hjhan 70550af29a refactor(funding-leg): 清理CalcNotional死参数posiLong/posiShort+修正过时InterestMode注释
- 删除 IFundingLegStrategy.CalcNotional 的 posiLong/posiShort 死参数(多空存续腿界面已禁用,三个实现均不读取),同步三个实现签名、SwapDealService 唯一调用点、FundingLegStrategyTest 7 处调用
- 修正 SwapPosition/SwapFlowEvent/EodSwapPosition 的 InterestMode 字段注释(去掉已删的 3/4,补全 5/6/9)
- 重写 SwapUnwindFloatingLegDiagnosticTdd 过时类注释

零行为变化;编译 0 错误;FundingLegStrategyTest 11/11 通过。
2026-08-13 08:51:21 +08:00

405 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations.Schema;
using YLErp.Helpers;
using Newtonsoft.Json;
using YLErp.Models;
namespace YLErp.DBModels
{
[Table("swap_flow_event")]
public class swap_flow_event: DBModelBaseV2
{
/// <summary>
/// 事件日期
/// </summary>
[DisplayName("事件日期")]
[DataChange]
public DateTime EventDate { get; set; }
/// <summary>
/// 互换交易id
/// </summary>
[DisplayName("互换交易id")]
[DataChange]
public int SwapTradeId { get; set; }
/// <summary>
/// 互换交易编码
/// </summary>
[DisplayName("互换交易编码")]
[DataChange]
public string SwapTradeNo { get; set; }
/// <summary>
/// 持仓编码
/// </summary>
[NotMapped]
public string SwapPositionIdPadding
{
get
{
return PositionId.ToString().PadLeft(8, '0');
}
}
/// <summary>
/// 平仓事件 1:开仓,2:平仓,3:互换,4:自动互换
/// </summary>
[DisplayName("平仓事件")]
[DataChange]
public int EventType { get; set; }
[NotMapped]
public string EventTypeStr
{
get
{
switch (EventType)
{
case 1:return "开仓";
case 2: return "平仓";
case 3: return "互换";
case 4: return "自动互换";
default:return "";
}
}
}
/// <summary>
/// 事件原因
/// </summary>
[DisplayName("事件原因")]
[DataChange]
public string EventReason { get; set; }
/// <summary>
/// 浮动端收支方向 1:收取,2:支付
/// </summary>
[DisplayName("浮动端收支方向")]
[DataChange]
public int PayDirection { get; set; }
[NotMapped]
public string PayDirectionStr
{
get
{
if (PayDirection == 1)
{
return "收取";
}
else if (PayDirection == 2)
{
return "支付";
}
else return "";
}
}
/// <summary>
/// 浮动端多空方向 1:多,2:空
/// </summary>
[DisplayName("浮动端多空方向")]
[DataChange]
public int PositionType { get; set; }
[NotMapped]
public string PositionTypeStr
{
get
{
if (PositionType == 1)
{
return "B";
}
else if (PositionType == 2)
{
return "S";
}
else return "";
}
}
/// <summary>
/// 标的代码
/// </summary>
[DisplayName("标的代码")]
[DataChange]
public string UnderlyingCode { get; set; }
/// <summary>
/// 到期日
/// </summary>
[DisplayName("到期日")]
[DataChange]
public DateTime? MatuirityDate { get; set; }
/// <summary>
/// 成交数量
/// </summary>
[DisplayName("成交数量")]
[DataChange]
public decimal Quantity { get; set; }
/// <summary>
/// 剩余持仓数量
/// </summary>
public decimal? PositionQty { get; set; }
/// <summary>
/// 乘积因子
/// </summary>
[DisplayName("乘积因子")]
[DataChange]
public decimal CountRatio { get; set; }
/// <summary>
/// 合约乘数
/// </summary>
[DisplayName("合约乘数")]
[DataChange]
public decimal ContractSize { get; set; }
/// <summary>
/// 期初标的价格
/// </summary>
[NotMapped]
public decimal PosiNetPrice { get; set; }
/// <summary>
/// 期初标的价格不含费
/// </summary>
[NotMapped]
public decimal PosiGrossPrice { get; set; }
/// <summary>
/// 成交金额
/// </summary>
[DisplayName("成交金额")]
[DataChange]
public decimal TradingAmount { get; set; }
/// <summary>
/// 成交均价
/// </summary>
[DisplayName("成交均价")]
[DataChange]
public decimal TradingAmountAvg { get; set; }
/// <summary>
/// 含费均价
/// </summary>
[DisplayName("含费均价")]
[DataChange]
public decimal TradingAmountFeeAvg { get; set; }
/// <summary>
/// 交易费用佣金
/// </summary>
[DisplayName("交易费用佣金")]
[DataChange]
public decimal TradingFee { get; set; }
/// <summary>
/// 待结算后付交易费用佣金
/// </summary>
[DisplayName("待结算后付交易费用佣金")]
[DataChange]
public decimal TradingFeePending { get; set; }
/// <summary>
/// 待结算分红收益
/// </summary>
[DisplayName("待结算分红收益")]
[DataChange]
public decimal DividendPending { get; set; }
/// <summary>
/// 浮动端平仓盈亏·盯市
/// </summary>
[DisplayName("浮动端平仓盈亏·盯市")]
[DataChange]
public decimal MarkClosePnl { get; set; }
/// <summary>
/// 浮动端平仓盈亏·分红
/// </summary>
[DisplayName("浮动端平仓盈亏·分红")]
[DataChange]
public decimal DividendIn { get; set; }
/// <summary>
/// 浮动端平仓盈亏·费用
/// </summary>
[DisplayName("浮动端平仓盈亏·费用")]
[DataChange]
public decimal CloseFee { get; set; }
/// <summary>
/// 平仓前 交易佣金+后付费用
/// </summary>
[NotMapped]
public decimal BeforeCloseFee { get; set; }
/// <summary>
/// 基础费率(仅前端展示,不存库)
/// </summary>
[NotMapped]
public decimal PosiTradingFeeUnit { get; set; }
/// <summary>
/// 基础费率模式 0=百分比 1=单位数量(仅前端展示,不存库)
/// </summary>
[NotMapped]
public int PosiFeeType { get; set; }
/// <summary>
/// 持仓腿id
/// </summary>
[DisplayName("持仓腿id")]
[DataChange]
public long PositionId { get; set; }
/// <summary>
/// 数据状态 0:废弃,1:等待流水开平仓完成,100:完成
/// </summary>
[DisplayName("数据状态")]
[DataChange]
public int DataState { get; set; }
/// <summary>
/// 资金记录id
/// </summary>
[DisplayName("资金记录id")]
[DataChange]
public int ClientCashId { get; set; }
/// <summary>
/// 利息端收支方向
/// </summary>
[DisplayName("收支方向")]
[DataChange]
public int InterestDirection { get; set; }
[NotMapped]
public string InterestDirectionStr
{
get
{
if (InterestDirection == 1)
{
return "收取";
}
else if (InterestDirection == 2)
{
return "支付";
}
else return "";
}
}
/// <summary>
/// 计息方式 1:固定值,2:合约名义本金规模,5:初始预付金,6:追加预付金,9:标的期初全价
/// </summary>
[DisplayName("计息方式")]
[DataChange]
public int InterestMode { get; set; }
/// <summary>
/// 标的资产类型
/// </summary>
public string UnderlyingInstrumentType { get; set; }
[NotMapped]
public string InterestModeStr
{
get
{
if (InterestMode==0)
{
return string.Empty;
}
return ((InterestModeEnum)InterestMode).ToString();
}
}
/// <summary>
/// 利息端计息基准
/// </summary>
[DisplayName("计息基准")]
[DataChange]
public decimal InterestPrincipal { get; set; }
/// <summary>
/// 利息端计息利率
/// </summary>
[DisplayName("计息利率")]
[DataChange]
public decimal InterestRate { get; set; }
/// <summary>
/// 互换间隔
/// </summary>
[DisplayName("互换间隔")]
[DataChange]
public string InterestSwapInterval { get; set; }
/// <summary>
/// 利息端利息金额
/// </summary>
[DisplayName("利息金额")]
[DataChange]
public decimal InterestAmount { get; set; }
/// <summary>
/// 当日新计利息
/// </summary>
[NotMapped]
public decimal TdInterestAmount { get; set; }
/// <summary>
/// 利息端计息费用
/// </summary>
[DisplayName("计息费用")]
[DataChange]
public decimal InterestFee { get; set; }
/// <summary>
/// 利息端利息端平仓盈亏
/// </summary>
[DisplayName("利息端平仓盈亏")]
[DataChange]
public decimal InterestClosePnL { get; set; }
public long? EventId { get; set; }
public int? ClientId { get; set; }
public decimal? FloatRate { get; set; }
/// <summary>
/// 支付日
/// </summary>
public DateTime? PayDate { get; set; }
/// <summary>
/// 成交净价含费
/// </summary>
public decimal? TradingAmountNetFeeAvg { get; set; }
/// <summary>
/// 成交净价不含费
/// </summary>
public decimal? TradingAmountNetAvg { get; set; }
public DateTime? UnwindDate { get; set; }
/// <summary>
/// 操作记录
/// </summary>
public string OptLog { get; set; }
/// <summary>
/// 互换观察日集合
/// </summary>
[NotMapped]
public List<IntervalModel> SwapIntervalList
{
get
{
if (string.IsNullOrEmpty(InterestSwapInterval))
{
return new List<IntervalModel>();
}
return JsonConvert.DeserializeObject<List<IntervalModel>>(InterestSwapInterval);
}
}
/// <summary>
/// 浮动端平仓盈亏
/// </summary>
[NotMapped]
public decimal FloatPnlSum
{
get
{
return MarkClosePnl + TradingFee + TradingFeePending + DividendIn;
}
}
/// <summary>
/// 成交收益率
/// </summary>
[NotMapped]
public decimal? InitYtm { get; set; }
}
}