From ae8156020ecedf62418008cd2661219fc48c1c77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=90=8D=E9=94=90?= <1565842059@qq.com> Date: Tue, 25 Aug 2026 09:57:23 +0800 Subject: [PATCH 01/12] =?UTF-8?q?refactor(swap):=20=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E5=80=BA=E5=88=B8=E4=BB=B7=E6=A0=BC=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将债券价格处理逻辑从依赖 StructureType 改为基于 IsBond 判断 - 移除 SetPosiPrice 方法中的 useBondPriceScale 参数 - 更新收入互换交易中的 multiplier 计算方式 - 调整平仓交易中 isBondTRS 的判断条件 - 同步修改相关注释说明 --- YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs | 11 ++++++----- .../wwwroot/Scripts/app/swaptrade/incomeSwapTrade.js | 4 +++- .../wwwroot/Scripts/app/swaptrade/unwindSwapTrade.js | 8 +++++--- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs index 9650d66d..eceb433e 100644 --- a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs @@ -3605,9 +3605,10 @@ namespace YLErp.Modules.SwapModule { item.FloatRateAbs = item.position.PosiNotionalValue == 0 ? 0 : item.InterestAmount / item.position.PosiNotionalValue; } - // 交易录入的债券类收益互换价格以小数保存,展示时转为百分比价格; - // 普通收益互换录入的是数量/原始数值,不做乘 100 转换。 - SetPosiPrice(item.position, item.StructureType == "普通债券类收益互换"); + // 是否 ×100 由标的资产类型决定(债券价格以小数保存,展示时转为百分比价格), + // 与存储层 GetStorageDeliveryPriceRound / GetSwapValuationPrice 的 IsBond 口径一致, + // 不依赖簿记结构类型 StructureType。 + SetPosiPrice(item.position); } return retListResult; } @@ -3652,10 +3653,10 @@ namespace YLErp.Modules.SwapModule position.SwapPositionValue = -position.SwapPositionValue; position.PosiDividendSum = -position.PosiDividendSum; } - private void SetPosiPrice(eod_swap_position position, bool? useBondPriceScale = null) + private void SetPosiPrice(eod_swap_position position) { var um = DataCacheProvider.GetUnderlyingDataSource().GetData(position.UnderlyingCode); - if (useBondPriceScale ?? (um != null && um.IsBond())) + if (um != null && um.IsBond()) { position.PosiNetPrice *= 100; position.UnderlyingPrice *= 100; diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/incomeSwapTrade.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/incomeSwapTrade.js index d160d50e..f5e767a6 100644 --- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/incomeSwapTrade.js +++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/incomeSwapTrade.js @@ -46,7 +46,9 @@ const vue = new Vue({ } }, created() { - this.multiplier = this.deal.StructureType == '普通债券类收益互换' ? 100 : 1; + // 是否 ×100 由浮动腿标的资产类型决定(债券价格以小数保存,展示时转为百分比), + // 与存储层 SetPosiPrice/GetStorageDeliveryPriceRound 的 IsBond 口径一致,不依赖簿记结构类型。 + this.multiplier = this.IsBond(swapInstrumentType) ? 100 : 1; this.initDeal(); this.setValueDate(); }, diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/unwindSwapTrade.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/unwindSwapTrade.js index 346174c4..72ff7698 100644 --- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/unwindSwapTrade.js +++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/unwindSwapTrade.js @@ -64,7 +64,7 @@ const vue = new Vue({ marginList: [], initPosiNetPrice: 0, multiplier: 1, - // EQD-6953 簿记模板=普通债券类收益互换 时启用 期末交割全价↔结算收益率(ExitYtm) 互算 + // EQD-6953 浮动腿标的为债券时启用 期末交割全价↔结算收益率(ExitYtm) 互算 isBondTRS: false, // 平仓比例展示/输入均为"占期初(original)"语义(A):默认与每次重开都基于原始名义本金。 // oriClosePercent = 剩余名义本金/期初名义本金 = 最多可平比例(不能平超过剩余持仓)。 @@ -77,13 +77,15 @@ const vue = new Vue({ minStartDate() { return this.deal.StartDate; }, - // EQD-6953:簿记模板为普通债券类收益互换 且 浮动腿标的为债券 时,才展示 源/AUTO/REV 标识并允许互算 + // EQD-6953:浮动腿标的为债券时,才展示 源/AUTO/REV 标识并允许互算 isBondUnwindLeg() { return this.isBondTRS && !!this.floatPosition && this.IsBond(this.floatPosition.UnderlyingInstrumentType); } }, created() { - this.isBondTRS = this.deal.StructureType == '普通债券类收益互换'; + // 是否债券收益互换由浮动腿标的资产类型决定(×100 展示口径与存储层 SetPosiPrice 的 IsBond 一致), + // 不依赖簿记结构类型 StructureType。 + this.isBondTRS = this.IsBond(swapInstrumentType); this.multiplier = this.isBondTRS ? 100 : 1; this.initDeal(); this.setValueDate(this.deal.ValueDate); From 695d78810fffc9f67381aa9912e1f7a6259846f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=90=8D=E9=94=90?= <1565842059@qq.com> Date: Tue, 25 Aug 2026 10:15:51 +0800 Subject: [PATCH 02/12] =?UTF-8?q?refactor(dividend):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=88=86=E7=BA=A2=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91=E5=92=8C?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新除权参考价计算公式中的收盘价描述为登记日收盘价 - 优化Swap模块中公司行为处理的日志注释 - 区分除权日和登记日的信息处理流程 - 优化持仓基线重置和公司行为事件记录的注释说明 - 完善现金分红和配股处理的相关注释 - 优化实时持仓切换和事件匹配的逻辑注释 --- .../SwapModule/SwapEodPositionService.cs | 73 ++++++++++++------- .../TradeModule/DealModule/DividendService.cs | 10 +-- 2 files changed, 52 insertions(+), 31 deletions(-) diff --git a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs index eceb433e..3119c917 100644 --- a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs @@ -439,7 +439,7 @@ namespace YLErp.Modules.SwapModule /// /// 获取公司行为公式使用的收盘价。 /// EffectiveDate 是真正切换持仓基线的日期,但除权系数的收盘价仍属于登记日 - /// ExDividendDate;不能在 8 月 17 日 EOD 误取 8 月 17 日收盘价重算 8 月 14 日 + /// ExDividendDate;不能在 除权日 EOD 误取 除权日收盘价重算 登记日 /// 登记日形成的系数。测试实现可以返回快照中的回退值,生产实现从登记日行情读取。 /// protected virtual decimal GetFundCorporateActionClosePrice( @@ -516,18 +516,22 @@ namespace YLErp.Modules.SwapModule // 公司行为只取 settleDate 当天的有效单行;同一标的出现多条记录必须中止本次收盘, // 否则 ToDictionary 会抛重复键,无法证明哪一条系数应生效。 var corporateActionInfos = FindCorporateActionInfos(settleDate) ?? new List(); + // 除权日信息 var exDividendInfos = corporateActionInfos .Where(x => x != null && x.ValidStatus && x.EffectiveDate.HasValue && x.EffectiveDate.Value.Date == settleDate.Date) .ToList(); + // 登记日信息 var registrationInfos = corporateActionInfos .Where(x => x != null && x.ValidStatus && x.ExDividendDate.HasValue && x.ExDividendDate.Value.Date == settleDate.Date) .ToList(); + + // 公司行为去重 - 除权日 var duplicateDividend = exDividendInfos .GroupBy(x => x.UnderlyingCode, StringComparer.OrdinalIgnoreCase) .FirstOrDefault(x => x.Count() > 1); @@ -535,7 +539,8 @@ namespace YLErp.Modules.SwapModule { throw new InvalidOperationException($"标的【{duplicateDividend.Key}】在【{settleDate:yyyy-MM-dd}】存在多条有效除权记录"); } - // 公司行为去重 - 拦截 + + // 公司行为去重 - 登记日 var duplicateRegistration = registrationInfos .GroupBy(x => x.UnderlyingCode, StringComparer.OrdinalIgnoreCase) .FirstOrDefault(x => x.Count() > 1); @@ -545,6 +550,8 @@ namespace YLErp.Modules.SwapModule // 有多条有效记录时,系统无法证明应采用哪一条派现金额,必须中止收盘。 throw new InvalidOperationException($"标的【{duplicateRegistration.Key}】在【{settleDate:yyyy-MM-dd}】存在多条有效登记日记录"); } + + // 根据标的代码 创建map var exDividendByCode = exDividendInfos.ToDictionary( x => x.UnderlyingCode, x => x, @@ -588,21 +595,21 @@ namespace YLErp.Modules.SwapModule var flowEvents = FindFlowEvents(td.id, settleDate); var preDealDate = GetPreDealDate(td.id, settleDate, eventTyps);//上一次平仓/互换/自动互换处理日期 List autoInterests = new List();//自动互换利息腿信息 + // 处理浮动腿前先准备当日开盘基线:登记日 EOD 仍保存 // 1000 份/100 元,除权日收盘时先把上一 EOD 的基线转换为 // 2000 份/50 元,再处理当日平仓 300 份,最终才会得到 1700 份/50 元。 - // 不能等 DealFloatPositions 处理完平仓后再把 700 份乘 2,否则会错误得到 - // 1400 份;也不能直接修改数据库里的上一 EOD,否则登记日报表会被污染。 - - // 重置基线 + // 不能等 DealFloatPositions 处理完平仓后再把 700 份乘 2, + // 否则会错误得到 1400 份;也不能直接修改数据库里的上一 EOD,否则登记日报表会被污染。 + // 重置基线 - 除权日 var openingEodPositions = PrepareFundOpeningEodPositions( - eodPositions, + eodPositions, // 上一日终持仓 exDividendByCode, settleDate); // 构建公司行为前eod持仓 var corporateActionBeforePositions = BuildCorporateActionBeforePositions( - eodPositions, + eodPositions, // 上一日终持仓 posiList); // 交易首日恰逢 EffectiveDate 时,在内存克隆上生成除权后的开盘基线,应用生效日公司行为。 @@ -613,18 +620,19 @@ namespace YLErp.Modules.SwapModule // 处理浮动腿归档 var curEodPosis = DealFloatPositions( - floatPositionsForCompose, - realPosiList, - openingEodPositions, - todyEodPositions, - settleDate, - td, - preSettleDate, - flowEvents); + floatPositionsForCompose, // 初始腿 + realPosiList, // 实时腿 + openingEodPositions, // 开盘基线 + todyEodPositions, // 当日终持仓 + settleDate, // 收盘日期 + td, // 交易 + preSettleDate, // 上一交易日 + flowEvents); // 流水事件 // 现金分红不在登记日直接累加;Copy/Update EOD 通过 CalcBondPayment // 读取 EffectiveDate 命中的 ex_dividend_info,并生成 TdPosiDividend。 // 这样登记日快照不提前变化,且公司行为分红与债券付息共用同一待实现余额。 + // 公司行为事件 RecordCorporateActionEvents( td, curEodPosis, @@ -632,8 +640,9 @@ namespace YLErp.Modules.SwapModule registrationInfos, exDividendInfos, settleDate); - // 登记日 EOD 仍保存除权前快照,但下一交易日开盘读取的实时浮动腿需要 - // 先切换到生效后的 Q/P。该更新基于当日 EOD 恢复后再套系数,重收盘不会重复放大。 + // 登记日 EOD 仍保存除权前快照, + // 但下一交易日开盘读取的实时浮动腿需要先切换到生效后的 Q/P。 + // 该更新基于当日 EOD 恢复后再套系数,重收盘不会重复放大。 UpdateRealtimeCorporateActionPositions(td, curEodPosis, registrationInfos, exDividendInfos, settleDate); var posiLongNotional = curEodPosis.Where(s => s.PositionType == (int)PositionTypeFlag.Long).Sum(s => s.PosiNotionalValue); var posiShortNotional = curEodPosis.Where(s => s.PositionType == (int)PositionTypeFlag.Short).Sum(s => s.PosiNotionalValue); @@ -668,8 +677,8 @@ namespace YLErp.Modules.SwapModule /// /// 把上一实际 EOD 复制成“当日开盘基线”,并在需要时套用当日生效的 Stock/Fund 公司行为。 /// 原始上一 EOD 只读保留在数据库中,确保登记日 EOD 报表仍展示除权前 Q/P。 - /// 例如 1000 份/100 元、10 送 10 的记录在 8 月 14 日 EOD 仍是 1000/100; - /// 8 月 17 日处理当日流水前,内存基线先转为 2000/50,再平仓 300 份得到 1700/50。 + /// 例如 1000 份/100 元、10 送 10 的记录在 登记日 EOD 仍是 1000/100; + /// 除权日处理当日流水前,内存基线先转为 2000/50,再平仓 300 份得到 1700/50。 /// protected List PrepareFundOpeningEodPositions( IReadOnlyCollection previousEodPositions, @@ -729,6 +738,7 @@ namespace YLErp.Modules.SwapModule var dividendTaxRate = 0m; foreach (var position in positions) { + // 不是浮动腿 或者 不是 Fund Stock类型的标的 或者 没有除权信息 或者 除权日不是结算日 - 跳过 if (position.PosiDirection <= 0 || !IsTrsCorporateActionInstrument(position.UnderlyingInstrumentType) || string.IsNullOrWhiteSpace(position.UnderlyingCode) @@ -739,7 +749,7 @@ namespace YLErp.Modules.SwapModule continue; } - // 获取除权参考价 + // 获取除权参考价 - 登记日收盘价 var corporateActionClosePrice = GetFundCorporateActionClosePrice( dividendInfo, position.UnderlyingPrice); @@ -773,8 +783,11 @@ namespace YLErp.Modules.SwapModule position.PosiNetFeePrice = adjusted.NetFeePrice; position.PosiNetNoFeePrice = adjusted.NetNoFeePrice; + // 多空方向 var shortRatio = DirectionRatio.LongShort(position.PositionType); + // 收付方向 var directionRatio = DirectionRatio.ReceivePay(position.PosiDirection); + // 处理价格的正负号(收支方向) position.PosiNotionalValue = Math.Round( position.PosiGrossPrice * position.PosiQuantity * position.ContractSize, ConsGlobal.MoneyRound, @@ -900,8 +913,9 @@ namespace YLErp.Modules.SwapModule return; } - // 登记日收盘后即切换实时 BOD。EffectiveDate 只用于确认这条记录仍是未来生效的 - // 公司行为;无论登记日与生效日之间有一个还是多个非交易日,都不能漏掉这次切换。 + // 登记日收盘后即切换实时 BOD。 + // EffectiveDate 只用于确认这条记录仍是未来生效的公司行为; + // 无论登记日与生效日之间有一个还是多个非交易日,都不能漏掉这次切换。 var pendingInfos = (registrationInfos ?? Array.Empty()) .Where(x => x.EffectiveDate.HasValue && x.EffectiveDate.Value.Date > settleDate.Date) .ToList(); @@ -912,6 +926,7 @@ namespace YLErp.Modules.SwapModule && IsTrsCorporateActionInstrument(x.UnderlyingInstrumentType) && !string.IsNullOrWhiteSpace(x.UnderlyingCode))) { + // 实时腿 var realtime = DbContext.swap_position.FirstOrDefault(x => x.SwapTradeId == td.id && !x.Invalid && !x.IsInitial @@ -920,7 +935,8 @@ namespace YLErp.Modules.SwapModule { continue; } - + + // 对每条当日 EOD 浮动腿,按标的代码在 pendingInfos 中找匹配的公司行为。 var pending = pendingInfos.FirstOrDefault(x => string.Equals( x.UnderlyingCode, eod.UnderlyingCode, StringComparison.OrdinalIgnoreCase)); if (pending != null) @@ -966,6 +982,7 @@ namespace YLErp.Modules.SwapModule return; } + // 登记日信息合并除权日信息 var infos = (registrationInfos ?? Array.Empty()) .Concat(effectiveInfos ?? Array.Empty()) .Where(x => x != null && x.ValidStatus && !string.IsNullOrWhiteSpace(x.UnderlyingCode)) @@ -983,6 +1000,7 @@ namespace YLErp.Modules.SwapModule return; } + // 跟据交易id查当前交易关联事件 var existingEvents = FindCorporateActionEvents(td.id); foreach (var current in currentPositions.Where(x => x != null && x.PosiDirection > 0 && IsTrsCorporateActionInstrument(x.UnderlyingInstrumentType))) @@ -1004,16 +1022,18 @@ namespace YLErp.Modules.SwapModule && x.Data.ExDividendInfoId == info.id && x.Data.PositionId == current.PositionId) .ToList(); + // 寻找applied = false的(登记日记录的) var eventData = matchingEvents.FirstOrDefault(x => !x.Data.Applied) ?? matchingEvents.FirstOrDefault(); - var previous = previousPositions?.FirstOrDefault(x => x != null && x.PositionId == current.PositionId); + var previous = previousPositions?.FirstOrDefault(x => x != null + && x.PositionId == current.PositionId); // 登记日 false 除权日 true var isEffective = info.EffectiveDate.HasValue && info.EffectiveDate.Value.Date <= settleDate.Date && effectiveInfos != null && effectiveInfos.Any(x => x.id == info.id); - // 如果没有匹配到事件或事件未生效,则创建新事件。 + // 如果没有匹配到事件或今天不是除权日 但找到的事件的applied=true(异常事件/重收盘),则创建新事件。 if (eventData == null || (!isEffective && eventData.Data.Applied)) { // 创建新事件 @@ -1184,6 +1204,7 @@ namespace YLErp.Modules.SwapModule decimal dividendTaxRate, int grossPriceRound) { + // 计算除权系数 - adjustCashDividendPrice = false (现金分红模式) var factors = DividendService.CalculateCorporateActionFactors( dividendInfo, closePrice, diff --git a/YLErpDAL/Modules/TradeModule/DealModule/DividendService.cs b/YLErpDAL/Modules/TradeModule/DealModule/DividendService.cs index 8b026f5d..fedf0c00 100644 --- a/YLErpDAL/Modules/TradeModule/DealModule/DividendService.cs +++ b/YLErpDAL/Modules/TradeModule/DealModule/DividendService.cs @@ -773,9 +773,9 @@ namespace YLErp.Modules.TradeModule.DealModule bool adjustCashDividendPrice = true) { // 价格调整模式除权参考价 = - // 收盘价 * 10 - 【每股派息 * 10 * (1-分红税率)】 + 配股数 * 配股价 - // - ----------------------------------------------------- - // (10 + 送股数 + 配股数) * 拆股倍数 + // 登记日收盘价 * 10 - 【每股派息 * 10 * (1-分红税率)】 + 配股数 * 配股价 + // --------------------------------------------------------------- + // (10 + 送股数 + 配股数) * 拆股倍数 // 场内链路默认继续把现金派息计入除权参考价; // TRS Stock/Fund 现金模式显式关闭该项 :“【】” 号内数据。 var cashPriceAdjustment = adjustCashDividendPrice @@ -784,8 +784,8 @@ namespace YLErp.Modules.TradeModule.DealModule // 拆股倍数 var splitFactor = GetSplitFactor(info); // 除权参考价(TRS) : - // 收盘价 * 10 + 配股数 * 配股价 - // ------------------------------ + // 登记日收盘价 * 10 + 配股数 * 配股价 + // ------------------------------------- // (10 + 送股数 + 配股数) * 拆股倍数 var exDividendPrice = ((closePrice * 10m - cashPriceAdjustment + info.RationedSharesAmount * info.RationedSharesPrice) From 255209420b2bc147d291c16d494b9372fa3390a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E5=86=B0=E5=86=B0?= <437394478@qq.com> Date: Tue, 25 Aug 2026 12:03:11 +0800 Subject: [PATCH 03/12] =?UTF-8?q?feature:=20=E7=BB=93=E7=AE=97=E5=8D=95?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E6=A8=A1=E6=9D=BF=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../settlement_template/nodma_01.xlsx | Bin 4961 -> 4998 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Plugins/YLErp.Plugins.GuoLian/App_Docs/settlement_template/nodma_01.xlsx b/Plugins/YLErp.Plugins.GuoLian/App_Docs/settlement_template/nodma_01.xlsx index 1b289c003853dc0b7f1a2a78ff8466976938a349..fd0cf135fadaa29d982061a68ab66987cdda9463 100644 GIT binary patch delta 2949 zcmY+G2T&8r7KTF!glYm&klsTN9WDd`DM5NsdXb_8$i+~kV~jLGdZdW--X79B76PJx zAQF(?L3&3i0#BT|_dR!JcjwIfXJ&WLo^!rAfe09bkuDiI6aWB#0RDE@ZM(mnsV6cB zVW|uCp~b9nXc{Jo{(@?^Af9-d*W@B$O+cnuM9EiGs7B+4)`hP9gBE=%JA|Vn(pcSA z2+S--C%z@aw&!0Rp+A%SJ?hIj4h7fQNu0=Y=n3#BbXIbZuo;Z0CRZ_`7Vy?|g#{R( zD6+ubJ6^fOdfNAzN7G7$KmDRmq;5@iGt=xUc5&MevIkyq8GPEz$)!lNl1Gis>y#E* z%89gAyb|AJd8E9m!oh-c*^SuXzT2mg6E^LPOoYixgU0;!V({PIoWlRSTbWBD$p|R` z@PiG{Ou~a@t%nGphFDg<@LzA~Vc>_%#;XpNW;E+&7nuIY(akQ>=E&y~`sfBO_GM77 zGlnZ>`TNbV2O!siz04%3E2~7KW8&qsnwplZHTxAp|96^?d)Bo z1AfMD4x(4myUWSRNFMqTL|VRQ!^fh}5uqact*q(OdN76(r^^L5ki! zwEQU#GkJZcg%LNdN0I=N)8mjtf15f#@;%)*cgi2EvHyFB!-yD0$C+D4H!~U$Z&a48 zSpdbR1RDqfWkZ^UC7#$|CfzDv7p8*vL1E@NzZ4N5e^gg;CaXP_Ats!W9GS0WjXY@{ zU)PS~GScYoqx`RD7wv`d2hU{v93ta;Hrdc zd`{1LK|QO0mGIyO(?CBF&i`>wOtbIynHe_9QHhG5`kA57y9UN;Z}%@P!$|@xl0^qM z-A^(axT#`Z3vWW9_Nj~>?lk0zDY9S7$|#MEKMz~$NcHbn851RZ67TShxL$RttU?=^ zl?M1!%Zw^kb$rZk`uVA;>;MRuu4OwwjdOt7M<0!@JAC!33SF|%_7ZDa8-K)-{#FPp zlQ|k@&{YJN!C7M(%3XpCa`aP9?Ng>_eMDZ8O*k`VozF}AIxIvO43B><^3><={6SHrO%zf`-W8h_~^AO zWR7HHzp@#xPx+kcGONX;9?e?f*C?g1Am;qE4;c(es(pVgdhF2q6Q{1b`_XC{^NkBg zf@L4)gx49FXjtc&f$MKUBFo?l^}BcMa?_PZBl;>nc`c3Id-LG@_*?c1TaT%J_c9rp zhh&h91OhHWR4qe*xbm{}Y=^np6$e9Q)8F%ttdUR}D@Xdas^i2>2Hr9v2 z?JX!lv@<|IQ=o;S1j2Qq_xZybSnyg=={s#f;x!_mLyFPL@3bP)v_%F;JE~8lD)_8- z(<7B1Xb_sAe2m!*b7 zex;3?(Mv&GcQr#TYS{-;`2wwu?Ud9gi@==nBSN9T`7ky&=V-+u)FwZsk|}G0oOD5Kwbe!}M2Cg6jN6z`d|L2&7A5P!l4@;GG4~#Ob#FDgwel!- zy+=PpY`;P={rwcW@t81GPO$V z5K?mj^N34azU;V{p&yp;1p&BLd{qP-XHBS>)15VwbU$KfVgEyM7E%IH}s=h}% zw6`7rs7J#MmieXvpJLk+tLnxvhwNQ}Q@3heT1I_S67nIIc~oOLEr-Qp{qw7jT;1D$ z_Re+9J=$Gt+&jLq+#|V;8QE$OUil79L&6FRQxTQOx3<9wa#*b8_|Ig@L+YHpvA|=D zDd3PQ=gWKJU9>J>3ZlB)BhN%LlQIqMQMs|;>BlY}m^`5@i=~10bu})T13A9J=daDA zcSj=Tvrrah=;bxPE_~sa@7c*6Eb*`5c}(VGeIXZ>CKhv^SJ*0-gd5wf$ASm;jt?R6 ztUHT+T}(?u${g~7(cVE{Z6>R`tq@c4spnGJoX~+L{*x-INa?LuY>$cd~DlLM3!WI7kT*sHZvsk;&`U49SM4!LUpNBb&D0=Fe^gEIfv#fkDDS1JN$l z$sOtb;Wyk!uR<>hP@m06%z%i4YC!wZw!QapEG!+X7hQA5qGV%p^qxTf!x~+M!EK$1 z)|&`arpm)^qXOS?zA?&YhYd(ZsSe=|Oy@4oI&zz^DY8AO0P@(3Oo3%eC!U=xxzX$A$sCJ}!Vepc~Idpe7Cngt@dtbudjn zB=@Y$p<%{Y5dGf3#^Z&ExoY7@%G+v;WONMCAc{2wBk$nu5W{XG`n%C92&Ry``Ga7l zO|@EWoW*LljsIIl12uL?*BuNnG?wy;D^>^TdfvntIDf`Gc&p6wuIdd+; z0y^+4fD_sd0*2aXww1r+(nJ0uAkD)Czkz_8+(SF~xIXakM!90VZ~RfXZ9VZbJNO=YX)K=sqq%;o1EJx7 zG*mjE$G~*QXR8a7A<;$HnIKf9CF0 zn2}I%`OJ^csN_A5T)~d}8u@P%yK-W&k1d~?$KsM0kLaEB#|qxmI!mP|MHUrxw*eAw zRYXI*-j&02M%`{!BSUqwtq){}UL=F>jq8;1IkS>5jMPyp`=dGXInh5_|8wkCWG+_& zF)FlKYDP6#m~M9+d#^wiOg3TX2!Le&1R=>=h{m#v=W27A2V)?5xB2wSACFT@57r_9 z{llnu8;C6ZrSX4Imkkm7-Sq|_tfVC5_zej6ZxhVGN^&1B%D~I{Zz}`>0FF!m0P`>G z{bv;5&hQ=#FpEpgWe5dH0D#L$^N--yUVw|C0|4y3?xDTm;+LzDE(s}=?0@up89&G` ir@dd4$?}Ke6n>LI==X81GqREh;AI&FDE@|AO8yHlL{8QK delta 2936 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 T)!4XzK%6<72+a+aQ{DdnlrB08 From 7d0eb16f64353ebbe3cc72dd1916259cf5928334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=90=8D=E9=94=90?= <1565842059@qq.com> Date: Tue, 25 Aug 2026 13:49:03 +0800 Subject: [PATCH 04/12] =?UTF-8?q?feat(eodswapposition):=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=A1=86=E6=9E=B6=E5=90=88=E7=BA=A6=E6=96=B0=E5=8F=A3?= =?UTF-8?q?=E5=BE=84=E5=B1=95=E7=A4=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在EodPnlCalculator中添加CalculateEodSwapRiskNewFields方法,实现新口径计算逻辑 - 创建EodSwapRiskNewFields和EodSwapRiskNewResponse模型类,支持新的展示字段 - 实现SearchEodSwapNewList查询方法,复用旧查询权限控制并计算新字段 - 添加index=3的新框架合约Tab页面,使用独立查询接口和列配置 - 前端JavaScript中实现colModelGridEodSwapNew列模型,替换旧字段并新增9个字段 - 完善导出功能支持新Tab的标准格式导出,保持与旧口径分离 - 更新测试用例验证新框架合约前端接线正确性 --- Framework/YLErp.Core/DBModels/EodSwap.cs | 82 ++++++++ .../SwapEodPositionRiskNewTabTest.cs | 178 ++++++++++++++++++ .../Modules/SwapModule/EodPnlCalculator.cs | 98 ++++++++++ .../SwapModule/SwapEodPositionService.cs | 108 +++++++++++ YLErpWeb/Controllers/SwapTrade2Controller.cs | 17 ++ .../Views/SwapTrade2/EodPositionRisks.cshtml | 7 +- YLErpWeb/fe-tests/eodPositionRisks.test.js | 69 ++++++- .../Scripts/app/swaptrade/EodPositionRisks.js | 106 ++++++++++- 8 files changed, 655 insertions(+), 10 deletions(-) create mode 100644 UnitTestProject/Modules/SwapModule/SwapEodPositionRiskNewTabTest.cs diff --git a/Framework/YLErp.Core/DBModels/EodSwap.cs b/Framework/YLErp.Core/DBModels/EodSwap.cs index d268cd50..80f8fd30 100644 --- a/Framework/YLErp.Core/DBModels/EodSwap.cs +++ b/Framework/YLErp.Core/DBModels/EodSwap.cs @@ -220,4 +220,86 @@ namespace YLErp.DBModels /// public decimal MarginInterestLoss { get; set; } } + + /// + /// EQD-7084 新“框架合约”Tab 的新增字段及拆分后的估值口径。 + /// 该模型不映射数据库,仅由新查询接口计算返回。 + /// + public class EodSwapRiskNewFields + { + /// + /// 浮动收益端标的类型,仅供前端按债券/非债券选择期初价格精度使用, + /// 不参与任何收益或估值计算。 + /// + public string UnderlyingInstrumentType { get; set; } + + /// 浮动收益端多空方向。 + public string UnderlyingDirection { get; set; } + + /// 浮动收益端标的代码。 + public string UnderlyingCode { get; set; } + + /// 期初标的价格;债券按百分价格展示。 + public decimal? InitialPrice { get; set; } + + /// 名义数量,取合约名义本金。 + public decimal NotionalQuantity { get; set; } + + /// 合约起始日。 + public DateTime? ContractStartDate { get; set; } + + /// 合约到期日。 + public DateTime? ContractMaturityDate { get; set; } + + /// 利息端基准:FR007 或固定利率。 + public string InterestBenchmark { get; set; } + + /// 普通利息腿当前交易日适用利率合计。 + public decimal InterestRatePrice { get; set; } + + /// + /// 开平仓费用。日终腿已按我方收益方向归一:我方支付为负、我方收取为正; + /// 新 Tab 单独展示该金额,但估值中仍须计入一次。 + /// + public decimal OpeningClosingFee { get; set; } + + /// + /// 不含开平仓费用的浮动端待实现收益,来源为日终浮动腿的 PosiMtmPnL; + /// 不可再由旧口径的 PosiProfitSum 反推,避免把费用重新混入本列。 + /// + public decimal FloatingUnrealizedPnl { get; set; } + + /// + /// 排除初始/维持保证金腿后的普通利息端待实现收益。保证金利息保留在其独立两列, + /// 且只通过 MarginInterestAmount 参与估值,以满足“利息端仅展示利息端盈亏”的新口径。 + /// + public decimal OrdinaryInterestPnl { get; set; } + + /// + /// 保证金利息净额,仅供两种合约估值维持旧总额;前端不直接绑定该字段, + /// 以防它再次落入“合约利息端待实现收益”。 + /// + public decimal MarginInterestAmount { get; set; } + + /// 收取对手方保证金利息。 + public decimal MarginInterestGain { get; set; } + + /// 支付对手方保证金利息。 + public decimal MarginInterestLoss { get; set; } + + /// 到期轧差口径估值;仅 DividendPayDate=0 时有值,且包含期间付息/分红。 + public decimal? MaturityNettingValuation { get; set; } + + /// 期间支付派息口径估值;仅 DividendPayDate 非 0 时有值,不重复计入期间付息/分红。 + public decimal? PeriodPaymentValuation { get; set; } + } + + /// + /// EQD-7084 新“框架合约”Tab 响应。继承旧响应以保持原有列字段完全一致, + /// 新接口只额外序列化新增字段。 + /// + public class EodSwapRiskNewResponse : EodSwapResponse + { + public EodSwapRiskNewFields NewFields { get; set; } + } } diff --git a/UnitTestProject/Modules/SwapModule/SwapEodPositionRiskNewTabTest.cs b/UnitTestProject/Modules/SwapModule/SwapEodPositionRiskNewTabTest.cs new file mode 100644 index 00000000..97a1527d --- /dev/null +++ b/UnitTestProject/Modules/SwapModule/SwapEodPositionRiskNewTabTest.cs @@ -0,0 +1,178 @@ +using YLErp.DBModels; +using YLErp.DBModels.Enums; + +namespace YLErp.Modules.SwapModule; + +/// +/// EQD-7084 新“框架合约”Tab 的口径测试。 +/// 纯计算测试不依赖数据库,直接锁定 EodPnlCalculator 的新口径。 +/// +[TestClass] +public class SwapEodPositionRiskNewTabTest +{ + [TestMethod] + public void 新口径_普通利息排除保证金_浮动收益剔除费用并保留估值总额() + { + var floating = new[] + { + // EOD 归一后,费用已经按我方收益视角落库;支付费用为负数。 + FloatingLeg("600000", 1, 100m, 0m, -12m, "普通收益互换") + }; + var interests = new[] + { + InterestLeg(1, (int)InterestModeEnum.固定值, 80m, 0.02m, 0.02m), + InterestLeg(1, (int)InterestModeEnum.初始预付金, 20m, 0.01m, 0.01m) + }; + + var fields = InvokeCalculation( + floating, + interests, + structureType: "普通收益互换", + notionalValue: 1_000m, + startDate: new DateTime(2026, 1, 1), + maturityDate: new DateTime(2026, 12, 31), + periodAmount: 5m, + dividendPayDate: 0); + + Assert.AreEqual(100m, GetDecimal(fields, "FloatingUnrealizedPnl"), 0.0001m, + "新浮动端待实现收益应排除 PosiFeePending:PosiProfitSum(88) - PosiFeePending(-12) = 100"); + Assert.AreEqual(-12m, GetDecimal(fields, "OpeningClosingFee"), 0.0001m, + "开平仓费用直接使用 EOD 已归一的 PosiFeePending"); + Assert.AreEqual(80m, GetDecimal(fields, "OrdinaryInterestPnl"), 0.0001m, + "利息端待实现收益应排除初始/维持保证金腿"); + Assert.AreEqual(-20m, GetDecimal(fields, "MarginInterestAmount"), 0.0001m, + "保证金利息仍应按保证金腿方向计入估值"); + Assert.AreEqual(153m, GetDecimal(fields, "MaturityNettingValuation"), 0.0001m, + "估值应保持旧口径:100 - 12 + 80 - 20 + 5 = 153;费用只计一次"); + } + + [TestMethod] + public void 新口径_当前利率合计使用普通利息腿TdInterestRate_并识别FR007() + { + var fr007Leg = InterestLeg(2, (int)InterestModeEnum.合约名义本金规模, 20m, 0.03m, 0.018m); + fr007Leg.FloatRateUnderlyingCode = "FR007"; + fr007Leg.FloatRate = 0.015m; + var fields = InvokeCalculation( + new[] { FloatingLeg("600001", 2, 100m, 0m, 0m, "普通收益互换") }, + new[] + { + InterestLeg(1, (int)InterestModeEnum.固定值, 10m, 0.02m, 0.0125m), + fr007Leg + }, + structureType: "普通收益互换", + notionalValue: 100m, + startDate: new DateTime(2026, 2, 1), + maturityDate: new DateTime(2026, 8, 1), + periodAmount: 0m, + dividendPayDate: 1); + + Assert.AreEqual(0.0305m, GetDecimal(fields, "InterestRatePrice"), 0.0000001m, + "利率端价格应为普通利息腿当前 TdInterestRate 合计,而非默认利差合计"); + Assert.AreEqual("FR007", GetString(fields, "InterestBenchmark")); + } + + [TestMethod] + public void 新口径_普通利息腿无FR007时基准为固定利率() + { + var fields = InvokeCalculation( + new[] { FloatingLeg("600002", 1, 100m, 0m, 0m, "普通收益互换") }, + new[] { InterestLeg(1, (int)InterestModeEnum.固定值, 10m, 0.02m, 0.0125m) }, + structureType: "普通收益互换", + notionalValue: 100m, + startDate: new DateTime(2026, 2, 1), + maturityDate: new DateTime(2026, 8, 1), + periodAmount: 0m, + dividendPayDate: 1); + + Assert.AreEqual("固定利率", GetString(fields, "InterestBenchmark")); + } + + [TestMethod] + public void 新口径_债券期初价格按风险页约定放大百分价格_并保留合同字段() + { + var fields = InvokeCalculation( + new[] { FloatingLeg("110000", 1, 99.12m, 0m, 0m, "普通债券类收益互换", "Bond") }, + new[] { InterestLeg(1, (int)InterestModeEnum.固定值, 1m, 0.01m, 0.01m) }, + structureType: "普通债券类收益互换", + notionalValue: 9_900m, + startDate: new DateTime(2026, 3, 1), + maturityDate: new DateTime(2027, 3, 1), + periodAmount: 0m, + dividendPayDate: 1); + + Assert.AreEqual(99.12m, GetDecimal(fields, "InitialPrice"), 0.0001m, + "债券日终 PosiGrossPrice 已由 SetPosiPrice 按风险页口径缩放,新接口不能再次乘 100"); + Assert.AreEqual(9_900m, GetDecimal(fields, "NotionalQuantity"), 0.0001m); + Assert.AreEqual("多头", GetString(fields, "UnderlyingDirection")); + Assert.AreEqual("110000", GetString(fields, "UnderlyingCode")); + Assert.AreEqual("Bond", GetString(fields, "UnderlyingInstrumentType")); + Assert.AreEqual(new DateTime(2026, 3, 1), GetDate(fields, "ContractStartDate")); + Assert.AreEqual(new DateTime(2027, 3, 1), GetDate(fields, "ContractMaturityDate")); + } + + private static object InvokeCalculation( + IEnumerable floating, + IEnumerable interests, + string structureType, + decimal notionalValue, + DateTime startDate, + DateTime maturityDate, + decimal periodAmount, + int dividendPayDate) + { + return EodPnlCalculator.CalculateEodSwapRiskNewFields( + floating, + interests, + structureType, + notionalValue, + startDate, + maturityDate, + periodAmount, + dividendPayDate); + } + + private static decimal GetDecimal(object fields, string name) + => Convert.ToDecimal(fields.GetType().GetProperty(name)!.GetValue(fields)); + + private static string GetString(object fields, string name) + => (string)fields.GetType().GetProperty(name)!.GetValue(fields)!; + + private static DateTime GetDate(object fields, string name) + => (DateTime)fields.GetType().GetProperty(name)!.GetValue(fields)!; + + private static eod_swap_position FloatingLeg( + string code, + int positionType, + decimal mtm, + decimal dividend, + decimal fee, + string structureType, + string instrumentType = null) + => new() + { + UnderlyingCode = code, + UnderlyingInstrumentType = instrumentType ?? structureType, + PositionType = positionType, + PosiGrossPrice = mtm, + PosiMtmPnL = mtm, + PosiDividendSum = dividend, + PosiFeePending = fee, + PosiProfitSum = mtm + dividend + fee, + PosiNotionalValue = 100m + }; + + private static eod_swap_position InterestLeg( + int direction, + int mode, + decimal profit, + decimal defaultRate, + decimal currentRate) + => new() + { + InterestDirection = direction, + InterestMode = mode, + InterestProfitSum = profit, + InterestRateDefault = defaultRate, + TdInterestRate = currentRate + }; +} diff --git a/YLErpDAL/Modules/SwapModule/EodPnlCalculator.cs b/YLErpDAL/Modules/SwapModule/EodPnlCalculator.cs index 3532be45..cbb90e4d 100644 --- a/YLErpDAL/Modules/SwapModule/EodPnlCalculator.cs +++ b/YLErpDAL/Modules/SwapModule/EodPnlCalculator.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Generic; +using System.Linq; using YLErp; using YLErp.DBModels; using YLErp.DBModels.Enums; +using YLErp.Modules.SwapModule.Margin; using YLErp.Modules.SwapModule.ReturnLegs; namespace YLErp.Modules.SwapModule @@ -179,5 +181,101 @@ namespace YLErp.Modules.SwapModule { position.RealizedPnl = position.RealizedInterest + position.RealizedInterestFee; } + + /// + /// 计算 EQD-7084 新“框架合约”Tab 的纯展示口径。 + /// 浮动腿盯市收益、开平仓费用和普通利息分别计算;保证金腿的利息 + /// 仅作为估值组成项保留一次,不混入新 Tab 的普通利息列。 + /// + public static EodSwapRiskNewFields CalculateEodSwapRiskNewFields( + IEnumerable floatingLegs, + IEnumerable interestLegs, + string structureType, + decimal notionalValue, + DateTime? startDate, + DateTime? maturityDate, + decimal periodAmount, + int dividendPayDate) + { + // 日终明细以 UnderlyingCode 是否存在区分浮动腿和利息腿;调用方即使传入混合集合, + // 这里也会重新过滤,避免保证金/利息数据被带入浮动端新口径。 + var floating = (floatingLegs ?? Enumerable.Empty()) + .Where(x => x != null && !string.IsNullOrEmpty(x.UnderlyingCode)) + .ToList(); + var interests = (interestLegs ?? Enumerable.Empty()) + .Where(x => x != null && string.IsNullOrEmpty(x.UnderlyingCode)) + .ToList(); + // MarginModes 覆盖初始/维持保证金相关腿。它们的利息不属于需求中的“利息端待实现收益”, + // 但必须单独保留,以使两个合约估值与旧口径总额保持一致。 + var ordinaryInterests = interests.Where(x => !MarginModes.Contains(x.InterestMode)).ToList(); + var marginInterests = interests.Where(x => MarginModes.Contains(x.InterestMode)).ToList(); + var firstFloating = floating.FirstOrDefault(); + + // PosiGrossPrice 已是 EOD 归档口径的期初全价;债券价格不可在报表接口再次乘 100。 + var initialPrice = firstFloating?.PosiGrossPrice; + // PosiFeePending 是日终归一后的我方损益方向:支付费用为负、收取费用为正。 + // 本列独立展示它,下面的 valuation 再加回一次,不能因展示拆列而改变合约估值。 + var openingClosingFee = floating.Sum(x => x.PosiFeePending); + // PosiMtmPnL 已排除分红和费用,避免从 PosiProfitSum 重复拆分历史费用。 + var floatingUnrealizedPnl = floating.Sum(x => x.PosiMtmPnL); + var ordinaryInterestPnl = ordinaryInterests.Sum(x => + x.InterestProfitSum * DirectionRatio.InterestLegPnl(x.InterestDirection, x.InterestMode)); + var marginInterestAmount = marginInterests.Sum(x => + x.InterestProfitSum * DirectionRatio.InterestLegPnl(x.InterestDirection, x.InterestMode)); + + // 新口径估值 = 去费用浮动收益 + 开平仓费用 + 普通利息 + 保证金利息。 + // “浮动端待实现收益”列不包含费用,而合约估值仍沿用旧总额,故费用只能在此加一次。 + var valuation = floatingUnrealizedPnl + + openingClosingFee + + ordinaryInterestPnl + + marginInterestAmount; + var result = new EodSwapRiskNewFields + { + UnderlyingInstrumentType = firstFloating?.UnderlyingInstrumentType, + UnderlyingDirection = string.Join(",", floating + .Select(x => x.PositionType == (int)PositionTypeFlag.Long ? "多头" + : x.PositionType == (int)PositionTypeFlag.Short ? "空头" : "") + .Where(x => !string.IsNullOrEmpty(x)) + .Distinct()), + UnderlyingCode = string.Join(",", floating + .Select(x => x.UnderlyingCode) + .Where(x => !string.IsNullOrEmpty(x)) + .Distinct()), + InitialPrice = initialPrice, + NotionalQuantity = notionalValue, + ContractStartDate = startDate, + ContractMaturityDate = maturityDate, + // 只要普通利息腿存在 FR007,即按需求显示 FR007;保证金腿不影响该展示基准。 + InterestBenchmark = ordinaryInterests.Any(x => + !string.IsNullOrWhiteSpace(x.FloatRateUnderlyingCode) + && x.FloatRateUnderlyingCode.IndexOf("FR007", StringComparison.OrdinalIgnoreCase) >= 0) + ? "FR007" : "固定利率", + // 使用日终当日实际适用的 TdInterestRate 合计,而非合同初始利率或利差字段。 + InterestRatePrice = ordinaryInterests.Sum(x => x.TdInterestRate), + OpeningClosingFee = openingClosingFee, + FloatingUnrealizedPnl = floatingUnrealizedPnl, + OrdinaryInterestPnl = ordinaryInterestPnl, + MarginInterestAmount = marginInterestAmount, + MarginInterestGain = marginInterests + .Where(x => x.InterestDirection == (int)SwapDirectionEnum.支付) + .Sum(x => Math.Abs(x.InterestIncomeSum)), + MarginInterestLoss = marginInterests + .Where(x => x.InterestDirection == (int)SwapDirectionEnum.收取) + .Sum(x => -Math.Abs(x.InterestIncomeSum)) + }; + + // DividendPayDate=0 表示到期才与本金轧差,期间付息/分红需要加进该口径; + // 其余支付方式则由现金支付承担期间金额,估值字段不再包含 periodAmount。 + if (dividendPayDate == 0) + { + result.MaturityNettingValuation = valuation + periodAmount; + } + else + { + result.PeriodPaymentValuation = valuation; + } + + return result; + } } } diff --git a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs index d13a96ec..67313730 100644 --- a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs @@ -3370,6 +3370,91 @@ namespace YLErp.Modules.SwapModule return retListResult; } + + /// + /// 查询 EQD-7084 新“框架合约”字段。 + /// 旧查询负责筛选、排序、分页及旧字段计算;新字段只基于当前页对应的日终腿补充计算, + /// 避免改变旧接口的返回口径。 + /// + public SearchListResult SearchEodSwapNewList(EodSwapQueryRequest req) + { + // 新 Tab 与旧 Tab 共享同一套权限、筛选、排序和分页边界;先复用旧查询, + // 再只替换需求明确调整的展示字段,避免新接口悄然改变旧口径或查询范围。 + var oldResult = SearchEodSwapList(req); + var oldRows = oldResult.rows?.ToList() ?? new List(); + var tradeIds = oldRows.Select(x => x.position.SwapTradeId).Distinct().ToList(); + var valueDates = oldRows.Select(x => x.position.ValueDate).Distinct().ToList(); + + if (tradeIds.Count == 0) + { + return new SearchListResult(oldResult, + Enumerable.Empty()); + } + + // 当前页的交易、日终明细和扩展信息各批量读取一次,随后在内存按“交易 + 日终日”配对。 + // 不在 rows.Select 内查询数据库,避免分页结果产生 N+1 查询。 + var trades = DbContext.trade + .Where(x => tradeIds.Contains(x.id)) + .Select(x => new { x.id, x.StartDate, x.ExerciseDate }) + .ToDictionary(x => x.id); + var eodPositionDetails = DbContext.eod_swap_position + .Where(x => tradeIds.Contains(x.SwapTradeId) + && valueDates.Contains(x.ValueDate) + && !x.Invalid) + .ToList(); + var tradeExtends = DbContext.trade_extend + .Where(x => tradeIds.Contains(x.TradeId)) + .ToList(); + + var rows = oldRows.Select(item => + { + // 同一交易可出现在多个日终日;必须同时匹配 ValueDate,不能把其他日期的腿混入本行。 + var details = eodPositionDetails + .Where(x => x.SwapTradeId == item.position.SwapTradeId + && x.ValueDate == item.position.ValueDate) + .ToList(); + var floatingLegs = details.Where(x => !string.IsNullOrEmpty(x.UnderlyingCode)).ToList(); + var interestLegs = details.Where(x => string.IsNullOrEmpty(x.UnderlyingCode)).ToList(); + var tradeExtend = tradeExtends.FirstOrDefault(x => x.TradeId == item.position.SwapTradeId); + // 缺少扩展信息时按“期间支付”处理,和旧接口的默认值保持一致。 + var dividendPayDate = tradeExtend?.ExtendObj?.DividendPayDate ?? 1; + trades.TryGetValue(item.position.SwapTradeId, out var tradeInfo); + + return new EodSwapRiskNewResponse + { + position = item.position, + TradeDate = item.TradeDate, + SwapTradeNo = item.SwapTradeNo, + ClientName = item.ClientName, + StructureType = item.StructureType, + AssetBookName = item.AssetBookName, + ClientId = item.ClientId, + SwapTradeTypeStr = item.SwapTradeTypeStr, + UnderlyingType = item.UnderlyingType, + PeriodAmount = item.PeriodAmount, + FloatingUnrealizedPnl = item.FloatingUnrealizedPnl, + InterestPaymentMethod = item.InterestPaymentMethod, + MaturityNettingValuation = item.MaturityNettingValuation, + PeriodPaymentValuation = item.PeriodPaymentValuation, + MarginInterestGain = item.MarginInterestGain, + MarginInterestLoss = item.MarginInterestLoss, + // 所有 EQD-7084 差异集中在 NewFields;上方复制的旧字段用于保留原报表的 + // 基本信息、DV、期间金额及已实现收益,前端再将六个差异列绑定到 NewFields。 + NewFields = CalculateEodSwapRiskNewFields( + floatingLegs, + interestLegs, + item.StructureType, + item.position.NotionalValue, + tradeInfo?.StartDate, + tradeInfo?.ExerciseDate, + item.PeriodAmount, + dividendPayDate) + }; + }).ToList(); + + return new SearchListResult(oldResult, rows); + } + /// /// 获取互换交易日终持仓数据 /// @@ -3448,6 +3533,29 @@ namespace YLErp.Modules.SwapModule return retListResult; } + /// + /// 计算 EQD-7084 新“框架合约”Tab 的字段口径。 + /// 纯函数只依赖日终浮动腿、利息腿和交易级展示参数,供查询接口及无库单测共用。 + /// + public static EodSwapRiskNewFields CalculateEodSwapRiskNewFields( + IEnumerable floatingLegs, + IEnumerable interestLegs, + string structureType, + decimal notionalValue, + DateTime? startDate, + DateTime? ExerciseDate, + decimal periodAmount, + int dividendPayDate) + => EodPnlCalculator.CalculateEodSwapRiskNewFields( + floatingLegs, + interestLegs, + structureType, + notionalValue, + startDate, + ExerciseDate, + periodAmount, + dividendPayDate); + /// /// 互换持仓明细查询 /// diff --git a/YLErpWeb/Controllers/SwapTrade2Controller.cs b/YLErpWeb/Controllers/SwapTrade2Controller.cs index 7dbb0d69..e63a45ca 100644 --- a/YLErpWeb/Controllers/SwapTrade2Controller.cs +++ b/YLErpWeb/Controllers/SwapTrade2Controller.cs @@ -965,6 +965,23 @@ namespace YLErp.Web.Controllers var retListResult = service.SearchEodSwapList(req); return Json(retListResult); } + + /// + /// 日终持仓-互换新框架合约查询。 + /// 先与旧框架合约接口执行相同的账簿、资产单元和客户权限收敛, + /// 再返回 EQD-7084 拆分后的展示字段;不能直接绕过这些条件调用服务层。 + /// + /// + /// + public JsonResult EodSwapRiskNewQuery(EodSwapQueryRequest req) + { + req.BookIds = AssetUnitModel.IntersectAssetUnits(req.AssetIdGroupList, req.BookIds).ToList(); + req.UserAssets = CurUser.GetAssetUnitIds(); + req.UserClients = CurUser.GetClientIdsByCurUser(); + var service = new SwapEodPositionService(CurUser); + var retListResult = service.SearchEodSwapNewList(req); + return Json(retListResult); + } #endregion #region 结算报告 /// diff --git a/YLErpWeb/Views/SwapTrade2/EodPositionRisks.cshtml b/YLErpWeb/Views/SwapTrade2/EodPositionRisks.cshtml index aded5bf8..3a8a7e9f 100644 --- a/YLErpWeb/Views/SwapTrade2/EodPositionRisks.cshtml +++ b/YLErpWeb/Views/SwapTrade2/EodPositionRisks.cshtml @@ -46,7 +46,12 @@ 日终持仓
  • - 框架合约 + @* index=2 固定保留历史报表与导出配置,供新旧口径并行核对。 *@ + 框架合约(旧口径) +
  • +
  • + @* index=3 才使用 EQD-7084 新查询与拆分字段,不能复用旧 Tab 的列配置。 *@ + 框架合约
  • diff --git a/YLErpWeb/fe-tests/eodPositionRisks.test.js b/YLErpWeb/fe-tests/eodPositionRisks.test.js index 908528da..c26ee1b9 100644 --- a/YLErpWeb/fe-tests/eodPositionRisks.test.js +++ b/YLErpWeb/fe-tests/eodPositionRisks.test.js @@ -4,7 +4,8 @@ const vm = require('vm'); function loadEodPositionRiskHelpers() { const filePath = path.join(__dirname, '../wwwroot/Scripts/app/swaptrade/EodPositionRisks.js'); - const code = fs.readFileSync(filePath, 'utf8') + '\nmodule.exports = { TradeDirectionFormat };'; + const source = fs.readFileSync(filePath, 'utf8'); + const code = source + '\nmodule.exports = { TradeDirectionFormat, colModelGridEodSwap, colModelGridEodSwapNew, eodSwapGroupConfig, eodSwapRiskNewGroupConfig };'; const sandbox = { module: { exports: {} }, exports: {}, @@ -13,14 +14,25 @@ function loadEodPositionRiskHelpers() { numberFormat() { return function () { }; } + }, + otcformat: { + trading: { + notional() { return ''; }, + StockEqvNotional() { return ''; }, + tradePrice() { return ''; } + } + }, + swapPricePrecision: { + format() { return ''; } } }; vm.runInNewContext(code, sandbox, { filename: filePath }); - return sandbox.module.exports; + return { helpers: sandbox.module.exports, source }; } -const { TradeDirectionFormat } = loadEodPositionRiskHelpers(); +const loaded = loadEodPositionRiskHelpers(); +const { TradeDirectionFormat, colModelGridEodSwap, colModelGridEodSwapNew, eodSwapGroupConfig, eodSwapRiskNewGroupConfig } = loaded.helpers; describe('互换日终持仓交易方向', () => { test.each([ @@ -37,3 +49,54 @@ describe('互换日终持仓交易方向', () => { expect(TradeDirectionFormat(1, {}, { eodPosition: { PosiDirection: 0, PositionType: 1 } })).toBe(''); }); }); + +describe('EQD-7084 新框架合约前端接线', () => { + test('新列模型保留旧列并追加九个字段,六个展示列绑定 NewFields', () => { + const oldColumns = colModelGridEodSwap(); + const newColumns = colModelGridEodSwapNew(); + const oldNames = oldColumns.map(column => column.name); + const newNames = newColumns.map(column => column.name); + const replacements = { + FloatingUnrealizedPnl: 'NewFields.FloatingUnrealizedPnl', + 'position.InterestPnL': 'NewFields.OrdinaryInterestPnl', + MarginInterestGain: 'NewFields.MarginInterestGain', + MarginInterestLoss: 'NewFields.MarginInterestLoss', + MaturityNettingValuation: 'NewFields.MaturityNettingValuation', + PeriodPaymentValuation: 'NewFields.PeriodPaymentValuation' + }; + const newFields = [ + 'NewFields.UnderlyingDirection', + 'NewFields.UnderlyingCode', + 'NewFields.InitialPrice', + 'NewFields.NotionalQuantity', + 'NewFields.ContractStartDate', + 'NewFields.ContractMaturityDate', + 'NewFields.InterestBenchmark', + 'NewFields.InterestRatePrice', + 'NewFields.OpeningClosingFee' + ]; + + expect(newColumns).toHaveLength(oldColumns.length + 9); + Object.entries(replacements).forEach(([oldName, newName]) => { + expect(newNames).toContain(newName); + expect(newNames).not.toContain(oldName); + expect(newColumns.find(column => column.name === newName).label) + .toBe(oldColumns.find(column => column.name === oldName).label); + }); + oldNames + .filter(oldName => !Object.prototype.hasOwnProperty.call(replacements, oldName)) + .forEach(oldName => expect(newNames).toContain(oldName)); + newFields.forEach(field => expect(newNames).toContain(field)); + }); + + test('index=2 保留旧 endpoint/config,index=3 使用独立 endpoint/config 且界面不启用分组', () => { + expect(loaded.source).toContain("queryurl = '/swaptrade2/EodSwapRiskQuery';"); + expect(loaded.source).toContain("cloumnTargetName = \"eodSwapList\";"); + expect(loaded.source).toContain("queryurl = '/swaptrade2/EodSwapRiskNewQuery';"); + expect(loaded.source).toContain("cloumnTargetName = \"eodSwapRiskNewList\";"); + expect(loaded.source).toContain('eodSwapRiskNewExportColumnNames'); + expect(loaded.source).not.toMatch(/main\.initCollapsibleGroupHeaders\s*\(/); + expect(eodSwapGroupConfig).not.toBe(eodSwapRiskNewGroupConfig); + expect(eodSwapRiskNewGroupConfig.some(group => group.columns.includes('NewFields.InitialPrice'))).toBe(true); + }); +}); diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/EodPositionRisks.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/EodPositionRisks.js index 8d799ab1..3afcd0aa 100644 --- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/EodPositionRisks.js +++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/EodPositionRisks.js @@ -1,6 +1,7 @@ var queryurl = '/swaptrade2/EodPositionRiskQuery'; var cloumnTargetName = "eodSwapPositionList"; var eodSwapExportColumnNames = []; +var eodSwapRiskNewExportColumnNames = []; $(function () { var PostData = {}; $("#DateValueDate").datepicker({ @@ -24,6 +25,18 @@ $(function () { }).map(function (col) { return col.name; }); + } else if (page.tabIndex == 3) { + // 新旧口径并行:独立 endpoint、列设置 key 与标准导出列,避免用户在新 Tab 调列后影响旧报表。 + queryurl = '/swaptrade2/EodSwapRiskNewQuery'; + $("#myTab li:first").removeClass("active"); + $("#myTab li:eq(2)").addClass("active"); + cloumnTargetName = "eodSwapRiskNewList"; + colModelGrid = colModelGridEodSwapNew(); + eodSwapRiskNewExportColumnNames = colModelGrid.filter(function (col) { + return !col.optionHide; + }).map(function (col) { + return col.name; + }); } PostData.ValueDate = $("#DateValueDate").val(); var grid = jQuery('#listGrid').jqGrid({ @@ -44,7 +57,8 @@ $(function () { pagerpos: 'left', rowNum: 25, rowList: [25, 50, 100, 200, 10000], - footerrow: page.tabIndex == 2, + // 两个框架合约 Tab 都需要承载后端返回的 DV 汇总;普通日终持仓维持原行为。 + footerrow: page.tabIndex == 2 || page.tabIndex == 3, loadComplete: gridComplete, onPaging: onJqgridPaging, grouping: true @@ -687,6 +701,58 @@ function colModelGridEodSwap() { return colModelGrid; } +// EQD-7084 新框架合约:复用旧列定义,只替换新口径字段并追加新增列。 +function colModelGridEodSwapNew() { + var colModelGrid = colModelGridEodSwap().map(function (col) { + return Object.assign({}, col); + }); + + // 替换后仍保留旧字段 index:后端沿用旧查询处理排序,NewFields 只是显示用的计算字段。 + function replaceColumn(oldName, newName) { + var column = colModelGrid.find(function (col) { return col.name === oldName; }); + if (column) { + column.name = newName; + // 新字段在服务端计算,沿用旧列的数据库排序字段,保持分页/排序请求有效。 + column.index = oldName; + } + } + + function newColumn(name, label, formatter, index) { + return { + name: name, + label: label, + index: index || name, + width: 150, + align: 'center', + formatter: formatter, + sortable: false + }; + } + + // 插入点必须在原“名义本金”前,使新需求字段与旧字段的业务阅读顺序、标准导出顺序一致。 + var contractInfoIndex = colModelGrid.findIndex(function (col) { + return col.name === 'position.NotionalValue'; + }); + colModelGrid.splice(contractInfoIndex, 0, + newColumn('NewFields.UnderlyingDirection', '标的多空(浮动端)'), + newColumn('NewFields.UnderlyingCode', '标的代码'), + newColumn('NewFields.InitialPrice', '期初价格', InitialPriceFormat), + newColumn('NewFields.NotionalQuantity', '名义数量', otcformat.trading.notional), + newColumn('NewFields.ContractStartDate', '合约起始日', 'date'), + newColumn('NewFields.ContractMaturityDate', '合约到期日', 'date'), + newColumn('NewFields.InterestBenchmark', '利息端基准'), + newColumn('NewFields.InterestRatePrice', '利率端价格', PercentFormat), + newColumn('NewFields.OpeningClosingFee', '开平仓费用', StockEqvNotionalFormat)); + + replaceColumn('FloatingUnrealizedPnl', 'NewFields.FloatingUnrealizedPnl'); + replaceColumn('position.InterestPnL', 'NewFields.OrdinaryInterestPnl'); + replaceColumn('MarginInterestGain', 'NewFields.MarginInterestGain'); + replaceColumn('MarginInterestLoss', 'NewFields.MarginInterestLoss'); + replaceColumn('MaturityNettingValuation', 'NewFields.MaturityNettingValuation'); + replaceColumn('PeriodPaymentValuation', 'NewFields.PeriodPaymentValuation'); + return colModelGrid; +} + //框架合约分组配置(对应需求《估值模块V1》2.2 字段定义) //columns 使用 colModel.name;组内列在 colModel 中必须连续 var eodSwapGroupConfig = [ @@ -699,14 +765,27 @@ var eodSwapGroupConfig = [ { title: '估值与实现收益', columns: ['position.dv01', 'InterestPaymentMethod', 'MaturityNettingValuation', 'PeriodPaymentValuation', 'position.RealizedPnL'] } ]; +// 新 Tab 页面不渲染可折叠分组表头(产品已要求取消界面分组); +// 此配置只服务“导出标准格式”,因此必须与旧 Tab 分开维护而不能删除。 +var eodSwapRiskNewGroupConfig = [ + { title: '基本信息', columns: ['position.ValueDate', 'AssetBookName', 'ClientName', 'SwapTradeNo', 'StructureType', 'SwapTradeTypeStr', 'UnderlyingType'] }, + { title: '新增字段', columns: ['NewFields.UnderlyingDirection', 'NewFields.UnderlyingCode', 'NewFields.InitialPrice', 'NewFields.NotionalQuantity', 'NewFields.ContractStartDate', 'NewFields.ContractMaturityDate', 'NewFields.InterestBenchmark', 'NewFields.InterestRatePrice', 'NewFields.OpeningClosingFee'] }, + { title: '名义本金', columns: ['position.NotionalValue', 'position.NotionalValueLong', 'position.NotionalValueShort'] }, + { title: '标的市值', columns: ['position.MarketValueLong', 'position.MarketValueShort'] }, + { title: '浮动端', columns: ['NewFields.FloatingUnrealizedPnl', 'PeriodAmount'] }, + { title: '利息端', columns: ['NewFields.OrdinaryInterestPnl'] }, + { title: '保证金', columns: ['position.InitMarginGain', 'position.PostionMarginGain', 'position.InitMarginLoss', 'position.PostionMarginLoss', 'NewFields.MarginInterestGain', 'NewFields.MarginInterestLoss'] }, + { title: '估值与实现收益', columns: ['position.dv01', 'InterestPaymentMethod', 'NewFields.MaturityNettingValuation', 'NewFields.PeriodPaymentValuation', 'position.RealizedPnL'] } +]; + function gridComplete() { var jgrid = $(this); if (arguments[0].Sum) { jgrid.footerData("set", { 'position.dv01': arguments[0].Sum["DV"] }); } - //框架合约Tab:列设置应用完成后补充期间付息提示。 - if (page.tabIndex == 2) { + // 两个框架合约 Tab 均保留 DV footer 与列设置;界面使用普通单层表头。 + if (page.tabIndex == 2 || page.tabIndex == 3) { var defer = main.setcolumnChooser(jgrid, cloumnTargetName); $.when(defer).done(function () { jgrid.jqGrid('setLabel', 'PeriodAmount', null, null, { @@ -734,13 +813,21 @@ function starttradeView(id) { function exportVisibleColumns() { var jgrid = jQuery('#listGrid'); var dateStr = $("#DateValueDate").val() || ''; - var tabName = page.tabIndex == 2 ? '框架合约' : '日终持仓'; + var tabName = page.tabIndex == 2 + ? '框架合约(旧口径)' + : page.tabIndex == 3 ? '框架合约' : '日终持仓'; var fileName = '日终持仓风险_互换_' + tabName + (dateStr ? '_' + dateStr : ''); - if (page.tabIndex != 2) { + if (page.tabIndex != 2 && page.tabIndex != 3) { main.exportVisibleColumnsToExcel(jgrid, fileName, null); return; } + // 虽然新 Tab 不展示分组表头,标准格式导出仍按需求输出分组标题和固定列顺序。 + var groupConfig = page.tabIndex == 3 ? eodSwapRiskNewGroupConfig : eodSwapGroupConfig; + var standardColumnNames = page.tabIndex == 3 + ? eodSwapRiskNewExportColumnNames + : eodSwapExportColumnNames; + layer.open({ type: 1, title: '选择导出方式', @@ -753,7 +840,7 @@ function exportVisibleColumns() { '', success: function (layero, index) { layero.find('.js-export-eod-swap-standard').on('click', function () { - exportEodSwapRows(jgrid, fileName, eodSwapGroupConfig, eodSwapExportColumnNames); + exportEodSwapRows(jgrid, fileName, groupConfig, standardColumnNames); layer.close(index); }); layero.find('.js-export-eod-swap-visible').on('click', function () { @@ -810,6 +897,13 @@ function RealizedPnlFormat(cellValue, options, rowObject) { function StockEqvNotionalFormat(cellValue, options, rowObject) { return otcformat.trading.StockEqvNotional(cellValue); } +function InitialPriceFormat(cellValue, options, rowObject) { + // 类型来自 NewFields(不再是旧 eodPosition 嵌套对象),以便债券按全价精度、非债券按普通价格精度展示。 + var instrumentType = rowObject + && rowObject.NewFields + && rowObject.NewFields.UnderlyingInstrumentType; + return swapPricePrecision.format(cellValue, instrumentType, 'grossPrice'); +} function NullableStockEqvNotionalFormat(cellValue, options, rowObject) { if (cellValue === null || cellValue === undefined || cellValue === '') { return ''; From 670ff1e012b8e924ee2b58b9931a0dcd641b5fa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E5=86=B0=E5=86=B0?= <437394478@qq.com> Date: Tue, 25 Aug 2026 14:45:15 +0800 Subject: [PATCH 05/12] =?UTF-8?q?feature:=20=E7=BB=93=E7=AE=97=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E5=8D=95=E4=B8=AD=E5=AD=97=E6=AE=B5=E5=8F=96=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SwapSettlementBillRowBuilder.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/YLErpDAL/Modules/TradeModule/DocGenerateModule/SwapSettlementBillRowBuilder.cs b/YLErpDAL/Modules/TradeModule/DocGenerateModule/SwapSettlementBillRowBuilder.cs index 2f49e8e9..45a8497e 100644 --- a/YLErpDAL/Modules/TradeModule/DocGenerateModule/SwapSettlementBillRowBuilder.cs +++ b/YLErpDAL/Modules/TradeModule/DocGenerateModule/SwapSettlementBillRowBuilder.cs @@ -70,8 +70,7 @@ public static class SwapSettlementBillRowBuilder ?? throw new ServiceException("结算单缺少支付日"); // 将同一事件的普通利息与预付金利息分开;预付金本金仅统计结算日前已生效的腿。 - var floatingPosition = positions.FirstOrDefault(x => x.PositionType > 0) - ?? positions.FirstOrDefault(x => !ConsTrade.InterestMarginModels.Contains(x.InterestMode)); + var settlementPosition = positions.FirstOrDefault(x => x.id == input.CloseFlow.PositionId); var interestEvents = eventFlows .Where(x => ConsTrade.InterestModels.Contains(x.InterestMode)) .ToList(); @@ -91,10 +90,12 @@ public static class SwapSettlementBillRowBuilder var periodAmount = -input.CloseFlow.DividendIn; var initialMargin = SumMargin(effectiveMargins, InterestModeEnum.初始预付金); var additionalMargin = SumMargin(effectiveMargins, InterestModeEnum.追加预付金); + var marginBackAmount = marginEvents.Sum(x => x.InterestPrincipal); - // 净额结算按实际轧差项求和;到期结算在净额基础上返还或收取期初、追加预付金。 - var netSettlementAmount = interestAmount + floatingAmount + fee + marginInterest - + (input.IncludePeriodPaymentInNetting ? periodAmount : 0m); + // 沿用原结算单口径:全部事件利息、浮动盈亏和预付金返还本金参与净额结算。 + var netSettlementAmount = -eventFlows.Sum(x => x.InterestClosePnL) + - input.CloseFlow.FloatPnlSum + + marginBackAmount; var maturitySettlementAmount = netSettlementAmount + initialMargin + additionalMargin; var floatRateAbs = input.CloseNotionalValue == 0m ? 0m @@ -119,17 +120,17 @@ public static class SwapSettlementBillRowBuilder InterestRate = interestEvents.Sum(x => x.InterestRate).ToString("0.00%"), PosiNotionalValue = input.CloseNotionalValue.ToString("0.00"), Quantity = input.CloseFlow.Quantity.ToString("0.00"), - DividendIn = isCashBond ? periodAmount.ToString("0.00") : string.Empty, + DividendIn = periodAmount.ToString("0.00"), PeriodDividend = isEtf ? periodAmount.ToString("0.00") : string.Empty, - PosiNetPrice = ((floatingPosition?.PosiGrossPrice ?? 0m) * 100m).ToString("0.00000000"), + PosiNetPrice = ((settlementPosition?.PosiGrossPrice ?? 0m) * 100m).ToString("0.00000000"), InitYtm = isCashBond && input.Trade.InitYtm.HasValue ? input.Trade.InitYtm.Value.ToString("0.####%") : string.Empty, ClosePrice = (input.CloseFlow.TradingAmountAvg * 100m).ToString("0.00000000"), - ExitYtm = isCashBond && input.ExitYtm.HasValue + ExitYtm = input.ExitYtm.HasValue ? input.ExitYtm.Value.ToString("0.0000") : string.Empty, - RateDays = Math.Max(0, (eventDate - startDate).Days + 1).ToString(), + RateDays = Math.Max(0, (eventDate - startDate).Days).ToString(), FloatRateAbs = floatRateAbs.ToString("0.0000%"), FloatRate = floatRateAbs.ToString("0.0000%"), InterestAmount = interestAmount.ToString("0.00"), From 8cea7ee2e4b1d90d0371df46e7acba162c2d2bb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E5=86=B0=E5=86=B0?= <437394478@qq.com> Date: Tue, 25 Aug 2026 15:31:53 +0800 Subject: [PATCH 06/12] =?UTF-8?q?feature:=20=E6=96=B0=E5=A2=9E=E6=A0=87?= =?UTF-8?q?=E7=9A=84=E6=97=B6=20=E5=9F=BA=E9=87=91=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BA=BA=E8=AE=BE=E7=BD=AE=E4=B8=BA=E5=BF=85=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YLErpWeb/Controllers/underlying_managerController.cs | 9 ++++++++- .../underlying_manager/underlying_managerEdit.cshtml | 4 ++-- .../wwwroot/Scripts/app/underlying/underlyingedit.js | 6 ++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/YLErpWeb/Controllers/underlying_managerController.cs b/YLErpWeb/Controllers/underlying_managerController.cs index 60dda498..69ba8b66 100644 --- a/YLErpWeb/Controllers/underlying_managerController.cs +++ b/YLErpWeb/Controllers/underlying_managerController.cs @@ -473,7 +473,14 @@ namespace YLErp.Web.Controllers { return JsonError("资产类型 必须填写"); } - + + // 重点功能:基金及基金专户的基金管理人必须填写,后端校验避免绕过页面校验。 + model.InvestAdvisorName = model.InvestAdvisorName?.Trim(); + if (model.UnderlyingInstrumentType == ConsGlobal.InstrumentType.Fund && string.IsNullOrEmpty(model.InvestAdvisorName)) + { + return JsonError("基金管理人 必须填写"); + } + model.EtfSubType = model.EtfSubType?.Trim(); if (model.UnderlyingInstrumentType == ConsGlobal.InstrumentType.Fund && string.IsNullOrEmpty(model.EtfSubType)) { diff --git a/YLErpWeb/Views/underlying_manager/underlying_managerEdit.cshtml b/YLErpWeb/Views/underlying_manager/underlying_managerEdit.cshtml index 67e3501d..44bce52a 100644 --- a/YLErpWeb/Views/underlying_manager/underlying_managerEdit.cshtml +++ b/YLErpWeb/Views/underlying_manager/underlying_managerEdit.cshtml @@ -327,10 +327,10 @@ - @* 仅基金及基金专户维护基金管理人 *@ + @* 重点功能:仅基金及基金专户维护基金管理人,且该字段必填 *@
    - + *
    @* 重点功能:ETF 子类由系统字典维护,使用 Fund 类控制显隐,并固定放在表单最后 *@ diff --git a/YLErpWeb/wwwroot/Scripts/app/underlying/underlyingedit.js b/YLErpWeb/wwwroot/Scripts/app/underlying/underlyingedit.js index a5a2724d..dd80db28 100644 --- a/YLErpWeb/wwwroot/Scripts/app/underlying/underlyingedit.js +++ b/YLErpWeb/wwwroot/Scripts/app/underlying/underlyingedit.js @@ -135,6 +135,12 @@ function saveData() { return main.alert("资产品种类型 必须填写!"); } + // 重点功能:基金及基金专户必须填写基金管理人,空格内容也视为未填写。 + if (data.UnderlyingInstrumentType === "Fund" && + (!data.InvestAdvisorName || !data.InvestAdvisorName.trim())) { + return main.alert("基金管理人 必须填写!"); + } + // 重点功能:ETF 子类只对基金及基金专户显示并必填,先在前端阻止无效提交。 if (data.UnderlyingInstrumentType === "Fund" && !data.EtfSubType) { return main.alert("ETF 子类 必须填写!"); From f7766fb72360e1805678042f6e1112fc8de9ca96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=90=8D=E9=94=90?= <1565842059@qq.com> Date: Tue, 25 Aug 2026 15:39:01 +0800 Subject: [PATCH 07/12] =?UTF-8?q?fix(dividend):=20=E5=85=AC=E5=8F=B8?= =?UTF-8?q?=E8=A1=8C=E4=B8=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 债券付息查询/BondPayment/BondPaymentList这个界面 不再查询公司行为除权表 - 公司行为事件的说明 格式化一下变为:调整前:名义本金:XXXX  期初标的价格:XXXX 持仓数量:XXXX 调整后:名义本金:XXXX  期初标的价格:XXXX 持仓数量:XXXX - 报错信息修改:当某个标的的除权除息数据仍有交易引用时 则修改标的公司行为数据时则提示“不可修改,有交易【交易编号】使用了该条除权除息数据”。 --- .../BondPaymentListQueryBoundaryTest.cs | 47 +++++++++++++++ .../DividendInfoEditGuardMessageTest.cs | 59 +++++++++++++++++++ .../CorporateActionEventLifecycleTest.cs | 4 +- .../Modules/EodModule/BondPaymentService.cs | 38 +----------- .../Modules/SwapModule/SwapEventService.cs | 38 ++---------- .../TradeModule/DealModule/DividendService.cs | 55 ++++++++++------- .../Controllers/ex_dividend_infoController.cs | 6 +- 7 files changed, 154 insertions(+), 93 deletions(-) create mode 100644 UnitTestProject/Modules/EodModule/BondPaymentListQueryBoundaryTest.cs create mode 100644 UnitTestProject/Modules/EodModule/DividendInfoEditGuardMessageTest.cs diff --git a/UnitTestProject/Modules/EodModule/BondPaymentListQueryBoundaryTest.cs b/UnitTestProject/Modules/EodModule/BondPaymentListQueryBoundaryTest.cs new file mode 100644 index 00000000..9d09352f --- /dev/null +++ b/UnitTestProject/Modules/EodModule/BondPaymentListQueryBoundaryTest.cs @@ -0,0 +1,47 @@ +using System; +using System.IO; + +namespace YLErp.Modules.EodModule +{ + [TestClass] + public class BondPaymentListQueryBoundaryTest + { + [TestMethod] + public void SearchList_OnlyQueriesBondPaymentTable() + { + var source = ReadBondPaymentServiceSource(); + var searchList = ExtractMethod(source, "public SearchListResult SearchList", "public BondPayment SaveBondPayment"); + + Assert.IsFalse( + searchList.Contains("ex_dividend_info", StringComparison.Ordinal), + "债券付息列表只能查询 bond_payment_info,不能把公司行为除权表拼入展示结果。"); + StringAssert.Contains(searchList, "DbContext.bondPayment"); + } + + private static string ExtractMethod(string source, string startMarker, string endMarker) + { + var start = source.IndexOf(startMarker, StringComparison.Ordinal); + Assert.IsTrue(start >= 0, $"Could not find method: {startMarker}"); + var end = source.IndexOf(endMarker, start + startMarker.Length, StringComparison.Ordinal); + Assert.IsTrue(end >= 0, $"Could not find method end: {endMarker}"); + return source.Substring(start, end - start); + } + + private static string ReadBondPaymentServiceSource() + { + var directory = new DirectoryInfo(AppContext.BaseDirectory); + while (directory != null) + { + var path = Path.Combine(directory.FullName, "YLErpDAL", "Modules", "EodModule", "BondPaymentService.cs"); + if (File.Exists(path)) + { + return File.ReadAllText(path); + } + directory = directory.Parent; + } + + Assert.Fail("Could not locate BondPaymentService.cs from the test output directory."); + return string.Empty; + } + } +} diff --git a/UnitTestProject/Modules/EodModule/DividendInfoEditGuardMessageTest.cs b/UnitTestProject/Modules/EodModule/DividendInfoEditGuardMessageTest.cs new file mode 100644 index 00000000..d0a6e001 --- /dev/null +++ b/UnitTestProject/Modules/EodModule/DividendInfoEditGuardMessageTest.cs @@ -0,0 +1,59 @@ +using System; +using System.IO; + +namespace YLErp.Modules.EodModule +{ + [TestClass] + public class DividendInfoEditGuardMessageTest + { + [TestMethod] + public void AddDividendInfos_ReportsTheReferencingTradeNumberWhenAnExecutedActionIsEdited() + { + var source = ReadDividendServiceSource(); + var addDividendInfos = ExtractMethod(source, "public bool AddDividendInfos", "public bool checkDividendInfoExecuteStatus"); + var controllerSource = ReadExDividendInfoControllerSource(); + var deleteDividend = ExtractMethod(controllerSource, "public JsonResult deleteDividend", "public JsonResult ImportDividendInfo"); + + Assert.IsTrue(addDividendInfos.Contains("不可修改,有交易【", StringComparison.Ordinal)); + Assert.IsTrue(addDividendInfos.Contains("使用了该条除权除息数据", StringComparison.Ordinal)); + Assert.IsTrue(deleteDividend.Contains("不可修改,有交易【", StringComparison.Ordinal)); + Assert.IsTrue(deleteDividend.Contains("使用了该条除权除息数据", StringComparison.Ordinal)); + } + + private static string ExtractMethod(string source, string startMarker, string endMarker) + { + var start = source.IndexOf(startMarker, StringComparison.Ordinal); + Assert.IsTrue(start >= 0, $"Could not find method: {startMarker}"); + var end = source.IndexOf(endMarker, start + startMarker.Length, StringComparison.Ordinal); + Assert.IsTrue(end >= 0, $"Could not find method end: {endMarker}"); + return source.Substring(start, end - start); + } + + private static string ReadDividendServiceSource() + { + return ReadSource("YLErpDAL", "Modules", "TradeModule", "DealModule", "DividendService.cs"); + } + + private static string ReadExDividendInfoControllerSource() + { + return ReadSource("YLErpWeb", "Controllers", "ex_dividend_infoController.cs"); + } + + private static string ReadSource(params string[] relativePath) + { + var directory = new DirectoryInfo(AppContext.BaseDirectory); + while (directory != null) + { + var path = Path.Combine(new[] { directory.FullName }.Concat(relativePath).ToArray()); + if (File.Exists(path)) + { + return File.ReadAllText(path); + } + directory = directory.Parent; + } + + Assert.Fail("Could not locate DividendService.cs from the test output directory."); + return string.Empty; + } + } +} diff --git a/UnitTestProject/Modules/SwapModule/CorporateActionEventLifecycleTest.cs b/UnitTestProject/Modules/SwapModule/CorporateActionEventLifecycleTest.cs index 7e202a38..5df141d4 100644 --- a/UnitTestProject/Modules/SwapModule/CorporateActionEventLifecycleTest.cs +++ b/UnitTestProject/Modules/SwapModule/CorporateActionEventLifecycleTest.cs @@ -37,8 +37,8 @@ namespace YLErp.Modules.SwapModule Assert.IsFalse(snapshot.Applied); var reason = SwapEventService.BuildCorporateActionEventReason(snapshot); - StringAssert.Contains(reason, "BeforeQuantity=1000"); - StringAssert.Contains(reason, "AfterQuantity=0"); + StringAssert.Contains(reason, "调整前:名义本金:100000 期初标的价格:100 持仓数量:1000"); + StringAssert.Contains(reason, "调整后:名义本金:0 期初标的价格:0 持仓数量:0"); } [TestMethod] diff --git a/YLErpDAL/Modules/EodModule/BondPaymentService.cs b/YLErpDAL/Modules/EodModule/BondPaymentService.cs index 19366db5..5b6f03ce 100644 --- a/YLErpDAL/Modules/EodModule/BondPaymentService.cs +++ b/YLErpDAL/Modules/EodModule/BondPaymentService.cs @@ -59,43 +59,7 @@ namespace YLErp.Modules.EodModule create_time = source.create_time, update_time = source.update_time }; - // 不再依赖 bond-sync 镜像:Stock/Fund 公司行为直接作为展示行返回。 - // 展示金额按“每 10 份派现金额”换算为 GiveCashAmount / 10;EOD 计算仍使用 - // GetBondPayments 的内部单位口径,不受此处展示换算影响。 - var corporateQuery = from un in queryUn - join dividend in DbContext.ex_dividend_info.AsNoTracking() - on un.UnderlyingCode equals dividend.UnderlyingCode - where dividend.ValidStatus - && dividend.EffectiveDate.HasValue - && dividend.EffectiveDate.Value >= valueDtStart - && dividend.EffectiveDate.Value < valueDtEnd - && dividend.GiveCashAmount != 0 - && (string.IsNullOrEmpty(req.UnderlyingCode) - || dividend.UnderlyingCode.Contains(req.UnderlyingCode)) - && (un.UnderlyingInstrumentType == ConsGlobal.InstrumentType.Stock - || un.UnderlyingInstrumentType == ConsGlobal.InstrumentType.Fund) - && (string.IsNullOrEmpty(req.DataSource) - || "公司行为除权表".Contains(req.DataSource)) - select new BondPaymentDto - { - id = -dividend.id, - channel_source = "公司行为除权表", - MarketName = un.MarketName, - security_id = un.UnderlyingCode, - symbol = un.UnderlyingName, - coupon_rate = null, - payment_date = dividend.EffectiveDate, - payment_interest = dividend.GiveCashAmount / 10m, - payment_parvalue = null, - paying_price = dividend.GiveCashAmount / 10m, - create_time = dividend.OptDate, - update_time = dividend.OptDate - }; - // EF Core 无法翻译两个对 BondPaymentDto 继承属性赋值集合不完全一致的投影 - // 直接 Concat;分别执行后在内存合并,不改变两组查询的筛选口径。 - var rows = query.ToList(); - rows.AddRange(corporateQuery.ToList()); - var result = rows.AsQueryable().ToSearchList(req); + var result = query.ToSearchList(req); return result; } diff --git a/YLErpDAL/Modules/SwapModule/SwapEventService.cs b/YLErpDAL/Modules/SwapModule/SwapEventService.cs index 711bc06f..935bda97 100644 --- a/YLErpDAL/Modules/SwapModule/SwapEventService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapEventService.cs @@ -247,8 +247,8 @@ namespace YLErp.Modules.SwapModule } /// - /// 公司行为说明使用稳定的键值格式,完整保留调整前后名义本金、价格、数量、 - /// 待实现分红和现金流变化,操作历史无需重新计算即可核对。 + /// 公司行为说明仅展示调整前后的名义本金、期初标的价格和持仓数量, + /// 便于操作历史直接比对持仓基线。 /// public static string BuildCorporateActionEventReason(CorporateActionEventData data) { @@ -257,37 +257,11 @@ namespace YLErp.Modules.SwapModule return "公司行为快照为空"; } - // 使用 InvariantCulture 固定小数与日期格式,说明文本不随服务器区域设置变化。 + // 使用 InvariantCulture 固定小数格式,说明文本不随服务器区域设置变化。 string D(decimal value) => value.ToString(CultureInfo.InvariantCulture); - string Date(DateTime? value) => value.HasValue - ? value.Value.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) - : ""; - - return string.Join("; ", new[] - { - $"公司行为[{data.UnderlyingCode}]", - $"ExDividendDate={Date(data.ExDividendDate)}", - $"EffectiveDate={Date(data.EffectiveDate)}", - $"ExDividendInfoId={data.ExDividendInfoId}", - $"PositionId={data.PositionId}", - $"GiveCashAmount={D(data.GiveCashAmount)}", - $"GiveShareAmount={D(data.GiveShareAmount)}", - $"Split={(data.Split.HasValue ? D(data.Split.Value) : "")}", - $"RationedSharesAmount={D(data.RationedSharesAmount)}", - $"RationedSharesPrice={D(data.RationedSharesPrice)}", - "调整前", - $"BeforeNotional={D(data.BeforeNotional)}", - $"BeforePrice={D(data.BeforePrice)}", - $"BeforeQuantity={D(data.BeforeQuantity)}", - $"BeforePendingDividend={D(data.BeforePendingDividend)}", - "调整后", - $"AfterNotional={D(data.AfterNotional)}", - $"AfterPrice={D(data.AfterPrice)}", - $"AfterQuantity={D(data.AfterQuantity)}", - $"AfterPendingDividend={D(data.AfterPendingDividend)}", - $"CashFlowChange={D(data.CashFlowChange)}", - $"Applied={data.Applied}" - }); + return $"调整前:名义本金:{D(data.BeforeNotional)} 期初标的价格:{D(data.BeforePrice)} 持仓数量:{D(data.BeforeQuantity)}" + + Environment.NewLine + + $"调整后:名义本金:{D(data.AfterNotional)} 期初标的价格:{D(data.AfterPrice)} 持仓数量:{D(data.AfterQuantity)}"; } public void DeleteEvent(int tradeId) diff --git a/YLErpDAL/Modules/TradeModule/DealModule/DividendService.cs b/YLErpDAL/Modules/TradeModule/DealModule/DividendService.cs index fedf0c00..1deac603 100644 --- a/YLErpDAL/Modules/TradeModule/DealModule/DividendService.cs +++ b/YLErpDAL/Modules/TradeModule/DealModule/DividendService.cs @@ -1159,9 +1159,10 @@ namespace YLErp.Modules.TradeModule.DealModule } else { - if (checkDividendInfoExecuteStatus(dividend)) + var executingTradeNumber = GetDividendInfoExecutingTradeNumber(dividend); + if (!string.IsNullOrWhiteSpace(executingTradeNumber)) { - errMsg = $"{dividend.UnderlyingCode} {dividend.ExDividendDate?.ToString("yyyy-MM-dd")}除权信息保存失败,该信息已被执行,不允许修改!"; + errMsg = $"不可修改,有交易【{executingTradeNumber}】使用了该条除权除息数据"; return false; } var conflictingDividend = FindExDividendByBusinessKey(underlying.id, itemDate, dividend.id); @@ -1223,6 +1224,14 @@ namespace YLErp.Modules.TradeModule.DealModule /// /// public bool checkDividendInfoExecuteStatus(ex_dividend_info info) + { + return !string.IsNullOrWhiteSpace(GetDividendInfoExecutingTradeNumber(info)); + } + + /// + /// 返回仍在引用已执行公司行为的交易编号;无引用时返回空字符串。 + /// + public string GetDividendInfoExecutingTradeNumber(ex_dividend_info info) { // TRS 公司行为以 EffectiveDate 为真正生效边界。登记日创建待生效事件不应锁定 // 维护;只有交易已经完成 EffectiveDate(例如收盘到 7 月 30 日,而真实除权日为 @@ -1230,34 +1239,37 @@ namespace YLErp.Modules.TradeModule.DealModule if (info?.EffectiveDate.HasValue == true) { var effectiveDate = info.EffectiveDate.Value.Date; - var trsTradeIds = DbContext.trade + var trsTrades = DbContext.trade .Where(x => x.ValidState != ConsGlobal.InValid && x.TradeType == "收益互换" && x.UnderlyingCode == info.UnderlyingCode && x.TradeDate <= effectiveDate && x.ExerciseDate >= effectiveDate) - .Select(x => x.id) + .Select(x => new { x.id, x.TradeNumber }) .ToList(); - if (trsTradeIds.Count > 0) + if (trsTrades.Count > 0) { // 是否仍被交易引用以当前有效 EOD 为准。公司行为事件本身是不可篡改 // 历史,交易回退后仍会保留;若仅凭 Applied 事件锁定,回退到登记日前 // 也无法纠错。生效日及以后还有有效 EOD 才表示当前仍已执行。 - var hasAppliedEod = DbContext.eod_swap_position.Any(x => + var trsTradeIds = trsTrades.Select(x => x.id).ToList(); + var appliedTradeId = DbContext.eod_swap_position.Where(x => trsTradeIds.Contains(x.SwapTradeId) && !x.Invalid && x.UnderlyingCode == info.UnderlyingCode - && x.ValueDate >= effectiveDate); - if (hasAppliedEod) + && x.ValueDate >= effectiveDate) + .Select(x => x.SwapTradeId) + .FirstOrDefault(); + if (appliedTradeId > 0) { - return true; + return trsTrades.First(x => x.id == appliedTradeId).TradeNumber; } // EffectiveDate 已存在时,当前有效 EOD 是唯一执行状态来源。 // 回退会清理生效日及之后的 EOD,但不会删除 eodStatus 或不可篡改的 // 公司行为审计事件;此处不能继续落入旧的登记日 eodStatus 判断, // 否则交易已回退仍会被错误判定为“已执行”而无法修改。 - return false; + return string.Empty; } } @@ -1268,20 +1280,22 @@ namespace YLErp.Modules.TradeModule.DealModule var tradeQuery = from t in DbContext.trade.Where(O => O.UnderlyingCode == info.UnderlyingCode && O.TradeDate <= info.ExDividendDate && O.ExerciseDate >= info.ExDividendDate && O.DividendDate >= O.TradeDate) join et in DbContext.eod_trade.Where(O => ConsTrade.LiveTradeStatusList.Contains(O.TradeStatus)) on new { t.id, ValueDate = t.TradeDate.Value } equals new { id = et.TradeId, et.ValueDate } - select et.id; - if (tradeQuery.Any()) + select t.TradeNumber; + var executingTradeNumber = tradeQuery.FirstOrDefault(); + if (!string.IsNullOrWhiteSpace(executingTradeNumber)) { - return true; + return executingTradeNumber; } //查询篮子标的对应交易是否执行过收盘操作; var umList = DataCacheProvider.GetUnderlyingDataSource().AsQueryable(O => O.CommodityCode == "篮子标的" && O.SubData != null && O.SubData.Contains(info.UnderlyingCode)).Select(O => O.UnderlyingCode).ToArray(); tradeQuery = from t in DbContext.trade.Where(O => umList.Contains(O.UnderlyingCode) && O.TradeDate <= info.ExDividendDate && O.ExerciseDate >= info.ExDividendDate && O.DividendDate >= O.TradeDate) join et in DbContext.eod_trade.Where(O => ConsTrade.LiveTradeStatusList.Contains(O.TradeStatus)) on new { t.id, ValueDate = t.TradeDate.Value } equals new { id = et.TradeId, et.ValueDate } - select et.id; - if (tradeQuery.Any()) + select t.TradeNumber; + executingTradeNumber = tradeQuery.FirstOrDefault(); + if (!string.IsNullOrWhiteSpace(executingTradeNumber)) { - return true; + return executingTradeNumber; } //查询多标的对应交易是否执行过收盘操作; tradeQuery = from ts in DbContext.trade_swap_detail.Where(O => O.UnderlyingCode == info.UnderlyingCode) @@ -1289,13 +1303,14 @@ namespace YLErp.Modules.TradeModule.DealModule on ts.TradeId equals t.id join et in DbContext.eod_trade.Where(O => ConsTrade.LiveTradeStatusList.Contains(O.TradeStatus)) on new { t.id, ValueDate = t.TradeDate.Value } equals new { id = et.TradeId, et.ValueDate } - select et.id; - if (tradeQuery.Any()) + select t.TradeNumber; + executingTradeNumber = tradeQuery.FirstOrDefault(); + if (!string.IsNullOrWhiteSpace(executingTradeNumber)) { - return true; + return executingTradeNumber; } } - return false; + return string.Empty; } public List QueryDividendTrade(DividendTradeReq req) diff --git a/YLErpWeb/Controllers/ex_dividend_infoController.cs b/YLErpWeb/Controllers/ex_dividend_infoController.cs index e8db3bb8..c731fc17 100644 --- a/YLErpWeb/Controllers/ex_dividend_infoController.cs +++ b/YLErpWeb/Controllers/ex_dividend_infoController.cs @@ -105,9 +105,11 @@ namespace YLErp.Web.Controllers { return JsonError("未找到有效的除权除息信息"); } - if (new DividendService(CurUser).checkDividendInfoExecuteStatus(r)) + var dividendService = new DividendService(CurUser); + var executingTradeNumber = dividendService.GetDividendInfoExecutingTradeNumber(r); + if (!string.IsNullOrWhiteSpace(executingTradeNumber)) { - return JsonError("该条除权信息已被执行,不允许删除!"); + return JsonError($"不可修改,有交易【{executingTradeNumber}】使用了该条除权除息数据"); } else { From 336cc3d88bf02fdcb820ba8bddd8d3d050327e59 Mon Sep 17 00:00:00 2001 From: tengyufan <1532636164@qq.com> Date: Tue, 25 Aug 2026 16:07:21 +0800 Subject: [PATCH 08/12] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9ETRS=E5=90=88?= =?UTF-8?q?=E7=BA=A6=E6=97=A5=E7=BB=88Kafka=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在日终任务的逐日循环中,于当日收盘、风险监控和日终文件生成完成后, 按 valueDate 推送一条 TRS 合约全量快照;区间收盘逐日推送,空日推送空快照。 - 基于 eod_swap、trade、eod_swap_position、swap_position 组装合约字段, Kafka Key 使用 yyyy-MM-dd 格式的 valueDate。 - 新增带 Key 的 Kafka 发送重载;保留原有无 Key 发送及其吞异常行为,避免影响既有调用。 - 推送失败最多尝试 3 次;最终失败记录 Error 日志,并按 eod_swap.id 写入 push_status, 空快照失败使用 record_id=0。 - 增加 ContractTopic 配置,默认及各部署环境使用 onederiv.trs.contract.v1。 - 增加定向单测,覆盖空快照、区间逐日推送、重试成功、三次失败和字段映射。 --- Framework/YLErp.Core/DBModels/PushStatus.cs | 50 ++++ .../TrsContractKafkaPushServiceTest.cs | 210 ++++++++++++++++ YLErpDAL/Abstract/IKafkaProduce.cs | 2 + YLErpDAL/DataBase/YLContext.cs | 1 + YLErpDAL/Helpers/KafkaProduceHelper.cs | 22 +- YLErpDAL/Model/KafkaConfig.cs | 2 +- .../SettlementModule/EodTaskRunner.cs | 29 +++ .../EodModule/TrsContractKafkaPushService.cs | 233 ++++++++++++++++++ YLErpWeb/appsettings.dev.json | 1 + YLErpWeb/appsettings.local.json | 1 + YLErpWeb/appsettings.prod.json | 1 + YLErpWeb/appsettings.uat.json | 1 + 12 files changed, 546 insertions(+), 7 deletions(-) create mode 100644 Framework/YLErp.Core/DBModels/PushStatus.cs create mode 100644 UnitTestProject/Modules/EodModule/TrsContractKafkaPushServiceTest.cs create mode 100644 YLErpDAL/Modules/EodModule/TrsContractKafkaPushService.cs diff --git a/Framework/YLErp.Core/DBModels/PushStatus.cs b/Framework/YLErp.Core/DBModels/PushStatus.cs new file mode 100644 index 00000000..547fd6cf --- /dev/null +++ b/Framework/YLErp.Core/DBModels/PushStatus.cs @@ -0,0 +1,50 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace YLErp.DBModels +{ + public enum PushStateEnum + { + 待推送 = 0, + 成功 = 1, + 失败 = 2 + } + + /// + /// 外发推送失败状态。只记录定位信息,不保存报文。 + /// + [Table("push_status")] + public class PushStatus + { + [Key] + [DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public long id { get; set; } + + [Column("value_date")] + public DateTime ValueDate { get; set; } + + [Column("push_type")] + public int PushType { get; set; } + + [Column("record_id")] + public long RecordId { get; set; } + + [Column("state")] + public PushStateEnum State { get; set; } + + [Column("retry_count")] + public int RetryCount { get; set; } + + [Column("last_error")] + public string LastError { get; set; } + + [Column("push_time")] + public DateTime? PushTime { get; set; } + + [Column("create_time")] + public DateTime CreateTime { get; set; } + + [Column("update_time")] + public DateTime? UpdateTime { get; set; } + } +} diff --git a/UnitTestProject/Modules/EodModule/TrsContractKafkaPushServiceTest.cs b/UnitTestProject/Modules/EodModule/TrsContractKafkaPushServiceTest.cs new file mode 100644 index 00000000..88ffb133 --- /dev/null +++ b/UnitTestProject/Modules/EodModule/TrsContractKafkaPushServiceTest.cs @@ -0,0 +1,210 @@ +using YLErp.Abstract; +using YLErp.Helpers; +using YLErp.Modules.EodModule; + +namespace YLErp.Modules.EodModuleTests +{ + [TestClass] + public class TrsContractKafkaPushServiceTest + { + [TestMethod] + public void Push_空日快照_发送一条空消息并使用业务日期作为Key() + { + var valueDate = new DateTime(2026, 8, 24); + var producer = new RecordingKafkaProducer(); + var service = CreateService(producer, valueDate); + + service.Push(valueDate); + + Assert.AreEqual(1, producer.Messages.Count); + Assert.AreEqual("onederiv.trs.contract.v1", producer.Messages[0].Topic); + Assert.AreEqual("2026-08-24", producer.Messages[0].Key); + var payload = JsonHelper.Deserialize(producer.Messages[0].Message); + Assert.AreEqual("2026-08-24", payload.ValueDate); + Assert.AreEqual(0, payload.ContractCount); + Assert.AreEqual(0, payload.Contracts.Count); + } + + [TestMethod] + public void Push_区间内每天分别调用_每个日期各发送一条快照() + { + var valueDates = new[] + { + new DateTime(2026, 8, 20), + new DateTime(2026, 8, 21), + new DateTime(2026, 8, 24) + }; + var producer = new RecordingKafkaProducer(); + var service = new TestableTrsContractKafkaPushService(producer, valueDates.ToDictionary(x => x, CreateEmptySnapshot)); + + foreach (var valueDate in valueDates) + { + service.Push(valueDate); + } + + CollectionAssert.AreEqual( + new[] { "2026-08-20", "2026-08-21", "2026-08-24" }, + producer.Messages.Select(x => x.Key).ToArray()); + CollectionAssert.AreEqual( + new[] { "2026-08-20", "2026-08-21", "2026-08-24" }, + producer.Messages.Select(x => JsonHelper.Deserialize(x.Message).ValueDate).ToArray()); + } + + [TestMethod] + public void Push_首次失败后成功_停止重试且不记录最终失败() + { + var valueDate = new DateTime(2026, 8, 24); + var producer = new RecordingKafkaProducer { FailuresBeforeSuccess = 1 }; + var service = CreateService(producer, valueDate); + + service.Push(valueDate); + + Assert.AreEqual(2, producer.AttemptCount); + Assert.AreEqual(1, producer.Messages.Count); + Assert.AreEqual(0, service.FailureRecords.Count); + } + + [TestMethod] + public void Push_连续失败三次_记录最终失败和三次尝试() + { + var valueDate = new DateTime(2026, 8, 24); + var producer = new RecordingKafkaProducer { FailuresBeforeSuccess = int.MaxValue }; + var service = CreateService(producer, valueDate); + + service.Push(valueDate); + + Assert.AreEqual(3, producer.AttemptCount); + Assert.AreEqual(0, producer.Messages.Count); + Assert.AreEqual(1, service.FailureRecords.Count); + Assert.AreEqual(valueDate, service.FailureRecords[0].ValueDate); + Assert.AreEqual(3, service.FailureRecords[0].RetryCount); + Assert.IsInstanceOfType(service.FailureRecords[0].Exception, typeof(InvalidOperationException)); + } + + [TestMethod] + public void BuildContract_字段使用日终快照和约定来源() + { + var valueDate = new DateTime(2026, 8, 24); + var eodSwap = new eod_swap + { + id = 10, + ValueDate = valueDate, + SwapTradeId = 7, + SwapTradeNo = "TRS-001", + BookId = 3, + ClientId = 8, + NotionalValue = 1000000m, + dv01 = 12.34m, + InitMarginGain = 100m, + InitMarginLoss = 0m + }; + var trade = new trade + { + id = 7, + UnderlyingCode = "600000.SH", + UnderlyingAssetName = "浦发银行", + UnderlyingInstrumentType = "Stock", + StartDate = new DateTime(2026, 8, 1), + ExerciseDate = new DateTime(2027, 8, 1) + }; + var positions = new List + { + new() { SwapTradeId = 7, PositionId = 101, UnderlyingCode = "600000.SH", PositionType = 1 }, + new() { SwapTradeId = 7, PositionId = 102, InterestMode = (int)InterestModeEnum.固定值, InterestRateDefault = 0.0123m, InterestDirection = 2 } + }; + var swapPositions = new Dictionary + { + [101] = new() { id = 101, category_tag = "互换利率" }, + [102] = new() { id = 102, category_tag = "互换利率" } + }; + + var item = TrsContractKafkaPushService.BuildContract( + eodSwap, + new Dictionary { [7] = trade }, + positions, + swapPositions); + + Assert.AreEqual("2026-08-24", item.TradeDate); + Assert.AreEqual(3, item.BookId); + Assert.AreEqual("TRS-001", item.SwapTradeNo); + Assert.AreEqual(8, item.ClientId); + Assert.AreEqual("600000.SH", item.UnderlyingCode); + Assert.AreEqual("浦发银行", item.UnderlyingName); + Assert.AreEqual("Stock", item.UnderlyingInstrumentType); + Assert.AreEqual(1000000m, item.NotionalValue); + Assert.AreEqual("2026-08-01", item.StartDate); + Assert.AreEqual("2027-08-01", item.MaturityDate); + Assert.AreEqual(12.34m, item.Dv01); + Assert.AreEqual(0.0123m, item.FixedRate); + Assert.AreEqual(2, item.InterestDirection); + Assert.AreEqual(1, item.FloatingDirection); + Assert.AreEqual(100m, item.InitMarginGain); + Assert.AreEqual(0m, item.InitMarginLoss); + } + + private static TestableTrsContractKafkaPushService CreateService(RecordingKafkaProducer producer, DateTime valueDate) + { + return new TestableTrsContractKafkaPushService( + producer, + new Dictionary { [valueDate] = CreateEmptySnapshot(valueDate) }); + } + + private static TrsContractSnapshot CreateEmptySnapshot(DateTime valueDate) + { + return new TrsContractSnapshot + { + SchemaVersion = "v1", + ValueDate = valueDate.ToString("yyyy-MM-dd"), + PushTime = "2026-08-24 12:00:00", + ContractCount = 0, + Contracts = new List() + }; + } + + private sealed class TestableTrsContractKafkaPushService : TrsContractKafkaPushService + { + private readonly IReadOnlyDictionary _snapshots; + + public List<(DateTime ValueDate, int RetryCount, Exception Exception)> FailureRecords { get; } = new(); + + public TestableTrsContractKafkaPushService(IKafkaProduce producer, IReadOnlyDictionary snapshots) + : base(new YLContext(), producer, "onederiv.trs.contract.v1") + { + _snapshots = snapshots; + } + + protected override TrsContractSnapshot BuildSnapshot(DateTime valueDate) + { + return _snapshots[valueDate]; + } + + protected override void RecordFailures(DateTime valueDate, int retryCount, Exception exception) + { + FailureRecords.Add((valueDate, retryCount, exception)); + } + } + + private sealed class RecordingKafkaProducer : IKafkaProduce + { + public int FailuresBeforeSuccess { get; set; } + public int AttemptCount { get; private set; } + public List<(string Topic, string Key, string Message)> Messages { get; } = new(); + + public void Produce(string topic, string message) + { + throw new NotSupportedException(); + } + + public void Produce(string topic, string key, string message) + { + AttemptCount++; + if (AttemptCount <= FailuresBeforeSuccess) + { + throw new InvalidOperationException("Kafka unavailable"); + } + + Messages.Add((topic, key, message)); + } + } + } +} diff --git a/YLErpDAL/Abstract/IKafkaProduce.cs b/YLErpDAL/Abstract/IKafkaProduce.cs index d95e6ddc..a0a78943 100644 --- a/YLErpDAL/Abstract/IKafkaProduce.cs +++ b/YLErpDAL/Abstract/IKafkaProduce.cs @@ -9,5 +9,7 @@ namespace YLErp.Abstract public interface IKafkaProduce { void Produce(string topic, string message); + + void Produce(string topic, string key, string message); } } diff --git a/YLErpDAL/DataBase/YLContext.cs b/YLErpDAL/DataBase/YLContext.cs index dbffc149..1c828a21 100644 --- a/YLErpDAL/DataBase/YLContext.cs +++ b/YLErpDAL/DataBase/YLContext.cs @@ -354,6 +354,7 @@ namespace YLErp.BLL public DbSet eod_swap_position { get; set; } public DbSet swap_event { get; set; } public DbSet eod_swap { get; set; } + public DbSet push_status { get; set; } public DbSet trade_obervation { get; set; } public DbSet SystemLogs { get; set; } diff --git a/YLErpDAL/Helpers/KafkaProduceHelper.cs b/YLErpDAL/Helpers/KafkaProduceHelper.cs index b01955fd..4c5789a3 100644 --- a/YLErpDAL/Helpers/KafkaProduceHelper.cs +++ b/YLErpDAL/Helpers/KafkaProduceHelper.cs @@ -63,19 +63,29 @@ namespace YLErp.Helpers public void Produce(string topic,string message) { - var kafkaMessage = new Message - { - Key=null, - Value = message - }; try { - _producer.ProduceAsync(topic, kafkaMessage).GetAwaiter().GetResult(); + ProduceCore(topic, null, message); } catch (Exception ex) { _logger.Error($"Topic:{topic} send failed",ex); } } + + public void Produce(string topic, string key, string message) + { + ProduceCore(topic, key, message); + } + + private void ProduceCore(string topic, string key, string message) + { + var kafkaMessage = new Message + { + Key = key, + Value = message + }; + _producer.ProduceAsync(topic, kafkaMessage).GetAwaiter().GetResult(); + } } } diff --git a/YLErpDAL/Model/KafkaConfig.cs b/YLErpDAL/Model/KafkaConfig.cs index 341ba482..5cd9cf36 100644 --- a/YLErpDAL/Model/KafkaConfig.cs +++ b/YLErpDAL/Model/KafkaConfig.cs @@ -60,7 +60,7 @@ namespace YLErp.Model /// /// TRS合约数据推送topic(对外,如onebp等) /// - public string ContractTopic { get; set; } = "onederi.trs.onebp.contract.v1"; + public string ContractTopic { get; set; } = "onederiv.trs.contract.v1"; } } diff --git a/YLErpDAL/Modules/EodModule/SettlementModule/EodTaskRunner.cs b/YLErpDAL/Modules/EodModule/SettlementModule/EodTaskRunner.cs index eb3da751..0a9e65fe 100644 --- a/YLErpDAL/Modules/EodModule/SettlementModule/EodTaskRunner.cs +++ b/YLErpDAL/Modules/EodModule/SettlementModule/EodTaskRunner.cs @@ -10,6 +10,12 @@ using YLErp.Modules.SystemModule; using YLErp.Modules.TradeDalModule; using YLErp.Modules.TradeModule.DealModule; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using YieldChain.Commons; +using YLErp.Abstract; +using YLErp.Model; + namespace YLErp.Modules.EodModule.SettlementModule { /// @@ -445,12 +451,35 @@ where {nameof(t.TaskStartTime)}>'{startDateStr}' and {nameof(t.TaskState)}={(int } ClientBalanceUtility.saveClientRiskMonitor(eodTask.ValueDate); new EodFileService(this.OptUser).GenerateFileAfterEod(eodTask.ValueDate); + PushTrsContractSnapshot(eodTask.ValueDate); //执行下一日 eodTask.ValueDate = eodTask.ValueDate.AddDays(1); eodTask.TaskEndTime = DateTime.Now; } } + private void PushTrsContractSnapshot(DateTime valueDate) + { + try + { + var provider = YLServiceLocator.ServiceProvider; + var kafkaProduce = provider?.GetService(); + var kafkaOptions = provider?.GetService>(); + if (kafkaProduce == null || kafkaOptions?.Value == null) + { + LogFactory.GetLogger("TRS合约日终Kafka推送").Error("Kafka service or configuration is unavailable"); + return; + } + + using var pushDbContext = DbContextFactory.GetYLDbContext(); + new TrsContractKafkaPushService(pushDbContext, kafkaProduce, kafkaOptions.Value.ContractTopic).Push(valueDate); + } + catch (Exception ex) + { + LogFactory.GetLogger("TRS合约日终Kafka推送").Error($"TRS contract snapshot task failed, valueDate:{valueDate:yyyy-MM-dd}", ex); + } + } + /// /// 查找第一个可用的任务 /// diff --git a/YLErpDAL/Modules/EodModule/TrsContractKafkaPushService.cs b/YLErpDAL/Modules/EodModule/TrsContractKafkaPushService.cs new file mode 100644 index 00000000..0efc85e1 --- /dev/null +++ b/YLErpDAL/Modules/EodModule/TrsContractKafkaPushService.cs @@ -0,0 +1,233 @@ +using YLErp.Abstract; +using YLErp.BLL; +using YLErp.DBModels; +using YLErp.Helpers; + +namespace YLErp.Modules.EodModule +{ + /// + /// 收盘后按交易日推送 TRS 合约全量快照。 + /// + public class TrsContractKafkaPushService + { + private const string DateFormat = "yyyy-MM-dd"; + private const string DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; + private const string InterestCategory = "互换利率"; + private const int TrsContractPushType = 1; + private const int MaxAttempts = 3; + + private readonly YLContext _dbContext; + private readonly IKafkaProduce _kafkaProduce; + private readonly string _topic; + private readonly IYcLogger _logger; + + public TrsContractKafkaPushService(YLContext dbContext, IKafkaProduce kafkaProduce, string topic) + { + _dbContext = dbContext ?? throw new ArgumentNullException(nameof(dbContext)); + _kafkaProduce = kafkaProduce ?? throw new ArgumentNullException(nameof(kafkaProduce)); + _topic = string.IsNullOrWhiteSpace(topic) ? throw new ArgumentException("Kafka topic is empty", nameof(topic)) : topic; + _logger = LogFactory.GetLogger(nameof(TrsContractKafkaPushService)); + } + + public void Push(DateTime valueDate) + { + valueDate = valueDate.Date; + + TrsContractSnapshot snapshot; + string payload; + try + { + snapshot = BuildSnapshot(valueDate); + payload = JsonHelper.Serialize(snapshot, true, true); + } + catch (Exception ex) + { + _logger.Error($"TRS contract snapshot build failed, valueDate:{valueDate:yyyy-MM-dd}", ex); + RecordFailures(valueDate, 0, ex); + return; + } + + var key = valueDate.ToString(DateFormat); + Exception lastException = null; + for (var attempt = 1; attempt <= MaxAttempts; attempt++) + { + try + { + _kafkaProduce.Produce(_topic, key, payload); + _logger.Info($"TRS contract snapshot sent, valueDate:{key}, topic:{_topic}, count:{snapshot.ContractCount}, attempt:{attempt}"); + return; + } + catch (Exception ex) + { + lastException = ex; + _logger.Error($"TRS contract snapshot send failed, valueDate:{key}, topic:{_topic}, attempt:{attempt}", ex); + } + } + + _logger.Error($"TRS contract snapshot send exhausted retries, valueDate:{key}, topic:{_topic}, attempts:{MaxAttempts}"); + RecordFailures(valueDate, MaxAttempts, lastException); + } + + protected virtual void RecordFailures(DateTime valueDate, int retryCount, Exception exception) + { + try + { + var recordIds = _dbContext.eod_swap + .Where(x => x.ValueDate == valueDate) + .Select(x => x.id) + .ToList(); + if (recordIds.Count == 0) + { + recordIds.Add(0); + } + + var now = DateTime.Now; + var statuses = _dbContext.push_status + .Where(x => x.ValueDate == valueDate + && x.PushType == TrsContractPushType + && recordIds.Contains(x.RecordId)) + .ToList(); + var error = exception?.ToString(); + if (error?.Length > 2000) + { + error = error.Substring(0, 2000); + } + + foreach (var recordId in recordIds) + { + var status = statuses.FirstOrDefault(x => x.RecordId == recordId); + if (status == null) + { + status = new PushStatus + { + ValueDate = valueDate, + PushType = TrsContractPushType, + RecordId = recordId, + CreateTime = now + }; + _dbContext.push_status.Add(status); + } + + status.State = PushStateEnum.失败; + status.RetryCount = retryCount; + status.LastError = error; + status.PushTime = now; + status.UpdateTime = now; + } + + _dbContext.SaveChanges(); + } + catch (Exception ex) + { + _logger.Error($"TRS contract push failure status save failed, valueDate:{valueDate:yyyy-MM-dd}", ex); + } + } + + protected virtual TrsContractSnapshot BuildSnapshot(DateTime valueDate) + { + var eodSwaps = _dbContext.eod_swap + .Where(x => x.ValueDate == valueDate) + .AsNoTracking() + .ToList(); + var tradeIds = eodSwaps.Select(x => x.SwapTradeId).Distinct().ToList(); + var trades = _dbContext.trade + .Where(x => tradeIds.Contains(x.id)) + .AsNoTracking() + .ToDictionary(x => x.id); + var eodPositions = _dbContext.eod_swap_position + .Where(x => x.ValueDate == valueDate && tradeIds.Contains(x.SwapTradeId) && !x.Invalid) + .AsNoTracking() + .ToList(); + var positionIds = eodPositions.Select(x => x.PositionId).Distinct().ToList(); + var swapPositions = _dbContext.swap_position + .Where(x => positionIds.Contains(x.id) && !x.Invalid && x.category_tag == InterestCategory) + .AsNoTracking() + .ToDictionary(x => x.id); + + var contracts = eodSwaps.Select(eodSwap => BuildContract(eodSwap, trades, eodPositions, swapPositions)).ToList(); + return new TrsContractSnapshot + { + SchemaVersion = "v1", + ValueDate = valueDate.ToString(DateFormat), + PushTime = DateTime.Now.ToString(DateTimeFormat), + ContractCount = contracts.Count, + Contracts = contracts + }; + } + + internal static TrsContractSnapshotItem BuildContract( + eod_swap eodSwap, + IReadOnlyDictionary trades, + IReadOnlyCollection eodPositions, + IReadOnlyDictionary swapPositions) + { + if (!trades.TryGetValue(eodSwap.SwapTradeId, out var trade)) + { + throw new InvalidOperationException($"TRS trade not found, swapTradeId:{eodSwap.SwapTradeId}"); + } + + var positions = eodPositions.Where(x => x.SwapTradeId == eodSwap.SwapTradeId).ToList(); + var floating = positions.Where(x => !string.IsNullOrWhiteSpace(x.UnderlyingCode) && swapPositions.ContainsKey(x.PositionId)).ToList(); + var interest = positions.Where(x => string.IsNullOrWhiteSpace(x.UnderlyingCode) + && ConsTrade.InterestModels.Contains(x.InterestMode) + && swapPositions.TryGetValue(x.PositionId, out var swapPosition) + && swapPosition.category_tag == InterestCategory).ToList(); + + if (floating.Count != 1 || interest.Count != 1) + { + throw new InvalidOperationException($"TRS legs invalid, swapTradeId:{eodSwap.SwapTradeId}, floating:{floating.Count}, interest:{interest.Count}"); + } + + var interestLeg = interest[0]; + var floatingLeg = floating[0]; + return new TrsContractSnapshotItem + { + TradeDate = eodSwap.ValueDate.ToString(DateFormat), + BookId = eodSwap.BookId, + SwapTradeNo = eodSwap.SwapTradeNo, + ClientId = eodSwap.ClientId, + UnderlyingCode = trade.UnderlyingCode, + UnderlyingName = trade.UnderlyingAssetName, + UnderlyingInstrumentType = trade.UnderlyingInstrumentType, + NotionalValue = eodSwap.NotionalValue, + Dv01 = eodSwap.dv01 ?? 0, + StartDate = trade.StartDate?.ToString(DateFormat), + MaturityDate = trade.ExerciseDate?.ToString(DateFormat), + FixedRate = interestLeg.InterestRateDefault, + InterestDirection = interestLeg.InterestDirection, + FloatingDirection = floatingLeg.PositionType, + InitMarginGain = eodSwap.InitMarginGain, + InitMarginLoss = eodSwap.InitMarginLoss + }; + } + } + + public class TrsContractSnapshot + { + public string SchemaVersion { get; set; } + public string ValueDate { get; set; } + public string PushTime { get; set; } + public int ContractCount { get; set; } + public List Contracts { get; set; } + } + + public class TrsContractSnapshotItem + { + public string TradeDate { get; set; } + public int BookId { get; set; } + public string SwapTradeNo { get; set; } + public int ClientId { get; set; } + public string UnderlyingCode { get; set; } + public string UnderlyingName { get; set; } + public string UnderlyingInstrumentType { get; set; } + public decimal NotionalValue { get; set; } + public decimal Dv01 { get; set; } + public string StartDate { get; set; } + public string MaturityDate { get; set; } + public decimal FixedRate { get; set; } + public int InterestDirection { get; set; } + public int FloatingDirection { get; set; } + public decimal InitMarginGain { get; set; } + public decimal InitMarginLoss { get; set; } + } +} diff --git a/YLErpWeb/appsettings.dev.json b/YLErpWeb/appsettings.dev.json index ecceba98..3e268d15 100644 --- a/YLErpWeb/appsettings.dev.json +++ b/YLErpWeb/appsettings.dev.json @@ -34,6 +34,7 @@ "CompressionType": 0, // 消息压缩方式,可以是 None(0)、Gzip(1)、Snappy(2)、Lz4(3)、Zstd(4) 中的一种, "MessageTimeoutMs": 3000, // 控制生产者等待消息确认的时间,单位是毫秒 "ClientRateTopic": "ylClientRateTopic", //客户互换费率生产topic + "ContractTopic": "onederiv.trs.contract.v1", //TRS合约日终推送topic "HedgingAccountTopic": "ylHedgingAccountTopic", //对冲账户生产topic "ReqAccountCapitalTopic": "ReqAccountCapital", //账户资金请求topic "OnRspAccountCapitalTopic": "OnRspAccountCapital", //账户资金请求返回topic diff --git a/YLErpWeb/appsettings.local.json b/YLErpWeb/appsettings.local.json index a42f229b..e2956912 100644 --- a/YLErpWeb/appsettings.local.json +++ b/YLErpWeb/appsettings.local.json @@ -34,6 +34,7 @@ "CompressionType": 0, // 消息压缩方式,可以是 None(0)、Gzip(1)、Snappy(2)、Lz4(3)、Zstd(4) 中的一种, "MessageTimeoutMs": 3000, // 控制生产者等待消息确认的时间,单位是毫秒 "ClientRateTopic": "ylClientRateTopic", //客户互换费率生产topic + "ContractTopic": "onederiv.trs.contract.v1", //TRS合约日终推送topic "HedgingAccountTopic": "ylHedgingAccountTopic", //对冲账户生产topic "ReqAccountCapitalTopic": "ReqAccountCapital", //账户资金请求topic "OnRspAccountCapitalTopic": "OnRspAccountCapital", //账户资金请求返回topic diff --git a/YLErpWeb/appsettings.prod.json b/YLErpWeb/appsettings.prod.json index 3df07b7a..a7264a53 100644 --- a/YLErpWeb/appsettings.prod.json +++ b/YLErpWeb/appsettings.prod.json @@ -36,6 +36,7 @@ "CompressionType": 0, // 消息压缩方式,可以是 None(0)、Gzip(1)、Snappy(2)、Lz4(3)、Zstd(4) 中的一种, "MessageTimeoutMs": 3000, // 控制生产者等待消息确认的时间,单位是毫秒 "ClientRateTopic": "ylClientRateTopic", //客户互换费率生产topic + "ContractTopic": "onederiv.trs.contract.v1", //TRS合约日终推送topic "HedgingAccountTopic": "ylHedgingAccountTopic", //对冲账户生产topic "AccountCapitalTopicGroupId": "YiLian_OnRspAccountCapitalConsumer", //账户资金消费组 "ReqAccountCapitalTopic": "ReqAccountCapital", //账户资金请求topic diff --git a/YLErpWeb/appsettings.uat.json b/YLErpWeb/appsettings.uat.json index 87232cdd..fb6d933c 100644 --- a/YLErpWeb/appsettings.uat.json +++ b/YLErpWeb/appsettings.uat.json @@ -36,6 +36,7 @@ "CompressionType": 0, // 消息压缩方式,可以是 None(0)、Gzip(1)、Snappy(2)、Lz4(3)、Zstd(4) 中的一种, "MessageTimeoutMs": 3000, // 控制生产者等待消息确认的时间,单位是毫秒 "ClientRateTopic": "ylClientRateTopic", //客户互换费率生产topic + "ContractTopic": "onederiv.trs.contract.v1", //TRS合约日终推送topic "HedgingAccountTopic": "ylHedgingAccountTopic", //对冲账户生产topic "AccountCapitalTopicGroupId": "YiLian_OnRspAccountCapitalConsumer", //账户资金消费组 "ReqAccountCapitalTopic": "ReqAccountCapital", //账户资金请求topic From 5f5f79b63e095e915aa60b6076b0d4ab89b76b43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=90=8D=E9=94=90?= <1565842059@qq.com> Date: Tue, 25 Aug 2026 17:50:53 +0800 Subject: [PATCH 09/12] =?UTF-8?q?fix(document):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=8F=82=E8=80=83=E6=A0=87=E7=9A=84=E8=AF=81=E5=88=B8=E5=85=A8?= =?UTF-8?q?=E7=A7=B0=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 直接使用 underlying.UnderlyingName 属性 - 添加空值检查避免异常 - 保持原有逻辑结构不变 --- .../DocumentGenerator/TradeConfirmationGenerator.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs b/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs index 9335d06f..872e9fb5 100644 --- a/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs +++ b/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs @@ -563,7 +563,8 @@ namespace YLErp.Plugins.GuoLian.DocumentGenerator // 参考标的证券全称和参考标的名义份额(复用上方已声明的bond) dic["参考标的证券全称"] = underlying != null - ? (JsonHelper.Deserialize(underlying.ExJson)?.UnderlyingFullName ?? underlying.UnderlyingName) + // ? (JsonHelper.Deserialize(underlying.ExJson)?.UnderlyingFullName ?? underlying.UnderlyingName) + ? (underlying.UnderlyingName ?? "") : ""; dic["参考标的名义份额"] = swapPosition != null ? ((double)swapPosition.PosiQuantity).ToString("0.##") From aa87d6999987e58c8411d269fc28219cb9ad5eea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=90=8D=E9=94=90?= <1565842059@qq.com> Date: Tue, 25 Aug 2026 17:58:51 +0800 Subject: [PATCH 10/12] =?UTF-8?q?fix(swap):=20=E4=BF=AE=E5=A4=8D=E5=85=AC?= =?UTF-8?q?=E5=8F=B8=E8=A1=8C=E4=B8=BA=E4=BA=8B=E4=BB=B6=E7=94=9F=E5=91=BD?= =?UTF-8?q?=E5=91=A8=E6=9C=9F=E7=AE=A1=E7=90=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加了股权登记日日期格式化显示功能 - 实现了公司行为类型的动态描述逻辑(配股、送股、拆分、分红) - 新增了过滤待生效公司行为事件的操作历史机制 - 修正了操作历史中隐藏未应用公司行为事件的逻辑 - 完善了公司行为事件原因描述的构建方法 - 添加了针对不同公司行为类型的单元测试验证 --- .../CorporateActionEventLifecycleTest.cs | 44 +++++++++++--- .../Modules/SwapModule/SwapEventService.cs | 60 +++++++++++++++++-- 2 files changed, 92 insertions(+), 12 deletions(-) diff --git a/UnitTestProject/Modules/SwapModule/CorporateActionEventLifecycleTest.cs b/UnitTestProject/Modules/SwapModule/CorporateActionEventLifecycleTest.cs index 5df141d4..67570ef6 100644 --- a/UnitTestProject/Modules/SwapModule/CorporateActionEventLifecycleTest.cs +++ b/UnitTestProject/Modules/SwapModule/CorporateActionEventLifecycleTest.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using Newtonsoft.Json; using Microsoft.VisualStudio.TestTools.UnitTesting; using YLErp.DBModels; @@ -20,6 +21,7 @@ namespace YLErp.Modules.SwapModule public void RegistrationSnapshot_IsPending_AndKeepsBeforeFields() { var info = CreateAction(77, ConsGlobal.InstrumentType.Stock); + info.GiveShareAmount = 1m; var before = CreateEodPosition(9, info.UnderlyingCode, 1000m, 100m); var snapshot = SwapEodPositionService.BuildCorporateActionEventData( @@ -37,6 +39,7 @@ namespace YLErp.Modules.SwapModule Assert.IsFalse(snapshot.Applied); var reason = SwapEventService.BuildCorporateActionEventReason(snapshot); + StringAssert.Contains(reason, "股权登记日:2026-08-14 发生公司行为(送股)"); StringAssert.Contains(reason, "调整前:名义本金:100000 期初标的价格:100 持仓数量:1000"); StringAssert.Contains(reason, "调整后:名义本金:0 期初标的价格:0 持仓数量:0"); } @@ -65,6 +68,23 @@ namespace YLErp.Modules.SwapModule Assert.IsFalse(SwapEodPositionService.IsCorporateActionInstrument(ConsGlobal.InstrumentType.TBonds)); } + [TestMethod] + public void CorporateActionReason_ShowsOneActionTypeOrActualCashDividend() + { + AssertActionDescription( + new CorporateActionEventData { ExDividendDate = RecordDate, RationedSharesAmount = 1m, GiveShareAmount = 1m, Split = 2m, GiveCashAmount = 10m, CashFlowChange = 1000m }, + "发生公司行为(配股)"); + AssertActionDescription( + new CorporateActionEventData { ExDividendDate = RecordDate, GiveShareAmount = 1m, Split = 2m, GiveCashAmount = 10m, CashFlowChange = 1000m }, + "发生公司行为(送股)"); + AssertActionDescription( + new CorporateActionEventData { ExDividendDate = RecordDate, Split = 2m, GiveCashAmount = 10m, CashFlowChange = 1000m }, + "发生公司行为(拆分)"); + AssertActionDescription( + new CorporateActionEventData { ExDividendDate = RecordDate, GiveCashAmount = 11m, CashFlowChange = 220000m }, + "发生公司行为(产生分红:220000)"); + } + [TestMethod] public void Rerun_DoesNotCreateDuplicateCorporateActionEvent() { @@ -113,7 +133,7 @@ namespace YLErp.Modules.SwapModule } [TestMethod] - public void OperationHistory_PreservesPendingCorporateActionForAudit() + public void OperationHistory_HidesPendingCorporateActionUntilItIsApplied() { var info = CreateAction(80, ConsGlobal.InstrumentType.Stock); var pendingData = SwapEodPositionService.BuildCorporateActionEventData( @@ -133,12 +153,17 @@ namespace YLErp.Modules.SwapModule new swap_event { id = 3, EventType = (int)SwapEventTypeEnum.互换, EventData = "{}" } }; - // 操作历史不再隐藏登记日待生效事件;Applied=false 是事件状态,不是展示过滤条件。 - Assert.AreEqual(3, events.Count); - Assert.IsTrue(SwapEventService.TryDeserializeCorporateActionEventData(events[0], out var pendingSnapshot)); - Assert.IsFalse(pendingSnapshot.Applied); - Assert.IsTrue(SwapEventService.TryDeserializeCorporateActionEventData(events[1], out var appliedSnapshot)); - Assert.IsTrue(appliedSnapshot.Applied); + var filter = typeof(SwapEventService).GetMethod( + "FilterOperationHistory", + BindingFlags.NonPublic | BindingFlags.Static); + Assert.IsNotNull(filter, "操作历史必须过滤登记日创建的待生效公司行为事件。"); + + var visibleEvents = (List)filter.Invoke(null, new object[] { events }); + + Assert.AreEqual(2, visibleEvents.Count); + Assert.IsFalse(visibleEvents.Any(x => x.id == 1)); + Assert.IsTrue(visibleEvents.Any(x => x.id == 2)); + Assert.IsTrue(visibleEvents.Any(x => x.id == 3)); } [TestMethod] @@ -283,6 +308,11 @@ namespace YLErp.Modules.SwapModule }; } + private static void AssertActionDescription(CorporateActionEventData data, string expected) + { + StringAssert.Contains(SwapEventService.BuildCorporateActionEventReason(data), expected); + } + private static eod_swap_position CreateEodPosition(long positionId, string code, decimal quantity, decimal price) { return new eod_swap_position diff --git a/YLErpDAL/Modules/SwapModule/SwapEventService.cs b/YLErpDAL/Modules/SwapModule/SwapEventService.cs index 935bda97..6ecc5433 100644 --- a/YLErpDAL/Modules/SwapModule/SwapEventService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapEventService.cs @@ -207,8 +207,8 @@ namespace YLErp.Modules.SwapModule return events; } /// - /// 获取交易操作历史。登记日创建但尚未到 EffectiveDate 的公司行为事件也保留, - /// 由 EventData.Applied=false 表示“待生效”,保证审计日志完整可追溯。 + /// 获取交易操作历史。登记日创建的待生效公司行为仍保留在审计数据中, + /// 但在 EffectiveDate 将其更新为 Applied=true 前不对操作历史展示。 /// /// 交易id /// @@ -218,7 +218,30 @@ namespace YLErp.Modules.SwapModule .Where(x => x.SwapTradeId == tradeId) .OrderByDescending(o => o.id) .ToList(); - return list; + return FilterOperationHistory(list); + } + + /// + /// 过滤尚未生效的公司行为事件。非公司行为、已生效事件和无法识别的历史事件均保留, + /// 避免过滤条件误伤既有操作记录。 + /// + private static List FilterOperationHistory(IEnumerable events) + { + if (events == null) + { + return new List(); + } + + return events + .Where(x => !IsPendingCorporateActionEvent(x)) + .ToList(); + } + + private static bool IsPendingCorporateActionEvent(swap_event swapEvent) + { + return swapEvent?.EventType == (int)SwapEventTypeEnum.公司行为 + && TryDeserializeCorporateActionEventData(swapEvent, out var data) + && !data.Applied; } /// @@ -257,9 +280,36 @@ namespace YLErp.Modules.SwapModule return "公司行为快照为空"; } - // 使用 InvariantCulture 固定小数格式,说明文本不随服务器区域设置变化。 + // 使用 InvariantCulture 固定小数和日期格式,说明文本不随服务器区域设置变化。 string D(decimal value) => value.ToString(CultureInfo.InvariantCulture); - return $"调整前:名义本金:{D(data.BeforeNotional)} 期初标的价格:{D(data.BeforePrice)} 持仓数量:{D(data.BeforeQuantity)}" + string Date(DateTime? value) => value.HasValue + ? value.Value.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) + : ""; + string ActionDescription() + { + if (data.RationedSharesAmount != 0m) + { + return "配股"; + } + if (data.GiveShareAmount != 0m) + { + return "送股"; + } + if (data.Split.HasValue && data.Split.Value != 1m) + { + return "拆分"; + } + if (data.GiveCashAmount != 0m) + { + // return $"产生分红:{D(data.CashFlowChange)}"; + return $"产生分红"; + } + return "公司行为"; + } + + return $"股权登记日:{Date(data.ExDividendDate)} 发生公司行为({ActionDescription()})" + + Environment.NewLine + + $"调整前:名义本金:{D(data.BeforeNotional)} 期初标的价格:{D(data.BeforePrice)} 持仓数量:{D(data.BeforeQuantity)}" + Environment.NewLine + $"调整后:名义本金:{D(data.AfterNotional)} 期初标的价格:{D(data.AfterPrice)} 持仓数量:{D(data.AfterQuantity)}"; } From b54edc5e16551babe9d1f582cfee41a6272dd9d9 Mon Sep 17 00:00:00 2001 From: tengyufan <1532636164@qq.com> Date: Tue, 25 Aug 2026 18:00:47 +0800 Subject: [PATCH 11/12] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=A4?= =?UTF-8?q?=E6=98=93=E7=A1=AE=E8=AE=A4=E4=B9=A6NAFMII=E5=8D=8F=E8=AE=AE?= =?UTF-8?q?=E5=8B=BE=E9=80=89=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...模板-【客户看多】-【债券ETF】-清洁版.docx | Bin 42742 -> 39230 bytes ...境内模板-【客户看多】-【现券】-清洁版.docx | Bin 45533 -> 37793 bytes ...模板-【客户看空】-【债券ETF】-清洁版.docx | Bin 44477 -> 40125 bytes ...境内模板-【客户看空】-【现券】-清洁版.docx | Bin 48689 -> 40490 bytes .../TradeConfirmationGenerator.cs | 6 ++++++ 5 files changed, 6 insertions(+) diff --git a/Plugins/YLErp.Plugins.GuoLian/App_Docs/contract_template/国联民生-收益互换交易确认书-境内模板-【客户看多】-【债券ETF】-清洁版.docx b/Plugins/YLErp.Plugins.GuoLian/App_Docs/contract_template/国联民生-收益互换交易确认书-境内模板-【客户看多】-【债券ETF】-清洁版.docx index 030e6c1c073433a804c76d2e0d2b6c82de800672..0db3fb36435a50f658fbe010c4595652f7182c30 100644 GIT binary patch delta 37425 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 z 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 literal 45533 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 M!2|nU#mlGv2j{@FSpWb4 diff --git a/Plugins/YLErp.Plugins.GuoLian/App_Docs/contract_template/国联民生-收益互换交易确认书-境内模板-【客户看空】-【债券ETF】-清洁版.docx b/Plugins/YLErp.Plugins.GuoLian/App_Docs/contract_template/国联民生-收益互换交易确认书-境内模板-【客户看空】-【债券ETF】-清洁版.docx index c6da85b2d2dcc899302e43c151de53c0fa54895a..d173560931be2686e88351c5e25837c6f8af5995 100644 GIT binary patch delta 38018 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%0A0ILVdu*`v^$1K?{HTwFgK&$ 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%0AV;>0hJQ!=sQ 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 S!XLdCI$#tM02t5zarA%wPvfot diff --git a/Plugins/YLErp.Plugins.GuoLian/App_Docs/contract_template/国联民生-收益互换交易确认书-境内模板-【客户看空】-【现券】-清洁版.docx b/Plugins/YLErp.Plugins.GuoLian/App_Docs/contract_template/国联民生-收益互换交易确认书-境内模板-【客户看空】-【现券】-清洁版.docx index 19243728bdd291a134e5cef14d16be3a7954b51f..3051e84465a1ad101f44d5b1243e35d39bddb283 100644 GIT binary patch literal 40490 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 diff --git a/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs b/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs index 872e9fb5..d7d32888 100644 --- a/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs +++ b/Plugins/YLErp.Plugins.GuoLian/DocumentGenerator/TradeConfirmationGenerator.cs @@ -245,6 +245,12 @@ namespace YLErp.Plugins.GuoLian.DocumentGenerator } dic["主协议编号"] = mainProtocolCode ?? ""; + // 主协议类型:仅 NAFMII 使用中国银行间市场协议,其余类型按 SAC 展示。 + var mainProtocolType = Context.GetClientMeta(client.id, "MainProtocolType")?.MetaValue; + var isNafmii = mainProtocolType == "1"; + dic["IsSac"] = !isNafmii; + dic["IsNafmii"] = isNafmii; + // 补充协议编号:优先取 client 表字段,为空时从 client_meta 表兜底 var supProtocolCode = client.SupProtocolCode; if (string.IsNullOrWhiteSpace(supProtocolCode)) From 2b8c310b89424d44b4e3e08b470f8c2149966a4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E5=90=8D=E9=94=90?= <1565842059@qq.com> Date: Wed, 26 Aug 2026 09:41:19 +0800 Subject: [PATCH 12/12] =?UTF-8?q?fix(swap):=20=E4=BF=AE=E6=AD=A3ETF?= =?UTF-8?q?=E6=97=A5=E7=BB=88=E6=8C=81=E4=BB=93=E5=88=86=E7=BA=A2=E9=87=91?= =?UTF-8?q?=E9=A2=9D=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复了每日估值报告中ETF分红金额符号错误的问题 - 现在正确应用负号以反映客户视角下的日终持仓风险 - 添加了相关注释说明取值逻辑与日终持仓风险的相反关系 --- YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs index 3119c917..d9a05856 100644 --- a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs @@ -3582,7 +3582,7 @@ namespace YLErp.Modules.SwapModule else if (isEtf) { item.PeriodAmount = null; - item.DividendAmount = pendingDividend; + item.DividendAmount = -pendingDividend; // 每日估值报告是客户视角 取值与日终持仓风险相反 } else {