代码结构修改

This commit is contained in:
吴方海
2024-06-07 13:39:36 +08:00
parent 2d3eacd296
commit 4771fa1268
@@ -1372,34 +1372,28 @@ namespace YLErp.BLL.Eod
private void ProcessClientSwap(DateTime lastSettletDate, DateTime startDate)
{
var clientIds = _clientBalanceDic.Keys;
var positionList = DbContext.trade.Where(t => (ConsTrade.PositionTradeStatusList.Contains(t.TradeStatus)) && clientIds.Contains(t.ClientId) && t.ValidState != "InValid" && t.TradeType == "收益互换");
var marignQuery = from t in positionList
join s in DbContext.swap_position on t.id equals s.SwapTradeId
where !s.IsInitial && !s.Invalid
select new
{
ClientId=t.ClientId,
StructureType=t.StructureType,
Position=s,
margin= s.InterestPrincipalFix*(s.InterestDirection==1?-1:1)
};
var marginQueryGroup = marignQuery.ToList().GroupBy(t => t.ClientId);
foreach (var marginItem in marginQueryGroup)
var trades = DbContext.trade.Where(t => (ConsTrade.PositionTradeStatusList.Contains(t.TradeStatus)) && clientIds.Contains(t.ClientId) && t.ValidState != "InValid" && t.TradeType == "收益互换").Select(s => new {s.id,s.ClientId }).ToList();
var tradeIds = trades.Select(s=>s.id).ToList();
var positions = DbContext.swap_position.Where(s => tradeIds.Contains(s.SwapTradeId) && !s.IsInitial && !s.Invalid).ToList();
var queryGroup = trades.GroupBy(t => t.ClientId);
foreach (var item in queryGroup)
{
var balance = _clientBalanceDic[marginItem.Key];
var marginList = marginItem.Where(x => x.StructureType != "多空组合"&& ConsTrade.InterestMarginModels.Contains(x.Position.InterestMode)).Sum(s=>s.Position.InterestPrincipalFix * (s.Position.InterestDirection == 1 ? -1 : 1));
var balance = _clientBalanceDic[item.Key];
var clientTradeIds = item.Select(s => s.id).ToList();
var clientPositions = positions.Where(x => clientTradeIds.Contains(x.SwapTradeId)).ToList();
var marginList = clientPositions.Where(x =>ConsTrade.InterestMarginModels.Contains(x.InterestMode)).Sum(s=>s.InterestPrincipalFix * (s.InterestDirection == 1 ? -1 : 1));
balance.SwapMargin =Convert.ToDouble(marginList);
var positions= marginItem.Where(x => x.Position.PosiQuantity > 0);
balance.PositionCount= positions.Select(s=>s.Position.SwapTradeId).Distinct().Count();
balance.PositionNotionalPrincipal = Convert.ToDouble(positions.Sum(s=>s.Position.PosiNotionalValue));//实时
var floatPositions= positions.Where(x => x.PosiQuantity > 0);
balance.PositionCount= tradeIds.Count();
balance.PositionNotionalPrincipal = Convert.ToDouble(positions.Sum(s=>s.PosiNotionalValue));//实时
}
var eodSwapQuery = DbContext.eod_swap.Where(x => clientIds.Contains(x.ClientId) && x.ValueDate >= lastSettletDate && x.ValueDate <= startDate).GroupBy(x => x.SwapTradeId)
.Select(g => g.OrderByDescending(x => x.ValueDate).FirstOrDefault()).ToList();
var tradeIds = eodSwapQuery.Select(s => s.SwapTradeId).ToList();
var trades = DbContext.trade.Where(t => (ConsTrade.TradeStatusAfterConfirmed.Contains(t.TradeStatus)) && tradeIds.Contains(t.id) && t.ValidState != "InValid" && startDate >= t.StartDate);
tradeIds = trades.Select(s => s.id).ToList();
eodSwapQuery = eodSwapQuery.Where(x => tradeIds.Contains(x.SwapTradeId)).ToList();
var eodSwapPositions = DbContext.eod_swap_position.Where(x => tradeIds.Contains(x.SwapTradeId) && x.ValueDate >= lastSettletDate && x.ValueDate <= startDate && x.PosiDirection > 0);
var eodTradeIds = eodSwapQuery.Select(s => s.SwapTradeId).ToList();
var eodTrades = DbContext.trade.Where(t => (ConsTrade.TradeStatusAfterConfirmed.Contains(t.TradeStatus)) && tradeIds.Contains(t.id) && t.ValidState != "InValid" && startDate >= t.StartDate);
eodTradeIds = eodTrades.Select(s => s.id).ToList();
eodSwapQuery = eodSwapQuery.Where(x => eodTradeIds.Contains(x.SwapTradeId)).ToList();
var eodSwapPositions = DbContext.eod_swap_position.Where(x => eodTradeIds.Contains(x.SwapTradeId) && x.ValueDate >= lastSettletDate && x.ValueDate <= startDate && x.PosiDirection > 0);
var eodSwaps = eodSwapQuery.GroupBy(g => g.ClientId).ToList();
foreach (var data in eodSwaps)
{