diff --git a/Framework/YLErp.Core/Plugins/TradeDocGenerator/Abstracts/ITradeDocGeneratorContext.cs b/Framework/YLErp.Core/Plugins/TradeDocGenerator/Abstracts/ITradeDocGeneratorContext.cs index cf6cae00..c7f4ed7f 100644 --- a/Framework/YLErp.Core/Plugins/TradeDocGenerator/Abstracts/ITradeDocGeneratorContext.cs +++ b/Framework/YLErp.Core/Plugins/TradeDocGenerator/Abstracts/ITradeDocGeneratorContext.cs @@ -433,6 +433,8 @@ namespace YLErp.Plugins.TradeDocGenerator.Abstracts List GetSwapPositions(int tradeId,bool? IsInitial); + List GetSwapPositions(List tradeId, bool? IsInitial); + List GetClientDuties(); client_marginrate GetClientMarginRate(int clientId); diff --git a/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs b/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs index a41e4c64..34b5cd3b 100644 --- a/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs +++ b/Plugins/YLErp.Plugins.ZheShang/DocumentGenerator/TradeConfirmationGenerator.cs @@ -1,6 +1,7 @@ using Microsoft.VisualBasic; using Newtonsoft.Json.Linq; using NPOI.SS.Formula.Functions; +using System.Net.Http.Headers; using System.Text.RegularExpressions; using YLErp.Core.Helpers; using YLErp.DBModels; @@ -112,25 +113,28 @@ namespace YLErp.Plugins.ShanXi.DocumentGenerator var trades = Context.Trades; var totalPosiQuantity = 0.0; var StockEqvNotionalRealSum = 0.0; + var allSwapPositions = Context.GetSwapPositions(trades.Select(x => x.id).ToList(), true); + var allinterestMargins = allSwapPositions.Where(x => ConsTrade.InterestModels.Contains(x.InterestMode)); foreach (var trade in trades) { var swapPositions = Context.GetSwapPositions(trade.id, true); var swapPosition = swapPositions.Where(x => x.PositionType == 1 || x.PositionType == 2).FirstOrDefault(); var interestMargins = swapPositions.Where(x => ConsTrade.InterestModels.Contains(x.InterestMode)); + var initialMarginQuery = swapPositions.Where(x => x.InterestMode == 5); var additionMarginQuery = swapPositions.Where(x => x.InterestMode == 6); var underlyingCode = swapPosition?.UnderlyingCode; if (count == 0) { - var interestMargin = interestMargins.FirstOrDefault(o => o.interest_rest_days != null); + var interestMargin = allinterestMargins.FirstOrDefault(o => o.interest_rest_days != null); if (interestMargin == null) { - interestMargin = interestMargins.FirstOrDefault(o => string.IsNullOrWhiteSpace(o.FloatRateUnderlyingCode)); + interestMargin = allinterestMargins.FirstOrDefault(o => string.IsNullOrWhiteSpace(o.FloatRateUnderlyingCode)); } if (interestMargin == null) { - interestMargin = interestMargins.FirstOrDefault(); + interestMargin = allinterestMargins.FirstOrDefault(); } dic["成交日期"] = trade.TradeDate?.ToString("yyyy年M月d日"); diff --git a/YLErpDAL/Modules/TradeModule/DocGenerateModule/ConfirmationGenerateContext.cs b/YLErpDAL/Modules/TradeModule/DocGenerateModule/ConfirmationGenerateContext.cs index 9f329180..c24287e3 100644 --- a/YLErpDAL/Modules/TradeModule/DocGenerateModule/ConfirmationGenerateContext.cs +++ b/YLErpDAL/Modules/TradeModule/DocGenerateModule/ConfirmationGenerateContext.cs @@ -2775,6 +2775,16 @@ namespace YLErp.Modules.TradeModule.DocGenerateModule return query.ToList(); } + public List GetSwapPositions(List tradeIds, bool? IsInitial) + { + var query = DbContext.swap_position.Where(x => tradeIds.Contains(x.SwapTradeId) && !x.Invalid); + if (IsInitial.HasValue) + { + query = query.Where(x => x.IsInitial == IsInitial); + } + return query.ToList(); + } + public client_marginrate GetClientMarginRate(int clientId) { var clientMarginRateDbSet = DbContext.client_marginrate;