From 06e2b9176ac6c552ff44cc467c204702f5295199 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Wed, 23 Nov 2022 16:09:44 +0800 Subject: [PATCH] 1 --- .../JDReportFormStatisticsBusiness.cs | 178 +++++++++++++++--- .../JDReportForm/JDMultiLevelGOIResponse.cs | 4 + 2 files changed, 161 insertions(+), 21 deletions(-) diff --git a/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs b/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs index c4d0a293..3afa841e 100644 --- a/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs +++ b/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs @@ -91,6 +91,14 @@ namespace BBWY.Server.Business.Statistics Profit = g.Sum(g.Value.Item2.Profit) }); + var totalCampaginCosts = fsql.Select().Where(x => gOIRequest.LevelIdList.Contains(x.CampaignId.Value)) + .GroupBy(x => x.CampaignId) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + CampaignId = g.Key + }); + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -107,6 +115,8 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = customDaysCampaignCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = customDaysCampaignProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = totalCampaginCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -187,6 +197,14 @@ namespace BBWY.Server.Business.Statistics Profit = g.Sum(g.Value.Item2.Profit) }); + var totalAdGroupCosts = fsql.Select().Where(x => gOIRequest.LevelIdList.Contains(x.AdGroupId.Value)) + .GroupBy(x => x.AdGroupId) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + AdGroupId = g.Key + }); + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -203,6 +221,8 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = customDaysAdGroupCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = customDaysAdGroupProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = totalAdGroupCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -283,6 +303,14 @@ namespace BBWY.Server.Business.Statistics Profit = g.Sum(g.Value.Item2.Profit) }); + var totalAdCosts = fsql.Select().Where(x => gOIRequest.LevelIdList.Contains(x.AdId.Value)) + .GroupBy(x => x.AdId) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + AdId = g.Key + }); + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -299,6 +327,8 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = customDaysAdCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = customDaysAdProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = totalAdCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -385,6 +415,16 @@ namespace BBWY.Server.Business.Statistics Profit = g.Sum(g.Value.Item2.Profit) }); + var skuTotalCosts = fsql.Select().Where(x => gOIRequest.LevelIdList.Contains(x.Sku) && + x.BusinessType == 134217728) + .GroupBy(x => x.Sku) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + Sku = g.Key + }); + + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -401,6 +441,8 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = customDaysSkuCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = customDaysSkuProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = skuTotalCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -491,6 +533,17 @@ namespace BBWY.Server.Business.Statistics CampaignId = g.Key }); + var _totalCampaignCosts = fsql.Select() + .InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) + .Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value)) + .GroupBy((jas1, jas2) => jas1.CampaignId) + .ToList(g => new + { + Cost = g.Sum(g.Value.Item2.Cost), + CampaignId = g.Key + }); + + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -506,6 +559,8 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = _customCampaignCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = _customCampaignProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = _totalCampaignCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -596,6 +651,16 @@ namespace BBWY.Server.Business.Statistics AdGroupId = g.Key }); + var _totalAdGroupCosts = fsql.Select() + .InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) + .Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value)) + .GroupBy((jas1, jas2) => jas1.AdGroupId) + .ToList(g => new + { + Cost = g.Sum(g.Value.Item2.Cost), + AdGroupId = g.Key + }); + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -611,6 +676,7 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; + goiResponse.TotalCost = _totalAdGroupCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -701,6 +767,16 @@ namespace BBWY.Server.Business.Statistics AdId = g.Key }); + var totalAdCosts = fsql.Select() + .InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) + .Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value)) + .GroupBy((jas1, jas2) => jas1.AdId) + .ToList(g => new + { + Cost = g.Sum(g.Value.Item2.Cost), + AdId = g.Key + }); + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -716,6 +792,8 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = totalAdCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -803,6 +881,15 @@ namespace BBWY.Server.Business.Statistics Sku = g.Key }); + var _totalSkuCosts = fsql.Select() + .Where(jas => gOIRequest.LevelIdList.Contains(jas.Sku)) + .GroupBy(jas => jas.Sku) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + Sku = g.Key + }); + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -818,6 +905,8 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = _totalSkuCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -909,6 +998,16 @@ namespace BBWY.Server.Business.Statistics CampaignId = g.Key }); + var _totalCampaignCosts = fsql.Select() + .InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) + .Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value)) + .GroupBy((jas1, jas2) => jas1.CampaignId) + .ToList(g => new + { + Cost = g.Sum(g.Value.Item2.Cost), + CampaignId = g.Key + }); + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -924,6 +1023,8 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.CampaignId == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = _totalCampaignCosts.FirstOrDefault(x => x.CampaignId == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -1014,6 +1115,16 @@ namespace BBWY.Server.Business.Statistics AdGroupId = g.Key }); + var _taotalAdGroupCosts = fsql.Select() + .InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) + .Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value)) + .GroupBy((jas1, jas2) => jas1.AdGroupId) + .ToList(g => new + { + Cost = g.Sum(g.Value.Item2.Cost), + AdGroupId = g.Key + }); + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -1029,6 +1140,8 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = _taotalAdGroupCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -1054,7 +1167,7 @@ namespace BBWY.Server.Business.Statistics .ToList(g => new { Cost = g.Sum(g.Value.Item2.Cost), - AdGroupId = g.Key + AdId = g.Key }); var _7dProfits = fsql.Select() @@ -1063,61 +1176,71 @@ namespace BBWY.Server.Business.Statistics .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdId.Value) && jr.CookieTime >= _7dStartDate && jr.CookieTime <= _7dEndDate && ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.AdGroupId) + .GroupBy((jad, jr, ocd) => jad.AdId) .ToList(g => new { Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - AdGroupId = g.Key + AdId = g.Key }); var _30dCosts = fsql.Select() .InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) - .Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) && + .Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) && jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate) - .GroupBy((jas1, jas2) => jas1.AdGroupId) + .GroupBy((jas1, jas2) => jas1.AdId) .ToList(g => new { Cost = g.Sum(g.Value.Item2.Cost), - AdGroupId = g.Key + AdId = 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) && + .Where((jad, jr, ocd) => gOIRequest.LevelIdList.Contains(jad.AdId.Value) && jr.CookieTime >= _30dStartDate && jr.CookieTime <= _30dEndDate && ocd.IsEnabled == true) - .GroupBy((jad, jr, ocd) => jad.AdGroupId) + .GroupBy((jad, jr, ocd) => jad.AdId) .ToList(g => new { Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - AdGroupId = g.Key + AdId = g.Key }); var _customCosts = fsql.Select() .InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) - .Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) && + .Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) && jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate) - .GroupBy((jas1, jas2) => jas1.AdGroupId) + .GroupBy((jas1, jas2) => jas1.AdId) .ToList(g => new { Cost = g.Sum(g.Value.Item2.Cost), - AdGroupId = g.Key + AdId = 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) && + .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.AdGroupId) + .GroupBy((jad, jr, ocd) => jad.AdId) .ToList(g => new { Profit = g.Sum(g.Value.Item3.SkuGrossProfit), - AdGroupId = g.Key + AdId = g.Key }); + var _totalAdCosts = fsql.Select() + .InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku) + .Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value)) + .GroupBy((jas1, jas2) => jas1.AdId) + .ToList(g => new + { + Cost = g.Sum(g.Value.Item2.Cost), + AdId = g.Key + }); + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -1125,14 +1248,16 @@ namespace BBWY.Server.Business.Statistics { LevelId = levelId }; - goiResponse._7GOI.Cost = _7dCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; - goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; + goiResponse._7GOI.Cost = _7dCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; + goiResponse._7GOI.Profit = _7dProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; - goiResponse._30GOI.Cost = _30dCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; - goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; + goiResponse._30GOI.Cost = _30dCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; + goiResponse._30GOI.Profit = _30dProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; - goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.AdGroupId == levelId)?.Cost ?? 0M; - goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdGroupId == levelId)?.Profit ?? 0M; + goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; + goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.AdId == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = _totalAdCosts.FirstOrDefault(x => x.AdId == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; @@ -1220,6 +1345,15 @@ namespace BBWY.Server.Business.Statistics Sku = g.Key }); + var _totalSkuCosts = fsql.Select() + .Where(jas => gOIRequest.LevelIdList.Contains(jas.Sku)) + .GroupBy(jas => jas.Sku) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + Sku = g.Key + }); + var list = new List(); foreach (var levelId in gOIRequest.LevelIdList) { @@ -1235,6 +1369,8 @@ namespace BBWY.Server.Business.Statistics goiResponse.CustomDaysGOI.Cost = _customCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; goiResponse.CustomDaysGOI.Profit = _customProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; + + goiResponse.TotalCost = _totalSkuCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; list.Add(goiResponse); } return list; diff --git a/BBWY.Server.Model/Dto/Response/Statistics/JDReportForm/JDMultiLevelGOIResponse.cs b/BBWY.Server.Model/Dto/Response/Statistics/JDReportForm/JDMultiLevelGOIResponse.cs index 39669611..78a486d8 100644 --- a/BBWY.Server.Model/Dto/Response/Statistics/JDReportForm/JDMultiLevelGOIResponse.cs +++ b/BBWY.Server.Model/Dto/Response/Statistics/JDReportForm/JDMultiLevelGOIResponse.cs @@ -21,6 +21,8 @@ public GOIResponse _30GOI { get; set; } public GOIResponse CustomDaysGOI { get; set; } + + public decimal TotalCost { get; set; } } public class JDSkuLevelGOIResponse : JDMultiLevelGOIResponse @@ -44,6 +46,8 @@ public GOIResponse _30GOI { get; set; } public GOIResponse CustomDaysGOI { get; set; } + + public decimal TotalCost { get; set; } } public class JDSkuLevelProductAndPopularizeGOIResponse : JDProductAndPopularizeLevelGOIResponse