shanji 3 years ago
parent
commit
889d9ad56a
  1. 31
      BBWY.Server.Business/EarlyWarning/JD/JDStockNumWarningBusiness.cs
  2. 48
      BBWY.Server.Business/Statistics/JDReportFormStatisticsBusiness.cs

31
BBWY.Server.Business/EarlyWarning/JD/JDStockNumWarningBusiness.cs

@ -65,15 +65,15 @@ namespace BBWY.Server.Business
.Distinct()
.ToList((s, osku, o) => s.Sku);
//查询近9天的销量(三个周期)
var allCycleStartDate = yesterDayDate.AddDays(-8);
//查询近15天的销量(5个周期)
var allCycleStartDate = yesterDayDate.AddDays(-14);
var skuSaleDailyList = fsql.Select<SkuDailySalesDetail>()
.Where(s => s.Date >= allCycleStartDate && s.Date <= yesterDayDate)
.Where(s => yesterDaySkuIds.Contains(s.Sku))
.ToList();
var firstCycleStartDate = allCycleStartDate;
var firstCycleEndDate = allCycleStartDate.AddDays(2);
var firstCycleStartDate = yesterDayDate.AddDays(-8);
var firstCycleEndDate = firstCycleStartDate.AddDays(2);
var secondCycleStartDate = firstCycleEndDate.AddDays(1);
var secondCycleEndDate = secondCycleStartDate.AddDays(2);
@ -107,10 +107,12 @@ namespace BBWY.Server.Business
var _3Ratio = secondCycleItemTotal == 0 ? 0 : 1.0 * thirdCycleItemTotal / secondCycleItemTotal - 1;
var _7dAvgSaleList = skuSaleDailyList.Where(s => s.Sku == sku && s.Date >= _7dAvgStartDate && s.Date <= yesterDayDate);
var _7dItemTotal = _7dAvgSaleList.Sum(s => s.ItemTotal - s.CancelItemTotal);
var _7dSaleList = skuSaleDailyList.Where(s => s.Sku == sku && s.Date >= _7dAvgStartDate && s.Date <= yesterDayDate);
var _7dItemTotal = _7dSaleList.Sum(s => s.ItemTotal - s.CancelItemTotal);
var _15dItemTotal = skuSaleDailyList.Sum(s => s.ItemTotal - s.CancelItemTotal); //近15天销量
var _7dAvgItemTotal = 1.0 * _7dItemTotal / 7; //近7天日均销量
Enums.SkuStockNumCycleType skuStockNumCycleType = Enums.SkuStockNumCycleType.;
if (_2Ratio >= 0.2 && _3Ratio >= 0.2)
skuStockNumCycleType = Enums.SkuStockNumCycleType.;
@ -181,7 +183,9 @@ namespace BBWY.Server.Business
if (lessDay < 15)
{
isWarning = true;
if (shop.SkuSafeTurnoverDays == 28)
if (_15dItemTotal <= 2)
suggestStockNum = 0;
else if (shop.SkuSafeTurnoverDays == 28)
suggestStockNum = (int)Math.Ceiling(_7dItemTotal * 4 * 1.5);
else if (shop.SkuSafeTurnoverDays == 21)
suggestStockNum = (int)Math.Ceiling(_7dItemTotal * 3 * 1.5);
@ -194,7 +198,9 @@ namespace BBWY.Server.Business
if (lessDay < 8)
{
isWarning = true;
if (shop.SkuSafeTurnoverDays == 28)
if (_15dItemTotal <= 2)
suggestStockNum = 0;
else if (shop.SkuSafeTurnoverDays == 28)
suggestStockNum = _7dItemTotal * 4;
else if (shop.SkuSafeTurnoverDays == 21)
suggestStockNum = _7dItemTotal * 3;
@ -219,9 +225,14 @@ namespace BBWY.Server.Business
dingdingContentBuilder.Append($"商品状态:{skuStockNumCycleType}\n");
dingdingContentBuilder.Append($"近7天销量:{_7dItemTotal}\n");
foreach (var stockNumInfo in skuStockNumGroup)
dingdingContentBuilder.Append($"{stockNumInfo.Store?.Name ?? stockNumInfo.StoreId}:{stockNumInfo.StockNum}件");
dingdingContentBuilder.Append($"{stockNumInfo.Store?.Name ?? stockNumInfo.StoreId}:{stockNumInfo.StockNum}件\n");
if (skuStockNumCycleType == Enums.SkuStockNumCycleType. || skuStockNumCycleType == Enums.SkuStockNumCycleType.)
dingdingContentBuilder.Append($"{skuStockNumGroup.Key}库存低于安全周转天数,建议备货{suggestStockNum}件");
{
if (suggestStockNum != 0)
dingdingContentBuilder.Append($"{skuStockNumGroup.Key}库存低于安全周转天数,建议备货{suggestStockNum}件");
else
dingdingContentBuilder.Append($"近15天销量低于两件,建议暂停备货,采购代发");
}
else if (skuStockNumCycleType == Enums.SkuStockNumCycleType.退)
dingdingContentBuilder.Append($"{skuStockNumGroup.Key}库存商品进入衰退期,建议暂停备货,采购代发");
dingdingContentBuilder.AppendLine();

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

@ -462,7 +462,7 @@ namespace BBWY.Server.Business.Statistics
var _7dCampaignCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) &&
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate)
.GroupBy((jas1, jas2) => jas1.CampaignId)
@ -486,7 +486,7 @@ namespace BBWY.Server.Business.Statistics
});
var _30dCampaignCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) &&
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate)
.GroupBy((jas1, jas2) => jas1.CampaignId)
@ -510,7 +510,7 @@ namespace BBWY.Server.Business.Statistics
});
var _customCampaignCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) &&
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate)
.GroupBy((jas1, jas2) => jas1.CampaignId)
@ -534,7 +534,7 @@ namespace BBWY.Server.Business.Statistics
});
var _totalCampaignCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value))
.GroupBy((jas1, jas2) => jas1.CampaignId)
.ToList(g => new
@ -580,7 +580,7 @@ namespace BBWY.Server.Business.Statistics
var _7dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) &&
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate)
.GroupBy((jas1, jas2) => jas1.AdGroupId)
@ -604,7 +604,7 @@ namespace BBWY.Server.Business.Statistics
});
var _30dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) &&
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate)
.GroupBy((jas1, jas2) => jas1.AdGroupId)
@ -628,7 +628,7 @@ namespace BBWY.Server.Business.Statistics
});
var _customCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) &&
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate)
.GroupBy((jas1, jas2) => jas1.AdGroupId)
@ -652,7 +652,7 @@ namespace BBWY.Server.Business.Statistics
});
var _totalAdGroupCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value))
.GroupBy((jas1, jas2) => jas1.AdGroupId)
.ToList(g => new
@ -696,7 +696,7 @@ namespace BBWY.Server.Business.Statistics
var _7dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) &&
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate)
.GroupBy((jas1, jas2) => jas1.AdId)
@ -720,7 +720,7 @@ namespace BBWY.Server.Business.Statistics
});
var _30dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) &&
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate)
.GroupBy((jas1, jas2) => jas1.AdId)
@ -744,7 +744,7 @@ namespace BBWY.Server.Business.Statistics
});
var _customCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) &&
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate)
.GroupBy((jas1, jas2) => jas1.AdId)
@ -768,7 +768,7 @@ namespace BBWY.Server.Business.Statistics
});
var totalAdCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value))
.GroupBy((jas1, jas2) => jas1.AdId)
.ToList(g => new
@ -927,7 +927,7 @@ namespace BBWY.Server.Business.Statistics
var _7dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) &&
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate)
.GroupBy((jas1, jas2) => jas1.CampaignId)
@ -951,7 +951,7 @@ namespace BBWY.Server.Business.Statistics
});
var _30dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) &&
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate)
.GroupBy((jas1, jas2) => jas1.CampaignId)
@ -975,7 +975,7 @@ namespace BBWY.Server.Business.Statistics
});
var _customCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value) &&
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate)
.GroupBy((jas1, jas2) => jas1.CampaignId)
@ -999,7 +999,7 @@ namespace BBWY.Server.Business.Statistics
});
var _totalCampaignCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.CampaignId.Value))
.GroupBy((jas1, jas2) => jas1.CampaignId)
.ToList(g => new
@ -1044,7 +1044,7 @@ namespace BBWY.Server.Business.Statistics
var _7dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) &&
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate)
.GroupBy((jas1, jas2) => jas1.AdGroupId)
@ -1068,7 +1068,7 @@ namespace BBWY.Server.Business.Statistics
});
var _30dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) &&
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate)
.GroupBy((jas1, jas2) => jas1.AdGroupId)
@ -1092,7 +1092,7 @@ namespace BBWY.Server.Business.Statistics
});
var _customCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value) &&
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate)
.GroupBy((jas1, jas2) => jas1.AdGroupId)
@ -1116,7 +1116,7 @@ namespace BBWY.Server.Business.Statistics
});
var _taotalAdGroupCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdGroupId.Value))
.GroupBy((jas1, jas2) => jas1.AdGroupId)
.ToList(g => new
@ -1160,7 +1160,7 @@ namespace BBWY.Server.Business.Statistics
var customEndTime = gOIRequest.EndDate.AddDays(1).AddSeconds(-1);
var _7dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) &&
jas2.Date >= _7dStartDate && jas2.Date <= _7dEndDate)
.GroupBy((jas1, jas2) => jas1.AdId)
@ -1184,7 +1184,7 @@ namespace BBWY.Server.Business.Statistics
});
var _30dCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) &&
jas2.Date >= _30dStartDate && jas2.Date <= _30dEndDate)
.GroupBy((jas1, jas2) => jas1.AdId)
@ -1208,7 +1208,7 @@ namespace BBWY.Server.Business.Statistics
});
var _customCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value) &&
jas2.Date >= gOIRequest.StartDate && jas2.Date <= gOIRequest.EndDate)
.GroupBy((jas1, jas2) => jas1.AdId)
@ -1232,7 +1232,7 @@ namespace BBWY.Server.Business.Statistics
});
var _totalAdCosts = fsql.Select<JDPopularizeAdSku, JDPopularizeAdSku>()
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku)
.InnerJoin((jas1, jas2) => jas1.Sku == jas2.Sku && jas1.Date == jas2.Date)
.Where((jas1, jas2) => gOIRequest.LevelIdList.Contains(jas1.AdId.Value))
.GroupBy((jas1, jas2) => jas1.AdId)
.ToList(g => new

Loading…
Cancel
Save