From 939d6a4271931190b99b93dac00d2ffd21edb459 Mon Sep 17 00:00:00 2001 From: hjhan Date: Tue, 11 Aug 2026 11:05:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(return-leg):=20MtmCalc.UnrealizedPnl=20rati?= =?UTF-8?q?o=20=E5=8F=82=E6=95=B0=E6=94=B9=E4=B8=BA=20int?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ratio(收取=1/支付=-1)和 shortRatio 一样是 int, 不是 decimal。 1695行 ratio 声明同步从 decimal 改为 int。 C# decimal*int 自动提升为 decimal, 不影响计算结果。 验证: 编译0错误, 全量507测试7失败(基线一致)。 --- YLErpDAL/Modules/SwapModule/ReturnLegs/MtmCalc.cs | 2 +- YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/YLErpDAL/Modules/SwapModule/ReturnLegs/MtmCalc.cs b/YLErpDAL/Modules/SwapModule/ReturnLegs/MtmCalc.cs index 82701e11..4bbb5620 100644 --- a/YLErpDAL/Modules/SwapModule/ReturnLegs/MtmCalc.cs +++ b/YLErpDAL/Modules/SwapModule/ReturnLegs/MtmCalc.cs @@ -17,6 +17,6 @@ public static class MtmCalc /// 盯市未实现盈亏 = (标的价 - 成本全价) × 数量 × 合约乘数 × 多空 × 收付。 /// 多头=1, 空头=-1。 /// 收取=1, 支付=-1。 - public static decimal UnrealizedPnl(decimal price, decimal costGrossPrice, decimal qty, decimal contractSize, int shortRatio, decimal ratio) + public static decimal UnrealizedPnl(decimal price, decimal costGrossPrice, decimal qty, decimal contractSize, int shortRatio, int ratio) => (price - costGrossPrice) * qty * contractSize * shortRatio * ratio; } diff --git a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs index 5a4b46e8..408e23e4 100644 --- a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs @@ -1692,7 +1692,7 @@ namespace YLErp.Modules.SwapModule bool open) { payQty = Math.Abs(payQty); - decimal ratio = eventFlow.PayDirection == (int)SwapDirectionEnum.收取 ? 1 : -1;//收取为正,支付为负 + int ratio = eventFlow.PayDirection == (int)SwapDirectionEnum.收取 ? 1 : -1;//收取为正,支付为负 int shortRatio = newEodPayPosition.PositionType == (int)PositionTypeFlag.Long ? 1 : -1;//多空方向 newEodPayPosition.ValueDate = eventFlow.PayDate.Value; newEodPayPosition.PositionId = eventFlow.PositionId;