Files
zszq-trs/YLErpDAL/Modules/SwapModule/EodSwapPositionQueries.cs
T
hjhan 1d9bac4dd6 refactor(swap): 提取 EodSwapPositionQueries.ActiveByTradeAndDate 收口日终有效持仓查询
将 eod_swap_position 上'SwapTradeId + ValueDate + !Invalid'的 5 处重复谓词
(SwapEodPositionService.cs:2133/2195/2246/2487、ConfirmationGenerateContext.cs:2868)
收口到 EodSwapPositionQueries.ActiveByTradeAndDate(tradeId, valueDate),
与 SwapPositionQueries.ActiveByTrade 同构,零逻辑变更。
2026-08-15 13:44:53 +08:00

20 lines
836 B
C#

using System;
using System.Linq;
using YLErp.DBModels;
namespace YLErp.Modules.SwapModule
{
/// <summary>
/// eod_swap_position 查询收口(Query Object)。
/// 规则"某交易某日日终的有效持仓 = SwapTradeId 匹配 + ValueDate 匹配 + 未作废(!Invalid)"集中于此,
/// 避免多处复制同一谓词导致语义漂移(漏写 !Invalid 即静默出 bug)。
/// 仅返回 IQueryable,不调用 SaveChanges,不破坏跟踪/Include/事务边界。
/// </summary>
public static class EodSwapPositionQueries
{
public static IQueryable<eod_swap_position> ActiveByTradeAndDate(
this IQueryable<eod_swap_position> query, int tradeId, DateTime valueDate)
=> query.Where(x => x.SwapTradeId == tradeId && x.ValueDate == valueDate && !x.Invalid);
}
}