交易确认书生成修复
This commit is contained in:
@@ -213,41 +213,35 @@ namespace YLErp.Modules.TradeModule.DealModule
|
||||
if (PS.Config.Company == CompanyEnum.浙商)
|
||||
{
|
||||
LogFactory.GetLogger("生成确认书").Error("浙商生成确认书");
|
||||
var TradeQuery = new TradeDalService(this).GetTradeOrEodTradeOfTidASid(tradeIds, SystemValueDate).Where(c => (c.TradeType != "结构化交易" || c.IsGroup == 1) && tradeIds.Contains(c.id));
|
||||
if (TradeQuery.Any())
|
||||
var trades = DbContext.trade.Where(x=>tradeIds.Contains(x.id)).AsNoTracking().ToList();
|
||||
var clientIds= trades.Select(x=>x.ClientId).Distinct().ToList();
|
||||
var allTrades= DbContext.trade.Where(x => clientIds.Contains(x.ClientId)&&x.ValidState!=ConsGlobal.InValid);
|
||||
if (startDate.HasValue)
|
||||
{
|
||||
var Ids = TradeQuery.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();
|
||||
foreach (var item in TradeQuery)
|
||||
{
|
||||
item.swap_positions.Add(swapPositions.FirstOrDefault(o => o.SwapTradeId == item.id));
|
||||
}
|
||||
// 按照客户ID、交易日期、多空头进行分组
|
||||
var group = TradeQuery.GroupBy(O => new { O.ClientId, O.TradeDate, O.swap_positions.FirstOrDefault().PositionType})
|
||||
.ToDictionary(K => K.Key, V => V.Select(O => O.id).ToList());
|
||||
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();
|
||||
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();
|
||||
// 按照客户ID、交易日期、多空头进行分组
|
||||
var group = allTradeList.GroupBy(O => new { O.ClientId, O.TradeDate, O.swap_positions.FirstOrDefault().PositionType })
|
||||
.ToDictionary(K => K.Key, V => V.Select(O => O.id).ToList());
|
||||
|
||||
foreach (var item in group)
|
||||
{
|
||||
// 如果是结构化交易或特殊交易类型需要额外处理,这里简化处理
|
||||
var query = from t in DbContext.trade
|
||||
join tc in DbContext.trade_cash on t.id equals tc.TradeId
|
||||
where item.Value.Contains(tc.TradeId) && !tc.IsDeleted
|
||||
select new { t.id };
|
||||
|
||||
if (query.Any())
|
||||
{
|
||||
// 使用现有的 groupGenerateHandle 方法来处理每组交易
|
||||
|
||||
groupGenerateHandle(query.Select(l => l.id).Distinct().ToList(), docType, startDate, endDate, results, error, file);
|
||||
}
|
||||
}
|
||||
foreach (var item in group)
|
||||
{
|
||||
LogFactory.GetLogger("生成确认书").Error("浙商生成确认书" + item.Value.Distinct().ToList().Count());
|
||||
groupGenerateHandle(item.Value.Distinct().ToList(), docType, startDate, endDate, results, error, file);
|
||||
}
|
||||
}
|
||||
if (results.Count == 0)
|
||||
{
|
||||
LogFactory.GetLogger("生成确认书").Error("浙商生成确认书" + tradeIds.Count());
|
||||
results = new ConfirmationGenerateService(this).Generate(tradeIds, docType);
|
||||
}
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user