feature: 查看交易的 提前终止页面 增加 期末标的结算收益率%

This commit is contained in:
马冰冰
2026-08-27 10:56:45 +08:00
parent 5ec545a64d
commit 914689a1f0
3 changed files with 7 additions and 5 deletions
@@ -404,13 +404,12 @@ namespace YLErp.DBModels
/// 期末标的结算收益率(EQD-6953 平仓)。普通债券类收益互换平仓时由债券计算器按
/// 期末标的交割全价反算(估值日=平仓日 ValueDate),允许手工覆盖。
/// 命名遵循《互换价格字段命名规范决策文档》时点维度:平仓/了结用 Exit(勿用 End/Close/Final)。
/// [NotMapped]:不落 swap_flow_event 表列;仅随 UnwindData 序列化进 swap_event.EventData JSON
/// 由平仓待复核回显(GetSwapEvent)与结算确认书 Excel(TradeSettleBillGenerator) 消费。
/// 直接保存到 swap_flow_event.ExitYtm,提前终止详情页和结算确认书均读取该次平仓浮动腿记录。
/// ⚠️ 存储口径为【展示态百分数】(如 6.3721 表示 6.3721%),与同页期末交割全价(展示态)一致,
/// 区别于录入页 trade.InitYtm 的存储态小数(0.063721)——两者载体不同、互不干扰,勿"顺手统一"。
/// 精度:确认书导出固定 4 位小数不去零(ToString("0.0000"));本字段保留 4 位(四舍五入)。
/// </summary>
[NotMapped]
[Column("ExitYtm", TypeName = "decimal(18,4)")]
public decimal? ExitYtm { get; set; }
}
@@ -92,8 +92,8 @@ namespace YLErp.Plugins.GuoLian.DocumentGenerator
UnderlyingInstrumentType = underlying?.UnderlyingInstrumentType,
CloseNotionalValue = closeNotionalValue,
CurrentDayFloatingDividend = currentDayFloatingDividend,
ExitYtm = unwindData?.FlowEvents?
.FirstOrDefault(x => x.PositionType > 0)?.ExitYtm,
// 与提前终止详情页保持同一来源:读取 swap_flow_event 中的平仓浮动腿记录。
ExitYtm = flowEventGroup.ExitYtm,
IncludePeriodPaymentInNetting = (tradeExtend?.ExtendObj?.DividendPayDate ?? 1) == 0
});
table.Add(row);
@@ -850,6 +850,7 @@
{
<td>期初标的交割全价%</td>
<td>期末标的交割全价%</td>
<td>期末标的结算收益率%</td>
}
else
{
@@ -873,6 +874,8 @@
{
<td><span class="js-swap-price" data-value="@SwapPriceData(closeFloat.PosiGrossPrice * multiplier)" data-instrument-type="@closeFloat.UnderlyingInstrumentType" data-field="grossPrice"></span></td>
<td><span class="js-swap-price" data-value="@SwapPriceData(closeFloat.TradingAmountAvg * multiplier)" data-instrument-type="@closeFloat.UnderlyingInstrumentType" data-field="grossPrice"></span></td>
@* 直接读取 swap_flow_event 中该次平仓浮动腿保存的收益率,不使用持仓值或重新计算值。 *@
<td><span class="js-swap-price" data-value="@SwapPriceData(closeFloat.ExitYtm)" data-instrument-type="@closeFloat.UnderlyingInstrumentType" data-field="yield"></span></td>
}
else
{