From 8f178e9962322ea98a1ffe09cecf96b223ed7235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=94=A6=E9=BA=9F=20=E7=8E=8B?= Date: Thu, 26 Mar 2026 10:09:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E4=B9=A6=E5=85=A5=E5=8F=A3?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9C=9F=E6=9D=83=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TradeContractGenerateService.cs | 76 +++++++++++-------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs b/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs index c7300ce9..9230cad5 100644 --- a/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs +++ b/YLErpDAL/Modules/TradeModule/DealModule/TradeContractGenerateService.cs @@ -228,42 +228,52 @@ namespace YLErp.Modules.TradeModule.DealModule var clientIds = trades.Select(x => x.ClientId).Distinct().ToList(); logger.Info($"[GJGenerateConfirmBook] 客户ID数: {clientIds.Count}"); - - var allTrades = DbContext.trade.Where(x => clientIds.Contains(x.ClientId)&&x.TradeType.Equals("收益互换") && x.ValidState != ConsGlobal.InValid); - if (startDate.HasValue) - { - allTrades = allTrades.Where(x => x.TradeDate >= startDate); - } - if (endDate.HasValue) - { - allTrades = allTrades.Where(x => x.TradeDate <= endDate); - } - var Ids = allTrades.Select(o => o.id).Distinct().ToArray(); - var swapPositions = DbContext.swap_position.Where(s => Ids.Contains(s.SwapTradeId) && s.IsInitial && s.PositionType > 0 && !s.Invalid) - .Distinct().ToList(); - logger.Info($"[GJGenerateConfirmBook] 查询到持仓记录数: {swapPositions.Count}"); - - var allTradeList = allTrades.AsNoTracking().ToList(); - foreach (var item in allTradeList) - { - item.swap_positions.Add(swapPositions.FirstOrDefault(o => o.SwapTradeId == item.id)); - } - allTradeList = allTradeList.Where(x => x.swap_positions.Any()).ToList(); - logger.Info($"[GJGenerateConfirmBook] 过滤后有持仓的交易数: {allTradeList.Count}"); - - // 按照客户ID、交易日期、多空头进行分组 - var group = allTradeList.GroupBy(O => new { O.ClientId, O.StartDate, O.swap_positions.FirstOrDefault()?.PositionType }) - .ToDictionary(K => K.Key, V => V.Select(O => O.id).ToList()); - - logger.Info($"[GJGenerateConfirmBook] 分组数: {group.Count}"); - foreach (var item in group) + if (trades.Any(o => o.TradeType.Equals("收益互换"))) { - var tradeCount = item.Value.Distinct().Count(); - logger.Info($"[GJGenerateConfirmBook] 处理分组 - ClientId: {item.Key.ClientId}, StartDate: {item.Key.StartDate}, PositionType: {item.Key.PositionType}, 交易数: {tradeCount}"); - groupGenerateHandle(item.Value.Distinct().ToList(), docType, startDate, endDate, results, error, file); + var allTrades = DbContext.trade.Where(x => clientIds.Contains(x.ClientId) && x.TradeType.Equals("收益互换") && x.ValidState != ConsGlobal.InValid); + if (startDate.HasValue) + { + allTrades = allTrades.Where(x => x.TradeDate >= startDate); + } + if (endDate.HasValue) + { + allTrades = allTrades.Where(x => x.TradeDate <= endDate); + } + var Ids = allTrades.Select(o => o.id).Distinct().ToArray(); + var swapPositions = DbContext.swap_position.Where(s => Ids.Contains(s.SwapTradeId) && s.IsInitial && s.PositionType > 0 && !s.Invalid) + .Distinct().ToList(); + logger.Info($"[GJGenerateConfirmBook] 查询到持仓记录数: {swapPositions.Count}"); + + var allTradeList = allTrades.AsNoTracking().ToList(); + foreach (var item in allTradeList) + { + item.swap_positions.Add(swapPositions.FirstOrDefault(o => o.SwapTradeId == item.id)); + } + allTradeList = allTradeList.Where(x => x.swap_positions.Any()).ToList(); + logger.Info($"[GJGenerateConfirmBook] 过滤后有持仓的交易数: {allTradeList.Count}"); + + // 按照客户ID、交易日期、多空头进行分组 + var group = allTradeList.GroupBy(O => new { O.ClientId, O.StartDate, O.swap_positions.FirstOrDefault()?.PositionType }) + .ToDictionary(K => K.Key, V => V.Select(O => O.id).ToList()); + + logger.Info($"[GJGenerateConfirmBook] 分组数: {group.Count}"); + + foreach (var item in group) + { + var tradeCount = item.Value.Distinct().Count(); + logger.Info($"[GJGenerateConfirmBook] 处理分组 - ClientId: {item.Key.ClientId}, StartDate: {item.Key.StartDate}, PositionType: {item.Key.PositionType}, 交易数: {tradeCount}"); + groupGenerateHandle(item.Value.Distinct().ToList(), docType, startDate, endDate, results, error, file); + } } - + else + { + foreach (var item in trades) + { + groupGenerateHandle_Date(new List { item.id }, docType, startDate, endDate, results, error, file); + } + } + errors = results.Where(n => !string.IsNullOrWhiteSpace(n.ErrorMessage)).Select(n => n.ErrorMessage).ToList(); files = results.Where(n => !string.IsNullOrWhiteSpace(n.OutputFilePath)).Select(n => n.OutputFilePath).ToList(); logger.Info($"[GJGenerateConfirmBook] 完成生成确认书 - 错误数: {errors.Count()}, 文件数: {files.Count()}");