From 30dc6dfa505f4c904203c1123dccf10bd9ec101e Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Fri, 28 Oct 2022 11:54:40 +0800 Subject: [PATCH] sku goi --- .../JDReportFormStatisticsBusiness.cs | 102 ++++++++++++++++++ .../JDReportForm/JDMultiLevelGOIResponse.cs | 8 ++ 2 files changed, 110 insertions(+) diff --git a/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs b/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs index 8df02de0..4a241666 100644 --- a/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs +++ b/BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs @@ -303,5 +303,107 @@ namespace BBWY.Server.Business.Statistics } return list; } + + public IList CalculationSkuLevelGOI(SkuGOIRequest gOIRequest) + { + var _7dEndDate = DateTime.Now.Date.AddDays(-1); + var _7dStartDate = _7dEndDate.AddDays(-6); + var _7dEndTime = _7dEndDate.AddDays(1).AddSeconds(-1); + + var _30dEndDate = DateTime.Now.Date.AddDays(-1); + var _30dStartDate = _30dEndDate.AddDays(-29); + var _30dEndTime = _30dEndDate.AddDays(1).AddSeconds(-1); + + var customEndTime = gOIRequest.EndDate.AddDays(1).AddSeconds(-1); + + var _7dSkuCosts = fsql.Select().Where(x => gOIRequest.LevelIdList.Contains(x.Sku) && + x.BusinessType == 134217728 && + x.Date >= _7dStartDate && + x.Date <= _7dEndDate) + .GroupBy(x => x.Sku) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + Sku = g.Key + }); + + var _7dSkuProfits = fsql.Select().InnerJoin((jr, oc) => jr.OrderId == oc.OrderId) + .Where((jr, oc) => gOIRequest.LevelIdList.Contains(jr.PopularizeSku) && + jr.BusinessType == 134217728 && + jr.OrderTime >= _7dStartDate && + jr.OrderTime <= _7dEndTime) + .GroupBy((jr, oc) => jr.PopularizeSku) + .ToList(g => new + { + Sku = g.Key, + Profit = g.Sum(g.Value.Item2.Profit) + }); + + var _30dSkuCosts = fsql.Select().Where(x => gOIRequest.LevelIdList.Contains(x.Sku) && + x.BusinessType == 134217728 && + x.Date >= _30dStartDate && + x.Date <= _30dEndDate) + .GroupBy(x => x.Sku) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + Sku = g.Key + }); + + var _30dSkuProfits = fsql.Select().InnerJoin((jr, oc) => jr.OrderId == oc.OrderId) + .Where((jr, oc) => gOIRequest.LevelIdList.Contains(jr.PopularizeSku) && + jr.BusinessType == 134217728 && + jr.OrderTime >= _30dStartDate && + jr.OrderTime <= _30dEndTime) + .GroupBy((jr, oc) => jr.PopularizeSku) + .ToList(g => new + { + Sku = g.Key, + Profit = g.Sum(g.Value.Item2.Profit) + }); + + var customDaysSkuCosts = fsql.Select().Where(x => gOIRequest.LevelIdList.Contains(x.Sku) && + x.BusinessType == 134217728 && + x.Date >= gOIRequest.StartDate && + x.Date <= gOIRequest.EndDate) + .GroupBy(x => x.Sku) + .ToList(g => new + { + Cost = g.Sum(g.Value.Cost), + Sku = g.Key + }); + + var customDaysSkuProfits = fsql.Select().InnerJoin((jr, oc) => jr.OrderId == oc.OrderId) + .Where((jr, oc) => gOIRequest.LevelIdList.Contains(jr.PopularizeSku) && + jr.BusinessType == 134217728 && + jr.OrderTime >= gOIRequest.StartDate && + jr.OrderTime <= customEndTime) + .GroupBy((jr, oc) => jr.PopularizeSku) + .ToList(g => new + { + Sku = g.Key, + Profit = g.Sum(g.Value.Item2.Profit) + }); + + var list = new List(); + foreach (var levelId in gOIRequest.LevelIdList) + { + var goiResponse = new JDSkuLevelGOIResponse() + { + LevelId = levelId, + BusinessType = gOIRequest.BusinessType + }; + goiResponse._7GOI.Cost = _7dSkuCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; + goiResponse._7GOI.Profit = _7dSkuProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; + + goiResponse._30GOI.Cost = _30dSkuCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; + goiResponse._30GOI.Profit = _30dSkuProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 0M; + + goiResponse.CustomDaysGOI.Cost = customDaysSkuCosts.FirstOrDefault(x => x.Sku == levelId)?.Cost ?? 0M; + goiResponse.CustomDaysGOI.Profit = customDaysSkuProfits.FirstOrDefault(x => x.Sku == levelId)?.Profit ?? 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 a3b56ca3..a315f6e2 100644 --- a/BBWY.Server.Model/Dto/Response/Statistics/JDReportForm/JDMultiLevelGOIResponse.cs +++ b/BBWY.Server.Model/Dto/Response/Statistics/JDReportForm/JDMultiLevelGOIResponse.cs @@ -22,4 +22,12 @@ public GOIResponse CustomDaysGOI { get; set; } } + + public class JDSkuLevelGOIResponse : JDMultiLevelGOIResponse + { + + public new string LevelId { get; set; } + } } + +