diff --git a/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs b/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs index 0a85e6fe..fe778f0e 100644 --- a/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs +++ b/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs @@ -931,17 +931,16 @@ namespace BBWY.Server.Business.Statistics Sku = g.Key }); - var _7dProfits = fsql.Select() - .InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) - .InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) - .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.CampaignId.Value) && - jr.CookieTime >= _7dStartDate && jr.CookieTime <= _7dEndTime && - ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.CampaignId) + var _7dProfits = fsql.Select() + .InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) + .Where((jr, ocd) => skuIds.Contains(jr.PopularizeSku) && + jr.CookieTime >= _7dStartDate && jr.CookieTime <= _7dEndTime && + ocd.IsEnabled == true) + .GroupBy((jr, ocd) => jr.PopularizeSku) .ToList(g => new { - Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - CampaignId = g.Key + Profit = g.Sum(g.Value.Item2.SkuGrossProfit), + Sku = g.Key }); var _30dCosts = fsql.Select() @@ -953,17 +952,16 @@ namespace BBWY.Server.Business.Statistics Sku = g.Key }); - var _30dProfits = fsql.Select() - .InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) - .InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) - .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.CampaignId.Value) && - jr.CookieTime >= _30dStartDate && jr.CookieTime <= _30dEndTime && - ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.CampaignId) + var _30dProfits = fsql.Select() + .InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) + .Where((jr, ocd) => skuIds.Contains(jr.PopularizeSku) && + jr.CookieTime >= _30dStartDate && jr.CookieTime <= _30dEndTime && + ocd.IsEnabled == true) + .GroupBy((jr, ocd) => jr.PopularizeSku) .ToList(g => new { - Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - CampaignId = g.Key + Profit = g.Sum(g.Value.Item2.SkuGrossProfit), + Sku = g.Key }); var _customCosts = fsql.Select() @@ -975,17 +973,16 @@ namespace BBWY.Server.Business.Statistics Sku = g.Key }); - var _customProfits = fsql.Select() - .InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) - .InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) - .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.CampaignId.Value) && - jr.CookieTime >= gOIRequest.StartDate && jr.CookieTime <= customEndTime && - ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.CampaignId) + var _customProfits = fsql.Select() + .InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) + .Where((jr, ocd) => skuIds.Contains(jr.PopularizeSku) && + jr.CookieTime >= gOIRequest.StartDate && jr.CookieTime <= customEndTime && + ocd.IsEnabled == true) + .GroupBy((jr, ocd) => jr.PopularizeSku) .ToList(g => new { - Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - CampaignId = g.Key + Profit = g.Sum(g.Value.Item2.SkuGrossProfit), + Sku = g.Key }); var _totalCosts = fsql.Select() @@ -1008,13 +1005,13 @@ namespace BBWY.Server.Business.Statistics var currentLevelIdSkuIds = campaignList.Where(campaign => campaign.CampaignId == levelId).Select(campaign => campaign.Sku).Distinct().ToList(); goiResponse._7GOI.Cost = _7dCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); - goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; + goiResponse._7GOI.Profit = _7dProfits.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Profit); goiResponse._30GOI.Cost = _30dCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); - goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; + goiResponse._30GOI.Profit = _30dProfits.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Profit); goiResponse.CustomDaysGOI.Cost = _customCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); - goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; + goiResponse.CustomDaysGOI.Profit = _customProfits.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Profit); goiResponse.TotalCost = _totalCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); list.Add(goiResponse); @@ -1049,17 +1046,16 @@ namespace BBWY.Server.Business.Statistics Sku = g.Key }); - var _7dProfits = fsql.Select() - .InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) - .InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) - .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdGroupId.Value) && - jr.CookieTime >= _7dStartDate && jr.CookieTime <= _7dEndTime && - ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.AdGroupId) + var _7dProfits = fsql.Select() + .InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) + .Where((jr, ocd) => skuIds.Contains(jr.PopularizeSku) && + jr.CookieTime >= _7dStartDate && jr.CookieTime <= _7dEndTime && + ocd.IsEnabled == true) + .GroupBy((jr, ocd) => jr.PopularizeSku) .ToList(g => new { - Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - AdGroupId = g.Key + Profit = g.Sum(g.Value.Item2.SkuGrossProfit), + Sku = g.Key }); var _30dCosts = fsql.Select() @@ -1071,17 +1067,16 @@ namespace BBWY.Server.Business.Statistics Sku = g.Key }); - var _30dProfits = fsql.Select() - .InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) - .InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) - .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdGroupId.Value) && + var _30dProfits = fsql.Select() + .InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) + .Where((jr, ocd) => skuIds.Contains(jr.PopularizeSku) && jr.CookieTime >= _30dStartDate && jr.CookieTime <= _30dEndTime && ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.AdGroupId) + .GroupBy((jr, ocd) => jr.PopularizeSku) .ToList(g => new { - Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - AdGroupId = g.Key + Profit = g.Sum(g.Value.Item2.SkuGrossProfit), + Sku = g.Key }); var _customCosts = fsql.Select() @@ -1093,17 +1088,16 @@ namespace BBWY.Server.Business.Statistics Sku = g.Key }); - var _customProfits = fsql.Select() - .InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) - .InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) - .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdGroupId.Value) && + var _customProfits = fsql.Select() + .InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) + .Where((jr, ocd) => skuIds.Contains(jr.PopularizeSku) && jr.CookieTime >= gOIRequest.StartDate && jr.CookieTime <= customEndTime && ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.AdGroupId) + .GroupBy((jr, ocd) => jr.PopularizeSku) .ToList(g => new { - Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - AdGroupId = g.Key + Profit = g.Sum(g.Value.Item2.SkuGrossProfit), + Sku = g.Key }); var _totalCosts = fsql.Select() @@ -1126,13 +1120,13 @@ namespace BBWY.Server.Business.Statistics var currentLevelIdSkuIds = adGroupList.Where(adGroup => adGroup.AdGroupId == levelId).Select(adGroup => adGroup.Sku).Distinct().ToList(); goiResponse._7GOI.Cost = _7dCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); - goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; + goiResponse._7GOI.Profit = _7dProfits.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Profit); goiResponse._30GOI.Cost = _30dCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); - goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; + goiResponse._30GOI.Profit = _30dProfits.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Profit); goiResponse.CustomDaysGOI.Cost = _customCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); - goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; + goiResponse.CustomDaysGOI.Profit = _customProfits.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Profit); goiResponse.TotalCost = _totalCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); list.Add(goiResponse); @@ -1167,61 +1161,58 @@ namespace BBWY.Server.Business.Statistics Sku = g.Key }); - var _7dProfits = fsql.Select() - .InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) - .InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) - .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdId.Value) && - jr.CookieTime >= _7dStartDate && jr.CookieTime <= _7dEndTime && - ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.AdId) + var _7dProfits = fsql.Select() + .InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) + .Where((jr, ocd) => skuIds.Contains(jr.PopularizeSku) && + jr.CookieTime >= _7dStartDate && jr.CookieTime <= _7dEndTime && + ocd.IsEnabled == true) + .GroupBy((jr, ocd) => jr.PopularizeSku) .ToList(g => new { - Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - AdId = g.Key + Profit = g.Sum(g.Value.Item2.SkuGrossProfit), + Sku = g.Key }); var _30dCosts = fsql.Select() - .Where(jas => skuIds.Contains(jas.Sku) && jas.Date >= _30dStartDate && jas.Date <= _30dEndDate) - .GroupBy(jas => jas.Sku) - .ToList(g => new - { - Cost = g.Sum(g.Value.Cost), - Sku = g.Key - }); + .Where(jas => skuIds.Contains(jas.Sku) && jas.Date >= _30dStartDate && jas.Date <= _30dEndDate) + .GroupBy(jas => jas.Sku) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + Sku = g.Key + }); - var _30dProfits = fsql.Select() - .InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) - .InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) - .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdId.Value) && - jr.CookieTime >= _30dStartDate && jr.CookieTime <= _30dEndTime && - ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.AdId) + var _30dProfits = fsql.Select() + .InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) + .Where((jr, ocd) => skuIds.Contains(jr.PopularizeSku) && + jr.CookieTime >= _30dStartDate && jr.CookieTime <= _30dEndTime && + ocd.IsEnabled == true) + .GroupBy((jr, ocd) => jr.PopularizeSku) .ToList(g => new { - Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - AdId = g.Key + Profit = g.Sum(g.Value.Item2.SkuGrossProfit), + Sku = g.Key }); var _customCosts = fsql.Select() - .Where(jas => skuIds.Contains(jas.Sku) && jas.Date >= gOIRequest.StartDate && jas.Date <= gOIRequest.EndDate) - .GroupBy(jas => jas.Sku) - .ToList(g => new - { - Cost = g.Sum(g.Value.Cost), - Sku = g.Key - }); + .Where(jas => skuIds.Contains(jas.Sku) && jas.Date >= gOIRequest.StartDate && jas.Date <= gOIRequest.EndDate) + .GroupBy(jas => jas.Sku) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + Sku = g.Key + }); - var _customProfits = fsql.Select() - .InnerJoin((jad, jr, ocd) => jad.Sku == jr.PopularizeSku) - .InnerJoin((jad, jr, ocd) => jr.OrderId == ocd.OrderId) - .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdId.Value) && - jr.CookieTime >= gOIRequest.StartDate && jr.CookieTime <= customEndTime && - ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.AdId) + var _customProfits = fsql.Select() + .InnerJoin((jr, ocd) => jr.OrderId == ocd.OrderId) + .Where((jr, ocd) => skuIds.Contains(jr.PopularizeSku) && + jr.CookieTime >= gOIRequest.StartDate && jr.CookieTime <= customEndTime && + ocd.IsEnabled == true) + .GroupBy((jr, ocd) => jr.PopularizeSku) .ToList(g => new { - Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - AdId = g.Key + Profit = g.Sum(g.Value.Item2.SkuGrossProfit), + Sku = g.Key }); var _totalCosts = fsql.Select() @@ -1244,13 +1235,13 @@ namespace BBWY.Server.Business.Statistics var currentLevelIdSkuIds = adList.Where(ad => ad.AdId == levelId).Select(ad => ad.Sku).Distinct().ToList(); goiResponse._7GOI.Cost = _7dCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); - goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; + goiResponse._7GOI.Profit = _7dProfits.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Profit); goiResponse._30GOI.Cost = _30dCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); - goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; + goiResponse._30GOI.Profit = _30dProfits.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Profit); goiResponse.CustomDaysGOI.Cost = _customCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); - goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; + goiResponse.CustomDaysGOI.Profit = _customProfits.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Profit); goiResponse.TotalCost = _totalCosts.Where(x => currentLevelIdSkuIds.Contains(x.Sku)).Sum(x => x.Cost); list.Add(goiResponse);