bug修复

This commit is contained in:
吴方海
2025-04-23 13:58:26 +08:00
parent 9328e6f95f
commit 9f47caa3ed
8 changed files with 47 additions and 17 deletions
@@ -775,7 +775,7 @@ namespace YLErp.Modules.SwapModule
DealFloatPosition(unwindData);
var flowList = new List<swap_flow_event>(unwindData.FlowEvents);
var eventId = SaveSwapDeal(unwindData, (int)SwapEventTypeEnum., clientCashId, "系统操作_平仓");
if (unwindData.CloseMethod == (int)CloseMethodEnum.)
if (unwindData.CloseMethod == (int)CloseMethodEnum.|| unwindData.ClosePercent==1)
{
td.TradeStatus = "已平仓";
td.trade_extend = DbContext.trade_extend.FirstOrDefault(x => x.TradeId == td.id);
+36 -7
View File
@@ -381,15 +381,44 @@ namespace YLErp.Modules.SwapModule
public void SendAllSwapRateToKafka()
{
var swapRates = DbContext.swap_rate.Where(x => x.TakeEffectDate <= DateTime.Now.Date).GroupBy(g => g.ClientId).Select(g => g.OrderByDescending(o => o.TakeEffectDate).FirstOrDefault()).ToList();
var swapRateAll = DbContext.swap_rate
.Where(x => x.ClientId == 0 && x.TakeEffectDate <= DateTime.Now.Date)
.OrderByDescending(o => o.TakeEffectDate)
.FirstOrDefault();
var monthStart = GetMonthStart();
var posiNotionalValueGroup = DbContext.trade.Where(x => x.TradeDate >= monthStart
&& x.ValidState != ConsGlobal.InValid
&& x.TradeType == "收益互换"
&& ConsTrade.TradeStatusCustomexport.Contains(x.TradeStatus)).ToList().GroupBy(x => x.ClientId);
foreach (var swapRate in swapRates)
// 预计算客户持仓总额(在数据库端完成聚合)
var posiNotionalValues = DbContext.trade
.Where(x => x.TradeDate >= monthStart &&
x.ValidState != ConsGlobal.InValid &&
x.TradeType == "收益互换" &&
ConsTrade.TradeStatusCustomexport.Contains(x.TradeStatus))
.GroupBy(x => x.ClientId)
.Select(g => new
{
ClientId = g.Key,
Total = g.Sum(s => s.OriginalStockEqvNotional ?? 0)
})
.AsNoTracking()
.ToDictionary(x => x.ClientId, x => x.Total);
using ClientDBContext clientDBContext = new ClientDBContext();
var clients = clientDBContext.client.Where(x => x.ProcessStatus == "已开户").AsQueryable().ToList();
foreach (var client in clients)
{
var clientPosiNotional = posiNotionalValueGroup.FirstOrDefault(x => x.Key == swapRate.ClientId).ToList().Sum(s => s.OriginalStockEqvNotional ?? 0);
SendToKafka(swapRate, clientPosiNotional);
SwapRate swapRate = swapRates.FirstOrDefault(s => s.ClientId == client.id);
if (swapRate == null)
{
swapRate = swapRateAll;
}
if (swapRate == null)
{
swapRate = new SwapRate() { ClientId = client.id };
}
else
{
swapRate.ClientId= client.id;
}
posiNotionalValues.TryGetValue(client.id, out var clientPosiNotional);
SendToKafka(swapRate,clientPosiNotional);
}
}
/// <summary>