Browse Source

sku goi

qianyi
shanji 3 years ago
parent
commit
30dc6dfa50
  1. 102
      BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs
  2. 8
      BBWY.Server.Model/Dto/Response/Statistics/JDReportForm/JDMultiLevelGOIResponse.cs

102
BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs

@ -303,5 +303,107 @@ namespace BBWY.Server.Business.Statistics
}
return list;
}
public IList<JDSkuLevelGOIResponse> 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<JDPopularizeAdSku>().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<JDOrderPopularizeRelation, OrderCost>().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<JDPopularizeAdSku>().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<JDOrderPopularizeRelation, OrderCost>().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<JDPopularizeAdSku>().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<JDOrderPopularizeRelation, OrderCost>().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<JDSkuLevelGOIResponse>();
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;
}
}
}

8
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; }
}
}

Loading…
Cancel
Save