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()