diff --git a/YLErpDAL/Modules/SwapModule/SwapTradeBaseService.cs b/YLErpDAL/Modules/SwapModule/SwapTradeBaseService.cs index 80a4a0a4..e859fcad 100644 --- a/YLErpDAL/Modules/SwapModule/SwapTradeBaseService.cs +++ b/YLErpDAL/Modules/SwapModule/SwapTradeBaseService.cs @@ -282,6 +282,34 @@ namespace YLErp.Modules.SwapModule } return swapEvent.ValueDate; } + + #region 可测试化接缝(ClearSwapPositions 相关) + + /// 查找该交易的 flow_event(生产: DbContext.swap_flow_event;测试: 内存列表) + protected virtual List FindFlowEventsByEventIds(List eventIds) + { + return DbContext.swap_flow_event.Where(x => x.EventId.HasValue && eventIds.Contains(x.EventId.Value)).ToList(); + } + + /// 查找手动互换的 ClientCashId(生产: DbContext.swap_event;测试: 内存列表) + protected virtual List FindManualClientCashIds(int swapTradeId) + { + return DbContext.swap_event + .Where(x => x.SwapTradeId == swapTradeId + && x.ClientCashId > 0 + && x.EventType != (int)SwapEventTypeEnum.自动互换) + .Select(x => x.ClientCashId) + .ToList(); + } + + /// 查找该交易的资金记录(生产: DbContext.ClientCashInCashOut;测试: 内存列表) + protected virtual List FindClientCashRecords(int tradeId) + { + return DbContext.ClientCashInCashOut.Where(x => x.TradeId == tradeId).ToList(); + } + + #endregion + public int AddClientCashInCashOut(OtcTradeBase td, double amount, string action, DateTime valueDate) { var cl = DataCacheProvider.GetClientDataSource().GetData(td.ClientId); @@ -444,7 +472,7 @@ namespace YLErp.Modules.SwapModule } } - private List GetLegacyAutoSwapClientCashRecords(List swapEvents, List excludedClientCashIds) + protected virtual List GetLegacyAutoSwapClientCashRecords(List swapEvents, List excludedClientCashIds) { if (swapEvents == null || !swapEvents.Any()) { @@ -452,15 +480,8 @@ namespace YLErp.Modules.SwapModule } var eventIds = swapEvents.Select(x => x.id).ToList(); - var flowEvents = DbContext.swap_flow_event - .Where(x => x.EventId.HasValue && eventIds.Contains(x.EventId.Value)) - .ToList(); - var manualClientCashIds = DbContext.swap_event - .Where(x => x.SwapTradeId == swapEvents.First().SwapTradeId - && x.ClientCashId > 0 - && x.EventType != (int)SwapEventTypeEnum.自动互换) - .Select(x => x.ClientCashId) - .ToList(); + var flowEvents = FindFlowEventsByEventIds(eventIds); + var manualClientCashIds = FindManualClientCashIds(swapEvents.First().SwapTradeId); var records = new List(); foreach (var swapEvent in swapEvents) @@ -485,9 +506,9 @@ namespace YLErp.Modules.SwapModule } eventFlowEvents.Where(x => x.PayDate.HasValue).ToList().ForEach(x => candidateDates.Add(x.PayDate.Value.Date)); - var eventRecords = DbContext.ClientCashInCashOut - .Where(x => x.TradeId == swapEvent.SwapTradeId - && !excludedClientCashIds.Contains(x.id) + var allCashRecords = FindClientCashRecords(swapEvent.SwapTradeId); + var eventRecords = allCashRecords + .Where(x => !excludedClientCashIds.Contains(x.id) && !manualClientCashIds.Contains(x.id) && (x.Action == ClientCashInCashOut.系统操作_预付金返息 || x.Action == ClientCashInCashOut.系统操作_互换)) .ToList()