From 87671fcece34829f442535e7a06a9c83e3efc9b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=94=A6=E9=BA=9F=20=E7=8E=8B?= Date: Fri, 26 Jun 2026 17:17:55 +0800 Subject: [PATCH] =?UTF-8?q?BugFix=20=E5=B9=B3=E4=BB=93=E4=BA=92=E6=8D=A2?= =?UTF-8?q?=E5=B9=B3=E4=BB=93=EF=BC=8C=E5=AF=BC=E8=87=B4=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E7=9A=84=E5=88=86=E7=BA=A2=E4=B8=8D=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YLErpWeb/Controllers/BondPaymentController.cs | 2 +- .../Scripts/app/swaptrade/incomeSwapTrade.js | 4 ++-- .../Scripts/app/swaptrade/unwindSwapTrade.js | 13 +++++++++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/YLErpWeb/Controllers/BondPaymentController.cs b/YLErpWeb/Controllers/BondPaymentController.cs index 11d0817d..fa4f2ef2 100644 --- a/YLErpWeb/Controllers/BondPaymentController.cs +++ b/YLErpWeb/Controllers/BondPaymentController.cs @@ -102,7 +102,7 @@ namespace YLErp.Web.Controllers decimal consumedDividend = 0; if (tradeId.HasValue) { - List swapEventTypes = new List() { (int)SwapEventTypeEnum.互换, (int)SwapEventTypeEnum.自动互换 }; + List swapEventTypes = new List() { (int)SwapEventTypeEnum.互换, (int)SwapEventTypeEnum.自动互换,(int)SwapEventTypeEnum.平仓 }; consumedDividend = yldb.swap_flow_event .Where(x => x.SwapTradeId == tradeId.Value && swapEventTypes.Contains(x.EventType) diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/incomeSwapTrade.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/incomeSwapTrade.js index 5119c22d..4aed132e 100644 --- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/incomeSwapTrade.js +++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/incomeSwapTrade.js @@ -194,8 +194,8 @@ const vue = new Vue({ let floatRatio = this.floatPosition.PayDirection == 1 ? 1 : -1; var postData = { startDate: thisObj.TradeStartDate, endDate: thisObj.deal.UnwindDate, underlyingCode: thisObj.floatPosition.UnderlyingCode, tradeId: thisObj.deal.SwapTradeId, unwindDate: thisObj.deal.UnwindDate } main.post("/BondPayment/GetBondPayMentInterest", postData, { async: false }).done(function (resp) { - let totalDividend = parseFloat(thisObj.deal.PositionQty) * resp.obj.totalInterest * ratio * floatRatio; - let consumedDividend = Math.abs(parseFloat(resp.obj.consumedDividend ?? 0)) * ratio * floatRatio; + let totalDividend = parseFloat(thisObj.deal.NotionalQty) * resp.obj.totalInterest * ratio * floatRatio;//总的 + let consumedDividend = Math.abs(parseFloat(resp.obj.consumedDividend ?? 0)) * ratio * floatRatio;//已实现的 // 互换是全量消费,consumedDividend>0 表示分红已被当天互换消费,归0 thisObj.floatPosition.DividendIn = Math.abs(consumedDividend) > 0 ? parseFloat((totalDividend - consumedDividend).toFixed(2)) : parseFloat(totalDividend.toFixed(2)); thisObj.floatPosition.DividendPending = 0; diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/unwindSwapTrade.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/unwindSwapTrade.js index ea9998ea..60fa9028 100644 --- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/unwindSwapTrade.js +++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/unwindSwapTrade.js @@ -280,13 +280,18 @@ const vue = new Vue({ let floatRatio = this.floatPosition.PayDirection == 1 ? 1 : -1; var postData = { startDate: thisObj.TradeStartDate, endDate: thisObj.deal.UnwindDate, underlyingCode: thisObj.floatPosition.UnderlyingCode, tradeId: thisObj.deal.SwapTradeId, unwindDate: thisObj.deal.UnwindDate } main.post("/BondPayment/GetBondPayMentInterest", postData, { async: false }).done(function (resp) { - let consumedDividend = Math.abs(parseFloat(resp.obj.consumedDividend ?? 0));//保持和totalInterest同向 - let consumedDividendInterest = consumedDividend / parseFloat(thisObj.deal.NotionalQty) + let consumedDividend = Math.abs(parseFloat(resp.obj.consumedDividend ?? 0)) * ratio * floatRatio;//已实现的 + let totalDividend = parseFloat(thisObj.deal.NotionalQty) * resp.obj.totalInterest * ratio * floatRatio; + let remainDividend = totalDividend - consumedDividend; + let dividendIn = 0; + if (remainDividend != 0) { + dividendIn = parseFloat(thisObj.deal.CloseQty) / parseFloat(thisObj.floatPosition.Quantity) * remainDividend + } // 这里计算已经分红的利息,从totalInterest里扣除 - let totalDividend = parseFloat(thisObj.deal.CloseQty) * (resp.obj.totalInterest - consumedDividendInterest) * ratio * floatRatio; + // 互换是全量消费,consumedDividend>0 表示分红已被当天互换消费,归0 // 现在可能做了纯分红的互换结算,所以不能直接归0 - thisObj.floatPosition.DividendIn = parseFloat(totalDividend.toFixed(2)); + thisObj.floatPosition.DividendIn = parseFloat(dividendIn.toFixed(2)); var posiQty = parseFloat(thisObj.floatPosition.Quantity) - parseFloat(thisObj.deal.CloseQty); thisObj.floatPosition.DividendPending = parseFloat((posiQty * resp.obj.totalInterest * ratio * floatRatio).toFixed(2)); thisObj.calcFloatClosePnl();