diff --git a/UnitTestProject/Modules/SwapModule/BondTrsAutoSwapScenarioTest.cs b/UnitTestProject/Modules/SwapModule/BondTrsAutoSwapScenarioTest.cs index e9b542c8..85052b9c 100644 --- a/UnitTestProject/Modules/SwapModule/BondTrsAutoSwapScenarioTest.cs +++ b/UnitTestProject/Modules/SwapModule/BondTrsAutoSwapScenarioTest.cs @@ -124,6 +124,17 @@ namespace YLErp.Modules.SwapModule return new swap_event { id = SwapEvents.Count }; } + /// + /// 捕获 SaveAutoSwapDeal 落库的 flow_event(生产写 DbContext.swap_flow_event)。 + /// 同步到 PersistedFlowEvents 供 AS_009/010/011 断言;基类 FlowEvents 仍由它填充, + /// 供 GetConsumedInterest 真实计算已结利息。 + /// + protected override void PersistFlowEvent(swap_flow_event flowEvent) + { + base.PersistFlowEvent(flowEvent); + PersistedFlowEvents.Add(flowEvent); + } + /// /// 利息腿金额直接给定(付息金额),避免把 GetInterests 的计息细节混入本用例—— /// 本文件关注的是「自动互换是否触发 / 几条 / 资金发生日 / 金额量级」, diff --git a/UnitTestProject/Modules/SwapModule/TestableSwapEodPositionService.cs b/UnitTestProject/Modules/SwapModule/TestableSwapEodPositionService.cs index 55518401..ce5faa45 100644 --- a/UnitTestProject/Modules/SwapModule/TestableSwapEodPositionService.cs +++ b/UnitTestProject/Modules/SwapModule/TestableSwapEodPositionService.cs @@ -62,7 +62,7 @@ namespace YLErp.Modules.SwapModule /// 捕获真实收盘产生的 swap_flow_event(生产写 DbContext.swap_flow_event)。 /// 与 PersistEodSwapPosition 同理,这里只收集不写库,供 GetConsumedInterest 真实计算。 /// - protected void PersistFlowEvent(swap_flow_event flowEvent) + protected override void PersistFlowEvent(swap_flow_event flowEvent) { if (flowEvent.id == 0) flowEvent.id = _nextId++; FlowEvents.Add(flowEvent); diff --git a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs index d42fc903..9bf583aa 100644 --- a/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapEodPositionService.cs @@ -134,6 +134,12 @@ namespace YLErp.Modules.SwapModule return new SwapEventService(this).AddSwapEventDate(tradeDate, swapTradeId, eventType, data, clientCashId, save, reason); } + /// 持久化互换流水事件(生产: DbContext.swap_flow_event.Add;测试: 收集到列表) + protected virtual void PersistFlowEvent(swap_flow_event flowEvent) + { + DbContext.swap_flow_event.Add(flowEvent); + } + /// 在事务中执行(生产: BeginTransaction/Commit/Rollback;测试: 直接执行不包事务) protected virtual void ExecuteInTransaction(Action action) { @@ -738,24 +744,26 @@ namespace YLErp.Modules.SwapModule unwindData.ClientCashIds = clientCashIds; string data = JsonConvert.SerializeObject(unwindData); - var swapEvent = new SwapEventService(this).AddSwapEventDate(unwindData.ValueDate, unwindData.SwapTradeId, (int)SwapEventTypeEnum.自动互换, data, clientCashId, true, "系统操作-自动互换");//将互换总额存入事件 + // 走虚方法 AddSwapEvent(与 ComposePage:800 一致),让测试可 override 捕获事件; + // 默认实现仍是 new SwapEventService(this).AddSwapEventDate,生产行为不变。 + var swapEvent = AddSwapEvent(unwindData.ValueDate, unwindData.SwapTradeId, (int)SwapEventTypeEnum.自动互换, data, clientCashId, true, "系统操作-自动互换");//将互换总额存入事件 if (flowEvents!=null) { flowEvents.ForEach(x => { x.EventId = swapEvent.id; - DbContext.swap_flow_event.Add(x); + PersistFlowEvent(x); }); UpdateInitalPostion(flowEvents, td.id); } - + // 保存分红事件 if (dividendEvents != null) { dividendEvents.ForEach(x => { x.EventId = swapEvent.id; - DbContext.swap_flow_event.Add(x); + PersistFlowEvent(x); }); UpdateInitalPostion(dividendEvents, td.id); }