Commit ff7b1964 authored by liudong1993's avatar liudong1993

1

parent c8548132
......@@ -163,5 +163,10 @@ namespace Mall.Model.Entity.User
/// </summary>
public int JXLJNum { get; set; }
/// <summary>
/// 取消单数
/// </summary>
public int CancelOrderNum { get; set; }
}
}
......@@ -107,6 +107,33 @@ namespace Mall.Module.MarketingCenter
return list;
}
/// <summary>
/// 徐总报表使用
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<OrderStatistics_Query> GetFXOrderProfitLossList_V2(OrderStatistics_Query dmodel)
{
var list = orderRepository.GetFXOrderProfitLossList_V2(dmodel);
if (list != null && list.Any())
{
//查询订单的返佣信息
string orderDetailIds = string.Join(",", list.Select(x => x.Id));
//分销情况
var oclist = goods_OrderCommissionRepository.GetListGroupByUser_V2(new RB_Goods_OrderCommission_Extend { TenantId = dmodel.TenantId, MallBaseId = dmodel.MallBaseId, OrderDetailIds = orderDetailIds });
foreach (var item in list)
{
item.FXCommission = (oclist != null && oclist.Any()) ? oclist.Where(x => x.OrderDetailId == item.Id).Sum(x => (x.Commission ?? 0)) : 0;
item.RemitFXCommission = (oclist != null && oclist.Any()) ? oclist.Where(x => x.OrderDetailId == item.Id && x.IsRemit == 1).Sum(x => (x.Commission ?? 0)) : 0;
}
}
return list;
}
public List<OrderStatistics_Query> GetFXAllOrderProfitLossList(OrderStatistics_Query dmodel)
{
var list = orderRepository.GetFXAllOrderProfitLossList(dmodel);
......@@ -207,6 +234,17 @@ namespace Mall.Module.MarketingCenter
return list;
}
/// <summary>
/// 徐总统计
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<OrderStatistics_Query> GetFXAllAftersaleOrderProfitLossList_V2(OrderStatistics_Query dmodel)
{
var list = orderRepository.GetFXAllAftersaleOrderProfitLossList_V2(dmodel);
return list;
}
/// <summary>
/// 取消订单
......@@ -219,6 +257,17 @@ namespace Mall.Module.MarketingCenter
return list;
}
/// <summary>
/// 徐总统计
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<OrderStatistics_Query> GetFXAllCancelOrderProfitLossList_V2(OrderStatistics_Query dmodel)
{
var list = orderRepository.GetFXAllCancelOrderProfitLossList_V2(dmodel);
return list;
}
public List<RB_Goods_OrderCommission_Extend> GetByOrderDetailId(RB_Goods_OrderCommission_Extend model)
......@@ -519,6 +568,7 @@ namespace Mall.Module.MarketingCenter
#region 首先 查询上期平均值
int PreDay = Convert.ToDateTime(prvETime).Day - 20;
#region 上月
decimal presCancelOrderNum = Math.Round(Convert.ToDecimal(prvlist.Where(x => x.Date.Day > 20).Sum(x => x.CancelOrderNum)) / PreDay, 2, MidpointRounding.AwayFromZero);
decimal presPeopleNum = Math.Round(Convert.ToDecimal(prvlist.Where(x => x.Date.Day > 20).Sum(x => x.PeopleNum)) / PreDay, 2, MidpointRounding.AwayFromZero);
decimal presOrderNum = Math.Round(Convert.ToDecimal(prvlist.Where(x => x.Date.Day > 20).Sum(x => x.OrderNum)) / PreDay, 2, MidpointRounding.AwayFromZero);
decimal presPayMoney = Math.Round(Convert.ToDecimal(prvlist.Where(x => x.Date.Day > 20).Sum(x => x.PayMoney)) / PreDay, 2, MidpointRounding.AwayFromZero);
......@@ -544,6 +594,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new
{
Date = "上期平均",
CancelOrderNum = presCancelOrderNum,
PeopleNum = presPeopleNum,
OrderNum = presOrderNum,
PayMoney = presPayMoney,
......@@ -572,6 +623,7 @@ namespace Mall.Module.MarketingCenter
int MaxDay = Convert.ToDateTime(EndTime).Day;
string SDate = StartTime;
#region 上期参数
decimal sCancelOrderNum = 0;
decimal sPeopleNum = 0;
decimal sOrderNum = 0;
decimal sPayMoney = 0;
......@@ -594,6 +646,7 @@ namespace Mall.Module.MarketingCenter
decimal sProfitRate = 0;
#endregion
#region 月平均参数
decimal yCancelOrderNum = 0;
decimal yPeopleNum = 0;
decimal yOrderNum = 0;
decimal yPayMoney = 0;
......@@ -622,6 +675,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new
{
DateStr = Convert.ToDateTime(SDate).ToString("MM-dd"),
CancelOrderNum = smodel?.CancelOrderNum ?? 0,
PeopleNum = smodel?.PeopleNum ?? 0,
OrderNum = smodel?.OrderNum ?? 0,
PayMoney = smodel?.PayMoney ?? 0,
......@@ -647,6 +701,7 @@ namespace Mall.Module.MarketingCenter
if (Convert.ToDateTime(SDate).Day == 10)
{
#region 本月
decimal CancelOrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day <= 10).Sum(x => x.CancelOrderNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal PeopleNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day <= 10).Sum(x => x.PeopleNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal OrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day <= 10).Sum(x => x.OrderNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal PayMoney = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day <= 10).Sum(x => x.PayMoney)) / 10, 2, MidpointRounding.AwayFromZero);
......@@ -672,6 +727,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new
{
Date = "平均",
CancelOrderNum,
PeopleNum,
OrderNum,
PayMoney,
......@@ -698,6 +754,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new
{
Date = "环比成长",
CancelOrderNum = Math.Round(presCancelOrderNum > 0 ? (CancelOrderNum - presCancelOrderNum) / presCancelOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100,
PeopleNum = Math.Round(presPeopleNum > 0 ? (PeopleNum - presPeopleNum) / presPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100,
OrderNum = Math.Round(presOrderNum > 0 ? (OrderNum - presOrderNum) / presOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100,
PayMoney = Math.Round(presPayMoney > 0 ? (PayMoney - presPayMoney) / presPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100,
......@@ -722,6 +779,7 @@ namespace Mall.Module.MarketingCenter
#endregion
#region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum;
yOrderNum += OrderNum;
yPayMoney += PayMoney;
......@@ -744,6 +802,7 @@ namespace Mall.Module.MarketingCenter
yProfitRate += ProfitRate;
#endregion
#region 当期赋值 用于下期环比
sCancelOrderNum = CancelOrderNum;
sPeopleNum = PeopleNum;
sOrderNum = OrderNum;
sPayMoney = PayMoney;
......@@ -769,6 +828,7 @@ namespace Mall.Module.MarketingCenter
else if (Convert.ToDateTime(SDate).Day == 20)
{
#region 本月
decimal CancelOrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day > 10 && x.Date.Day <= 20).Sum(x => x.CancelOrderNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal PeopleNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day >10 && x.Date.Day <= 20).Sum(x => x.PeopleNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal OrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day >10 && x.Date.Day <= 20).Sum(x => x.OrderNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal PayMoney = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day >10 && x.Date.Day <= 20).Sum(x => x.PayMoney)) / 10, 2, MidpointRounding.AwayFromZero);
......@@ -794,6 +854,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new
{
Date = "平均",
CancelOrderNum,
PeopleNum,
OrderNum,
PayMoney,
......@@ -820,6 +881,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new
{
Date = "环比成长",
CancelOrderNum = Math.Round(sCancelOrderNum > 0 ? (CancelOrderNum - sCancelOrderNum) / sCancelOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100,
PeopleNum = Math.Round(sPeopleNum > 0 ? (PeopleNum - sPeopleNum) / sPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100,
OrderNum = Math.Round(sOrderNum > 0 ? (OrderNum - sOrderNum) / sOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100,
PayMoney = Math.Round(sPayMoney > 0 ? (PayMoney - sPayMoney) / sPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100,
......@@ -844,6 +906,7 @@ namespace Mall.Module.MarketingCenter
#endregion
#region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum;
yOrderNum += OrderNum;
yPayMoney += PayMoney;
......@@ -866,6 +929,7 @@ namespace Mall.Module.MarketingCenter
yProfitRate += ProfitRate;
#endregion
#region 当期赋值 用于下期环比
sCancelOrderNum = CancelOrderNum;
sPeopleNum = PeopleNum;
sOrderNum = OrderNum;
sPayMoney = PayMoney;
......@@ -891,6 +955,7 @@ namespace Mall.Module.MarketingCenter
else if (Convert.ToDateTime(SDate).Day == MaxDay) {
int NowDay = MaxDay - 20;
#region 本月
decimal CancelOrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day > 20).Sum(x => x.CancelOrderNum)) / NowDay, 2, MidpointRounding.AwayFromZero);
decimal PeopleNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day >20).Sum(x => x.PeopleNum)) / NowDay, 2, MidpointRounding.AwayFromZero);
decimal OrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day >20).Sum(x => x.OrderNum)) / NowDay, 2, MidpointRounding.AwayFromZero);
decimal PayMoney = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day >20).Sum(x => x.PayMoney)) / NowDay, 2, MidpointRounding.AwayFromZero);
......@@ -916,6 +981,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new
{
Date = "平均",
CancelOrderNum,
PeopleNum,
OrderNum,
PayMoney,
......@@ -942,6 +1008,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new
{
Date = "环比成长",
CancelOrderNum = Math.Round(sCancelOrderNum > 0 ? (CancelOrderNum - sCancelOrderNum) / sCancelOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100,
PeopleNum = Math.Round(sPeopleNum > 0 ? (PeopleNum - sPeopleNum) / sPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100,
OrderNum = Math.Round(sOrderNum > 0 ? (OrderNum - sOrderNum) / sOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100,
PayMoney = Math.Round(sPayMoney > 0 ? (PayMoney - sPayMoney) / sPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100,
......@@ -966,6 +1033,7 @@ namespace Mall.Module.MarketingCenter
#endregion
#region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum;
yOrderNum += OrderNum;
yPayMoney += PayMoney;
......@@ -1000,6 +1068,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new
{
Date = "月平均",
CancelOrderNum = Math.Round(yCancelOrderNum / 3, 2, MidpointRounding.AwayFromZero),
PeopleNum = Math.Round(yPeopleNum / 3, 2, MidpointRounding.AwayFromZero),
OrderNum = Math.Round(yOrderNum / 3, 2, MidpointRounding.AwayFromZero),
PayMoney = Math.Round(yPayMoney / 3, 2, MidpointRounding.AwayFromZero),
......@@ -1032,6 +1101,7 @@ namespace Mall.Module.MarketingCenter
return new
{
TotalCancenNum = list.Sum(x => x.CancelOrderNum),
TotalPeopleNum = list.Sum(x => x.PeopleNum),
TotalOrderNum = list.Sum(x => x.OrderNum),
TotalPayMoney = list.Sum(x => x.PayMoney),
......@@ -1040,6 +1110,7 @@ namespace Mall.Module.MarketingCenter
TotalVIPNum,
TotalYXNum,
TotalJXNum,
AvgCancelNum = presCancelOrderNum,
AvgPeopleNum = presPeopleNum,
AvgOrderNum = presOrderNum,
AvgPayMoney = presPayMoney,
......@@ -1061,6 +1132,7 @@ namespace Mall.Module.MarketingCenter
AvgProfit = presProfit,
AvgProfitRate = presProfitRate,
MonthProfit = list.Sum(x => x.Profit),
MonthProfitRate = Math.Round(Convert.ToDecimal(list.Sum(x => x.ProfitRate)) / MaxDay, 2, MidpointRounding.AwayFromZero),
RList
};
}
......@@ -1085,6 +1157,7 @@ namespace Mall.Module.MarketingCenter
#region 首先 查询上期平均值
int PreDay = Convert.ToDateTime(prvETime).Day - 20;
#region 上月
decimal presCancelOrderNum = Math.Round(Convert.ToDecimal(prvlist.Where(x => x.Date.Day > 20).Sum(x => x.CancelOrderNum)) / PreDay, 2, MidpointRounding.AwayFromZero);
decimal presPeopleNum = Math.Round(Convert.ToDecimal(prvlist.Where(x => x.Date.Day > 20).Sum(x => x.PeopleNum)) / PreDay, 2, MidpointRounding.AwayFromZero);
decimal presOrderNum = Math.Round(Convert.ToDecimal(prvlist.Where(x => x.Date.Day > 20).Sum(x => x.OrderNum)) / PreDay, 2, MidpointRounding.AwayFromZero);
decimal presPayMoney = Math.Round(Convert.ToDecimal(prvlist.Where(x => x.Date.Day > 20).Sum(x => x.PayMoney)) / PreDay, 2, MidpointRounding.AwayFromZero);
......@@ -1122,6 +1195,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:presOrderNum.ToString()){ },
new ExcelColumn(value:presPayMoney.ToString()){ },
new ExcelColumn(value:presBuyNum.ToString()){ },
new ExcelColumn(value:presCancelOrderNum.ToString()){ },
new ExcelColumn(value:presAvgOrderNum.ToString()){ },
new ExcelColumn(value:presAvgBuyNum.ToString()){ },
new ExcelColumn(value:presAvgUnitPrice.ToString()){ },
......@@ -1153,6 +1227,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value: "付款單數") { },
new ExcelColumn(value: "付款金額") { },
new ExcelColumn(value: "付款件數") { },
new ExcelColumn(value: "取消單數") { },
new ExcelColumn(value: "平均每人購買單數") { },
new ExcelColumn(value: "平均每人購買件數") { },
new ExcelColumn(value: "平均每單單價") { },
......@@ -1174,6 +1249,7 @@ namespace Mall.Module.MarketingCenter
#endregion
#region 上期参数
decimal sCancelOrderNum = 0;
decimal sPeopleNum = 0;
decimal sOrderNum = 0;
decimal sPayMoney = 0;
......@@ -1196,6 +1272,7 @@ namespace Mall.Module.MarketingCenter
decimal sProfitRate = 0;
#endregion
#region 月平均参数
decimal yCancelOrderNum = 0;
decimal yPeopleNum = 0;
decimal yOrderNum = 0;
decimal yPayMoney = 0;
......@@ -1229,6 +1306,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:(smodel?.OrderNum ?? 0).ToString()){ },
new ExcelColumn(value:(smodel?.PayMoney ?? 0).ToString()){ },
new ExcelColumn(value:(smodel?.BuyNum ?? 0).ToString()){ },
new ExcelColumn(value:(smodel?.CancelOrderNum ?? 0).ToString()){ },
new ExcelColumn(value:(smodel?.AvgOrderNum ?? 0).ToString()){ },
new ExcelColumn(value:(smodel?.AvgBuyNum ?? 0).ToString()){ },
new ExcelColumn(value:(smodel?.AvgUnitPrice ?? 0).ToString()){ },
......@@ -1251,6 +1329,7 @@ namespace Mall.Module.MarketingCenter
if (Convert.ToDateTime(SDate).Day == 10)
{
#region 本月
decimal CancelOrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day <= 10).Sum(x => x.CancelOrderNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal PeopleNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day <= 10).Sum(x => x.PeopleNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal OrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day <= 10).Sum(x => x.OrderNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal PayMoney = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day <= 10).Sum(x => x.PayMoney)) / 10, 2, MidpointRounding.AwayFromZero);
......@@ -1282,6 +1361,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:(OrderNum).ToString()){ },
new ExcelColumn(value:(PayMoney).ToString()){ },
new ExcelColumn(value:(BuyNum).ToString()){ },
new ExcelColumn(value:(CancelOrderNum).ToString()){ },
new ExcelColumn(value:(AvgOrderNum).ToString()){ },
new ExcelColumn(value:(AvgBuyNum).ToString()){ },
new ExcelColumn(value:(AvgUnitPrice).ToString()){ },
......@@ -1306,24 +1386,25 @@ namespace Mall.Module.MarketingCenter
{
ExcelRows = new List<ExcelColumn>(23) {
new ExcelColumn(value:"环比成长"){ },
new ExcelColumn(value:(Math.Round(presPeopleNum > 0 ? (PeopleNum - presPeopleNum) / presPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presOrderNum > 0 ? (OrderNum - presOrderNum) / presOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presPayMoney > 0 ? (PayMoney - presPayMoney) / presPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presBuyNum > 0 ? (BuyNum - presBuyNum) / presBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgOrderNum > 0 ? (AvgOrderNum - presAvgOrderNum) / presAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgBuyNum > 0 ? (AvgBuyNum - presAvgBuyNum) / presAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgUnitPrice > 0 ? (AvgUnitPrice - presAvgUnitPrice) / presAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgBuyPrice > 0 ? (AvgBuyPrice - presAvgBuyPrice) / presAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presMemberNum > 0 ? (MemberNum - presMemberNum) / presMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presPaymentNum > 0 ? (PaymentNum - presPaymentNum) / presPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presMOrderRate > 0 ? (MOrderRate - presMOrderRate) / presMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presReBuyNum > 0 ? (ReBuyNum - presReBuyNum) / presReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presReBuyRate > 0 ? (ReBuyRate - presReBuyRate) / presReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presNewPeopleNum > 0 ? (NewPeopleNum - presNewPeopleNum) / presNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presPXNum > 0 ? (PXNum - presPXNum) / presPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presVipNum > 0 ? (VipNum - presVipNum) / presVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presYXNum > 0 ? (YXNum - presYXNum) / presYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presJXNum > 0 ? (JXNum - presJXNum) / presJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(presPeopleNum > 0 ? (PeopleNum - presPeopleNum) / presPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presOrderNum > 0 ? (OrderNum - presOrderNum) / presOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presPayMoney > 0 ? (PayMoney - presPayMoney) / presPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presBuyNum > 0 ? (BuyNum - presBuyNum) / presBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presCancelOrderNum > 0 ? (CancelOrderNum - presCancelOrderNum) / presCancelOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgOrderNum > 0 ? (AvgOrderNum - presAvgOrderNum) / presAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgBuyNum > 0 ? (AvgBuyNum - presAvgBuyNum) / presAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgUnitPrice > 0 ? (AvgUnitPrice - presAvgUnitPrice) / presAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgBuyPrice > 0 ? (AvgBuyPrice - presAvgBuyPrice) / presAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presMemberNum > 0 ? (MemberNum - presMemberNum) / presMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presPaymentNum > 0 ? (PaymentNum - presPaymentNum) / presPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presMOrderRate > 0 ? (MOrderRate - presMOrderRate) / presMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presReBuyNum > 0 ? (ReBuyNum - presReBuyNum) / presReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presReBuyRate > 0 ? (ReBuyRate - presReBuyRate) / presReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presNewPeopleNum > 0 ? (NewPeopleNum - presNewPeopleNum) / presNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presPXNum > 0 ? (PXNum - presPXNum) / presPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presVipNum > 0 ? (VipNum - presVipNum) / presVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presYXNum > 0 ? (YXNum - presYXNum) / presYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presJXNum > 0 ? (JXNum - presJXNum) / presJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
},
ColumnHight = 30
};
......@@ -1341,6 +1422,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value: "付款單數") { },
new ExcelColumn(value: "付款金額") { },
new ExcelColumn(value: "付款件數") { },
new ExcelColumn(value: "取消單數") { },
new ExcelColumn(value: "平均每人購買單數") { },
new ExcelColumn(value: "平均每人購買件數") { },
new ExcelColumn(value: "平均每單單價") { },
......@@ -1363,6 +1445,7 @@ namespace Mall.Module.MarketingCenter
#region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum;
yOrderNum += OrderNum;
yPayMoney += PayMoney;
......@@ -1385,6 +1468,7 @@ namespace Mall.Module.MarketingCenter
yProfitRate += ProfitRate;
#endregion
#region 当期赋值 用于下期环比
sCancelOrderNum = CancelOrderNum;
sPeopleNum = PeopleNum;
sOrderNum = OrderNum;
sPayMoney = PayMoney;
......@@ -1410,6 +1494,7 @@ namespace Mall.Module.MarketingCenter
else if (Convert.ToDateTime(SDate).Day == 20)
{
#region 本月
decimal CancelOrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day > 10 && x.Date.Day <= 20).Sum(x => x.CancelOrderNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal PeopleNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day > 10 && x.Date.Day <= 20).Sum(x => x.PeopleNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal OrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day > 10 && x.Date.Day <= 20).Sum(x => x.OrderNum)) / 10, 2, MidpointRounding.AwayFromZero);
decimal PayMoney = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day > 10 && x.Date.Day <= 20).Sum(x => x.PayMoney)) / 10, 2, MidpointRounding.AwayFromZero);
......@@ -1441,6 +1526,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:(OrderNum).ToString()){ },
new ExcelColumn(value:(PayMoney).ToString()){ },
new ExcelColumn(value:(BuyNum).ToString()){ },
new ExcelColumn(value:(CancelOrderNum).ToString()){ },
new ExcelColumn(value:(AvgOrderNum).ToString()){ },
new ExcelColumn(value:(AvgBuyNum).ToString()){ },
new ExcelColumn(value:(AvgUnitPrice).ToString()){ },
......@@ -1465,24 +1551,25 @@ namespace Mall.Module.MarketingCenter
{
ExcelRows = new List<ExcelColumn>(23) {
new ExcelColumn(value:"环比成长"){ },
new ExcelColumn(value:(Math.Round(sPeopleNum > 0 ? (PeopleNum - sPeopleNum) / sPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sOrderNum > 0 ? (OrderNum - sOrderNum) / sOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sPayMoney > 0 ? (PayMoney - sPayMoney) / sPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sBuyNum > 0 ? (BuyNum - sBuyNum) / sBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgOrderNum > 0 ? (AvgOrderNum - sAvgOrderNum) / sAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyNum > 0 ? (AvgBuyNum - sAvgBuyNum) / sAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgUnitPrice > 0 ? (AvgUnitPrice - sAvgUnitPrice) / sAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyPrice > 0 ? (AvgBuyPrice - sAvgBuyPrice) / sAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sMemberNum > 0 ? (MemberNum - sMemberNum) / sMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sPaymentNum > 0 ? (PaymentNum - sPaymentNum) / sPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sMOrderRate > 0 ? (MOrderRate - sMOrderRate) / sMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyNum > 0 ? (ReBuyNum - sReBuyNum) / sReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyRate > 0 ? (ReBuyRate - sReBuyRate) / sReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sNewPeopleNum > 0 ? (NewPeopleNum - sNewPeopleNum) / sNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sPXNum > 0 ? (PXNum - sPXNum) / sPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sVipNum > 0 ? (VipNum - sVipNum) / sVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sYXNum > 0 ? (YXNum - sYXNum) / sYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sJXNum > 0 ? (JXNum - sJXNum) / sJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sPeopleNum > 0 ? (PeopleNum - sPeopleNum) / sPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sOrderNum > 0 ? (OrderNum - sOrderNum) / sOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sPayMoney > 0 ? (PayMoney - sPayMoney) / sPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sBuyNum > 0 ? (BuyNum - sBuyNum) / sBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sCancelOrderNum > 0 ? (CancelOrderNum - sCancelOrderNum) / sCancelOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgOrderNum > 0 ? (AvgOrderNum - sAvgOrderNum) / sAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyNum > 0 ? (AvgBuyNum - sAvgBuyNum) / sAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgUnitPrice > 0 ? (AvgUnitPrice - sAvgUnitPrice) / sAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyPrice > 0 ? (AvgBuyPrice - sAvgBuyPrice) / sAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sMemberNum > 0 ? (MemberNum - sMemberNum) / sMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sPaymentNum > 0 ? (PaymentNum - sPaymentNum) / sPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sMOrderRate > 0 ? (MOrderRate - sMOrderRate) / sMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyNum > 0 ? (ReBuyNum - sReBuyNum) / sReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyRate > 0 ? (ReBuyRate - sReBuyRate) / sReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sNewPeopleNum > 0 ? (NewPeopleNum - sNewPeopleNum) / sNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sPXNum > 0 ? (PXNum - sPXNum) / sPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sVipNum > 0 ? (VipNum - sVipNum) / sVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sYXNum > 0 ? (YXNum - sYXNum) / sYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sJXNum > 0 ? (JXNum - sJXNum) / sJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
},
ColumnHight = 30
};
......@@ -1501,6 +1588,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value: "付款單數") { },
new ExcelColumn(value: "付款金額") { },
new ExcelColumn(value: "付款件數") { },
new ExcelColumn(value: "取消單數") { },
new ExcelColumn(value: "平均每人購買單數") { },
new ExcelColumn(value: "平均每人購買件數") { },
new ExcelColumn(value: "平均每單單價") { },
......@@ -1522,6 +1610,7 @@ namespace Mall.Module.MarketingCenter
#endregion
#region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum;
yOrderNum += OrderNum;
yPayMoney += PayMoney;
......@@ -1544,6 +1633,7 @@ namespace Mall.Module.MarketingCenter
yProfitRate += ProfitRate;
#endregion
#region 当期赋值 用于下期环比
sCancelOrderNum = CancelOrderNum;
sPeopleNum = PeopleNum;
sOrderNum = OrderNum;
sPayMoney = PayMoney;
......@@ -1570,6 +1660,7 @@ namespace Mall.Module.MarketingCenter
{
int NowDay = MaxDay - 20;
#region 本月
decimal CancelOrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day > 20).Sum(x => x.CancelOrderNum)) / NowDay, 2, MidpointRounding.AwayFromZero);
decimal PeopleNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day > 20).Sum(x => x.PeopleNum)) / NowDay, 2, MidpointRounding.AwayFromZero);
decimal OrderNum = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day > 20).Sum(x => x.OrderNum)) / NowDay, 2, MidpointRounding.AwayFromZero);
decimal PayMoney = Math.Round(Convert.ToDecimal(list.Where(x => x.Date.Day > 20).Sum(x => x.PayMoney)) / NowDay, 2, MidpointRounding.AwayFromZero);
......@@ -1601,6 +1692,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:(OrderNum).ToString()){ },
new ExcelColumn(value:(PayMoney).ToString()){ },
new ExcelColumn(value:(BuyNum).ToString()){ },
new ExcelColumn(value:(CancelOrderNum).ToString()){ },
new ExcelColumn(value:(AvgOrderNum).ToString()){ },
new ExcelColumn(value:(AvgBuyNum).ToString()){ },
new ExcelColumn(value:(AvgUnitPrice).ToString()){ },
......@@ -1625,24 +1717,25 @@ namespace Mall.Module.MarketingCenter
{
ExcelRows = new List<ExcelColumn>(23) {
new ExcelColumn(value:"环比成长"){ },
new ExcelColumn(value:(Math.Round(sPeopleNum > 0 ? (PeopleNum - sPeopleNum) / sPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sOrderNum > 0 ? (OrderNum - sOrderNum) / sOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sPayMoney > 0 ? (PayMoney - sPayMoney) / sPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sBuyNum > 0 ? (BuyNum - sBuyNum) / sBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgOrderNum > 0 ? (AvgOrderNum - sAvgOrderNum) / sAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyNum > 0 ? (AvgBuyNum - sAvgBuyNum) / sAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgUnitPrice > 0 ? (AvgUnitPrice - sAvgUnitPrice) / sAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyPrice > 0 ? (AvgBuyPrice - sAvgBuyPrice) / sAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sMemberNum > 0 ? (MemberNum - sMemberNum) / sMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sPaymentNum > 0 ? (PaymentNum - sPaymentNum) / sPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sMOrderRate > 0 ? (MOrderRate - sMOrderRate) / sMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyNum > 0 ? (ReBuyNum - sReBuyNum) / sReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyRate > 0 ? (ReBuyRate - sReBuyRate) / sReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sNewPeopleNum > 0 ? (NewPeopleNum - sNewPeopleNum) / sNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sPXNum > 0 ? (PXNum - sPXNum) / sPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sVipNum > 0 ? (VipNum - sVipNum) / sVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sYXNum > 0 ? (YXNum - sYXNum) / sYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sJXNum > 0 ? (JXNum - sJXNum) / sJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ },
new ExcelColumn(value:(Math.Round(sPeopleNum > 0 ? (PeopleNum - sPeopleNum) / sPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sOrderNum > 0 ? (OrderNum - sOrderNum) / sOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sPayMoney > 0 ? (PayMoney - sPayMoney) / sPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sBuyNum > 0 ? (BuyNum - sBuyNum) / sBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sCancelOrderNum > 0 ? (CancelOrderNum - sCancelOrderNum) / sCancelOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgOrderNum > 0 ? (AvgOrderNum - sAvgOrderNum) / sAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyNum > 0 ? (AvgBuyNum - sAvgBuyNum) / sAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgUnitPrice > 0 ? (AvgUnitPrice - sAvgUnitPrice) / sAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyPrice > 0 ? (AvgBuyPrice - sAvgBuyPrice) / sAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sMemberNum > 0 ? (MemberNum - sMemberNum) / sMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sPaymentNum > 0 ? (PaymentNum - sPaymentNum) / sPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sMOrderRate > 0 ? (MOrderRate - sMOrderRate) / sMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyNum > 0 ? (ReBuyNum - sReBuyNum) / sReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyRate > 0 ? (ReBuyRate - sReBuyRate) / sReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sNewPeopleNum > 0 ? (NewPeopleNum - sNewPeopleNum) / sNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sPXNum > 0 ? (PXNum - sPXNum) / sPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sVipNum > 0 ? (VipNum - sVipNum) / sVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sYXNum > 0 ? (YXNum - sYXNum) / sYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sJXNum > 0 ? (JXNum - sJXNum) / sJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
},
ColumnHight = 30
};
......@@ -1653,6 +1746,7 @@ namespace Mall.Module.MarketingCenter
DataList.Add(new ExcelDataSource() { ExcelRows = new List<ExcelColumn>(23) { new ExcelColumn(value: "") { Colspan = 19 } } });
#region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum;
yOrderNum += OrderNum;
yPayMoney += PayMoney;
......@@ -1692,6 +1786,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:Math.Round(yOrderNum/3,2,MidpointRounding.AwayFromZero).ToString()){ },
new ExcelColumn(value:Math.Round(yPayMoney/3,2,MidpointRounding.AwayFromZero).ToString()){ },
new ExcelColumn(value:Math.Round(yBuyNum/3,2,MidpointRounding.AwayFromZero).ToString()){ },
new ExcelColumn(value:Math.Round(yCancelOrderNum/3,2,MidpointRounding.AwayFromZero).ToString()){ },
new ExcelColumn(value:Math.Round(yAvgOrderNum/3,2,MidpointRounding.AwayFromZero).ToString()){ },
new ExcelColumn(value:Math.Round(yAvgBuyNum/3,2,MidpointRounding.AwayFromZero).ToString()){ },
new ExcelColumn(value:Math.Round(yAvgUnitPrice/3,2,MidpointRounding.AwayFromZero).ToString()){ },
......@@ -1724,6 +1819,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value: "付款單數累計") { },
new ExcelColumn(value: "付款金額累計") { },
new ExcelColumn(value: "購買件數累計") { },
new ExcelColumn(value: "取消單數累計") { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { },
......@@ -1758,6 +1854,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value: list.Sum(x => x.OrderNum).ToString()) { },
new ExcelColumn(value: list.Sum(x => x.PayMoney).ToString()) { },
new ExcelColumn(value: list.Sum(x => x.BuyNum).ToString()) { },
new ExcelColumn(value: list.Sum(x => x.CancelOrderNum).ToString()) { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { },
......@@ -1796,6 +1893,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "會員總數") { },
new ExcelColumn(value: (TotalPXNum+TotalVIPNum+TotalYXNum+TotalJXNum).ToString()) { }
},
......@@ -1823,6 +1921,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { }
},
ColumnHight = 30
......@@ -1862,10 +1961,10 @@ namespace Mall.Module.MarketingCenter
mmodel.TotalPayPeople = mlist.Any() ? mlist.Max(x => x.PaymentNum) : 0;
mmodel.Profit = mlist.Sum(x => x.Profit);
//抓取累计数据
int TotalPXNum = mlist.Any() ? list.Max(x => x.PXLJNum) : 0;
int TotalVIPNum = mlist.Any() ? list.Max(x => x.VipLJNum) : 0;
int TotalYXNum = mlist.Any() ? list.Max(x => x.YXLJNum) : 0;
int TotalJXNum = mlist.Any() ? list.Max(x => x.JXLJNum) : 0;
int TotalPXNum = mlist.Any() ? mlist.Max(x => x.PXLJNum) : 0;
int TotalVIPNum = mlist.Any() ? mlist.Max(x => x.VipLJNum) : 0;
int TotalYXNum = mlist.Any() ? mlist.Max(x => x.YXLJNum) : 0;
int TotalJXNum = mlist.Any() ? mlist.Max(x => x.JXLJNum) : 0;
mmodel.PXNum = TotalPXNum;
mmodel.VipNum = TotalVIPNum;
mmodel.YXNum = TotalYXNum;
......@@ -2092,11 +2191,12 @@ namespace Mall.Module.MarketingCenter
PayMoney = MonthSList2.Sum(x => x.PayMoney),
BuyNum = MonthSList2.Sum(x => x.BuyNum),
Profit = MonthSList2.Sum(x => x.Profit),
PXNum = MonthSList2.Sum(x => x.PXNum),
VipNum = MonthSList2.Sum(x => x.VipNum),
YXNum = MonthSList2.Sum(x => x.YXNum),
JXNum = MonthSList2.Sum(x => x.JXNum),
TotalMNum = MonthSList2.Sum(x => x.TotalMNum),
TotalPayPeople = MonthSList2.Any()? MonthSList2.Max(x => x.TotalPayPeople) : 0,
PXNum = MonthSList2.Any()? MonthSList2.Max(x => x.PXNum) : 0,
VipNum = MonthSList2.Any() ? MonthSList2.Max(x => x.VipNum) : 0,
YXNum = MonthSList2.Any() ? MonthSList2.Max(x => x.YXNum) : 0,
JXNum = MonthSList2.Any() ? MonthSList2.Max(x => x.JXNum) : 0,
TotalMNum = MonthSList2.Any() ? MonthSList2.Max(x => x.TotalMNum) : 0,
MAvgPeopleNum = Math.Round(MonthSList2.Sum(x => x.MAvgPeopleNum) / TotalMonthNum, 2, MidpointRounding.AwayFromZero),
MAvgOrderNum = Math.Round(MonthSList2.Sum(x => x.MAvgOrderNum) / TotalMonthNum, 2, MidpointRounding.AwayFromZero),
......@@ -2230,10 +2330,10 @@ namespace Mall.Module.MarketingCenter
mmodel.TotalPayPeople = mlist.Any() ? mlist.Max(x => x.PaymentNum) : 0;
mmodel.Profit = mlist.Sum(x => x.Profit);
//抓取累计数据
int TotalPXNum = mlist.Any() ? list.Max(x => x.PXLJNum) : 0;
int TotalVIPNum = mlist.Any() ? list.Max(x => x.VipLJNum) : 0;
int TotalYXNum = mlist.Any() ? list.Max(x => x.YXLJNum) : 0;
int TotalJXNum = mlist.Any() ? list.Max(x => x.JXLJNum) : 0;
int TotalPXNum = mlist.Any() ? mlist.Max(x => x.PXLJNum) : 0;
int TotalVIPNum = mlist.Any() ? mlist.Max(x => x.VipLJNum) : 0;
int TotalYXNum = mlist.Any() ? mlist.Max(x => x.YXLJNum) : 0;
int TotalJXNum = mlist.Any() ? mlist.Max(x => x.JXLJNum) : 0;
mmodel.PXNum = TotalPXNum;
mmodel.VipNum = TotalVIPNum;
mmodel.YXNum = TotalYXNum;
......@@ -2461,11 +2561,12 @@ namespace Mall.Module.MarketingCenter
PayMoney = MonthSList2.Sum(x => x.PayMoney),
BuyNum = MonthSList2.Sum(x => x.BuyNum),
Profit = MonthSList2.Sum(x => x.Profit),
PXNum = MonthSList2.Sum(x => x.PXNum),
VipNum = MonthSList2.Sum(x => x.VipNum),
YXNum = MonthSList2.Sum(x => x.YXNum),
JXNum = MonthSList2.Sum(x => x.JXNum),
TotalMNum = MonthSList2.Sum(x => x.TotalMNum),
TotalPayPeople = MonthSList2.Any() ? MonthSList2.Max(x => x.TotalPayPeople) : 0,
PXNum = MonthSList2.Any() ? MonthSList2.Max(x => x.PXNum) : 0,
VipNum = MonthSList2.Any() ? MonthSList2.Max(x => x.VipNum) : 0,
YXNum = MonthSList2.Any() ? MonthSList2.Max(x => x.YXNum) : 0,
JXNum = MonthSList2.Any() ? MonthSList2.Max(x => x.JXNum) : 0,
TotalMNum = MonthSList2.Any() ? MonthSList2.Max(x => x.TotalMNum) : 0,
MAvgPeopleNum = Math.Round(MonthSList2.Sum(x => x.MAvgPeopleNum) / TotalMonthNum, 2, MidpointRounding.AwayFromZero),
MAvgOrderNum = Math.Round(MonthSList2.Sum(x => x.MAvgOrderNum) / TotalMonthNum, 2, MidpointRounding.AwayFromZero),
......@@ -3053,18 +3154,20 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Query_V2 cmodel = new User_Statistics_Query_V2() { Date = item.Date + "成長率" };
// 成长率 = (当前年 - 上年) /上年
cmodel.PeopleNum = Math.Round(PreModel.PeopleNum > 0 ? Convert.ToDecimal(item.PeopleNum - PreModel.PeopleNum) / PreModel.PeopleNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.OrderNum = Math.Round(PreModel.OrderNum > 0 ? Convert.ToDecimal(item.OrderNum - PreModel.OrderNum) / PreModel.OrderNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PayMoney = Math.Round(PreModel.PayMoney > 0 ? Convert.ToDecimal(item.PayMoney - PreModel.PayMoney) / PreModel.PayMoney : 1, 2, MidpointRounding.AwayFromZero);
cmodel.BuyNum = Math.Round(PreModel.BuyNum > 0 ? Convert.ToDecimal(item.BuyNum - PreModel.BuyNum) / PreModel.BuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.TotalPayPeople = Math.Round(PreModel.TotalPayPeople > 0 ? Convert.ToDecimal(item.TotalPayPeople - PreModel.TotalPayPeople) / PreModel.TotalPayPeople : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.Profit = Math.Round(PreModel.Profit > 0 ? Convert.ToDecimal(item.Profit - PreModel.Profit) / PreModel.Profit : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PXNum = Math.Round(PreModel.PXNum > 0 ? Convert.ToDecimal(item.PXNum - PreModel.PXNum) / PreModel.PXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.VipNum = Math.Round(PreModel.VipNum > 0 ? Convert.ToDecimal(item.VipNum - PreModel.VipNum) / PreModel.VipNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.YXNum = Math.Round(PreModel.YXNum > 0 ? Convert.ToDecimal(item.YXNum - PreModel.YXNum) / PreModel.YXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.JXNum = Math.Round(PreModel.JXNum > 0 ? Convert.ToDecimal(item.JXNum - PreModel.JXNum) / PreModel.JXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.TotalMNum = cmodel.PXNum + cmodel.VipNum + cmodel.YXNum + cmodel.JXNum;
cmodel.PeopleNum = Math.Round(PreModel.PeopleNum > 0 ? Convert.ToDecimal(item.PeopleNum - PreModel.PeopleNum) / PreModel.PeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.OrderNum = Math.Round(PreModel.OrderNum > 0 ? Convert.ToDecimal(item.OrderNum - PreModel.OrderNum) / PreModel.OrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PayMoney = Math.Round(PreModel.PayMoney > 0 ? Convert.ToDecimal(item.PayMoney - PreModel.PayMoney) / PreModel.PayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.BuyNum = Math.Round(PreModel.BuyNum > 0 ? Convert.ToDecimal(item.BuyNum - PreModel.BuyNum) / PreModel.BuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.TotalPayPeople = Math.Round(PreModel.TotalPayPeople > 0 ? Convert.ToDecimal(item.TotalPayPeople - PreModel.TotalPayPeople) / PreModel.TotalPayPeople : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.Profit = Math.Round(PreModel.Profit > 0 ? Convert.ToDecimal(item.Profit - PreModel.Profit) / PreModel.Profit : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PXNum = Math.Round(PreModel.PXNum > 0 ? Convert.ToDecimal(item.PXNum - PreModel.PXNum) / PreModel.PXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.VipNum = Math.Round(PreModel.VipNum > 0 ? Convert.ToDecimal(item.VipNum - PreModel.VipNum) / PreModel.VipNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.YXNum = Math.Round(PreModel.YXNum > 0 ? Convert.ToDecimal(item.YXNum - PreModel.YXNum) / PreModel.YXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.JXNum = Math.Round(PreModel.JXNum > 0 ? Convert.ToDecimal(item.JXNum - PreModel.JXNum) / PreModel.JXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
var TotalMNum = item.PXNum + item.VipNum + item.YXNum + item.JXNum;
var PreTotalMNum = PreModel.PXNum + PreModel.VipNum + PreModel.YXNum + PreModel.JXNum;
cmodel.TotalMNum = Math.Round(PreTotalMNum > 0 ? Convert.ToDecimal(TotalMNum - PreTotalMNum) / PreTotalMNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
YearSCList.Add(cmodel);
}
}
......@@ -3082,21 +3185,21 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearAvgSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Query cmodel = new User_Statistics_Query() { Date = item.Date + "成長率" };
// 成长率 = (当前年 - 上年) /上年
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgOrderNum = Math.Round(PreModel.MAvgOrderNum > 0 ? Convert.ToDecimal(item.MAvgOrderNum - PreModel.MAvgOrderNum) / PreModel.MAvgOrderNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgPayMoney = Math.Round(PreModel.MAvgPayMoney > 0 ? Convert.ToDecimal(item.MAvgPayMoney - PreModel.MAvgPayMoney) / PreModel.MAvgPayMoney : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgBuyNum = Math.Round(PreModel.MAvgBuyNum > 0 ? Convert.ToDecimal(item.MAvgBuyNum - PreModel.MAvgBuyNum) / PreModel.MAvgBuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgOrderNum = Math.Round(PreModel.PAvgOrderNum > 0 ? Convert.ToDecimal(item.PAvgOrderNum - PreModel.PAvgOrderNum) / PreModel.PAvgOrderNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgBuyNum = Math.Round(PreModel.PAvgBuyNum > 0 ? Convert.ToDecimal(item.PAvgBuyNum - PreModel.PAvgBuyNum) / PreModel.PAvgBuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgBuyPrice = Math.Round(PreModel.PAvgBuyPrice > 0 ? Convert.ToDecimal(item.PAvgBuyPrice - PreModel.PAvgBuyPrice) / PreModel.PAvgBuyPrice : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgUnitPrice = Math.Round(PreModel.PAvgUnitPrice > 0 ? Convert.ToDecimal(item.PAvgUnitPrice - PreModel.PAvgUnitPrice) / PreModel.PAvgUnitPrice : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgMemberNum = Math.Round(PreModel.PAvgMemberNum > 0 ? Convert.ToDecimal(item.PAvgMemberNum - PreModel.PAvgMemberNum) / PreModel.PAvgMemberNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgPaymentNum = Math.Round(PreModel.PAvgPaymentNum > 0 ? Convert.ToDecimal(item.PAvgPaymentNum - PreModel.PAvgPaymentNum) / PreModel.PAvgPaymentNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgMOrderRate = Math.Round(PreModel.PAvgMOrderRate > 0 ? Convert.ToDecimal(item.PAvgMOrderRate - PreModel.PAvgMOrderRate) / PreModel.PAvgMOrderRate : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgReBuyNum = Math.Round(PreModel.PAvgReBuyNum > 0 ? Convert.ToDecimal(item.PAvgReBuyNum - PreModel.PAvgReBuyNum) / PreModel.PAvgReBuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgReBuyRate = Math.Round(PreModel.PAvgReBuyRate > 0 ? Convert.ToDecimal(item.PAvgReBuyRate - PreModel.PAvgReBuyRate) / PreModel.PAvgReBuyRate : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgNewPeopleNum = Math.Round(PreModel.PAvgNewPeopleNum > 0 ? Convert.ToDecimal(item.PAvgNewPeopleNum - PreModel.PAvgNewPeopleNum) / PreModel.PAvgNewPeopleNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgProfitRate = Math.Round(PreModel.PAvgProfitRate > 0 ? Convert.ToDecimal(item.PAvgProfitRate - PreModel.PAvgProfitRate) / PreModel.PAvgProfitRate : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgOrderNum = Math.Round(PreModel.MAvgOrderNum > 0 ? Convert.ToDecimal(item.MAvgOrderNum - PreModel.MAvgOrderNum) / PreModel.MAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgPayMoney = Math.Round(PreModel.MAvgPayMoney > 0 ? Convert.ToDecimal(item.MAvgPayMoney - PreModel.MAvgPayMoney) / PreModel.MAvgPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgBuyNum = Math.Round(PreModel.MAvgBuyNum > 0 ? Convert.ToDecimal(item.MAvgBuyNum - PreModel.MAvgBuyNum) / PreModel.MAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgOrderNum = Math.Round(PreModel.PAvgOrderNum > 0 ? Convert.ToDecimal(item.PAvgOrderNum - PreModel.PAvgOrderNum) / PreModel.PAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgBuyNum = Math.Round(PreModel.PAvgBuyNum > 0 ? Convert.ToDecimal(item.PAvgBuyNum - PreModel.PAvgBuyNum) / PreModel.PAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgBuyPrice = Math.Round(PreModel.PAvgBuyPrice > 0 ? Convert.ToDecimal(item.PAvgBuyPrice - PreModel.PAvgBuyPrice) / PreModel.PAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgUnitPrice = Math.Round(PreModel.PAvgUnitPrice > 0 ? Convert.ToDecimal(item.PAvgUnitPrice - PreModel.PAvgUnitPrice) / PreModel.PAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgMemberNum = Math.Round(PreModel.PAvgMemberNum > 0 ? Convert.ToDecimal(item.PAvgMemberNum - PreModel.PAvgMemberNum) / PreModel.PAvgMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgPaymentNum = Math.Round(PreModel.PAvgPaymentNum > 0 ? Convert.ToDecimal(item.PAvgPaymentNum - PreModel.PAvgPaymentNum) / PreModel.PAvgPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgMOrderRate = Math.Round(PreModel.PAvgMOrderRate > 0 ? Convert.ToDecimal(item.PAvgMOrderRate - PreModel.PAvgMOrderRate) / PreModel.PAvgMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgReBuyNum = Math.Round(PreModel.PAvgReBuyNum > 0 ? Convert.ToDecimal(item.PAvgReBuyNum - PreModel.PAvgReBuyNum) / PreModel.PAvgReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgReBuyRate = Math.Round(PreModel.PAvgReBuyRate > 0 ? Convert.ToDecimal(item.PAvgReBuyRate - PreModel.PAvgReBuyRate) / PreModel.PAvgReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgNewPeopleNum = Math.Round(PreModel.PAvgNewPeopleNum > 0 ? Convert.ToDecimal(item.PAvgNewPeopleNum - PreModel.PAvgNewPeopleNum) / PreModel.PAvgNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgProfitRate = Math.Round(PreModel.PAvgProfitRate > 0 ? Convert.ToDecimal(item.PAvgProfitRate - PreModel.PAvgProfitRate) / PreModel.PAvgProfitRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
YearAvgSCList.Add(cmodel);
}
......@@ -3115,23 +3218,23 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearRateSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Rate_Query cmodel = new User_Statistics_Rate_Query() { Date = item.Date + "成長率" };
// 成长率 = (当前年 - 上年) /上年
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgOrderNum = Math.Round(PreModel.MAvgOrderNum > 0 ? Convert.ToDecimal(item.MAvgOrderNum - PreModel.MAvgOrderNum) / PreModel.MAvgOrderNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgPayMoney = Math.Round(PreModel.MAvgPayMoney > 0 ? Convert.ToDecimal(item.MAvgPayMoney - PreModel.MAvgPayMoney) / PreModel.MAvgPayMoney : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgBuyNum = Math.Round(PreModel.MAvgBuyNum > 0 ? Convert.ToDecimal(item.MAvgBuyNum - PreModel.MAvgBuyNum) / PreModel.MAvgBuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgOrderNum = Math.Round(PreModel.PAvgOrderNum > 0 ? Convert.ToDecimal(item.PAvgOrderNum - PreModel.PAvgOrderNum) / PreModel.PAvgOrderNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgBuyNum = Math.Round(PreModel.PAvgBuyNum > 0 ? Convert.ToDecimal(item.PAvgBuyNum - PreModel.PAvgBuyNum) / PreModel.PAvgBuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgBuyPrice = Math.Round(PreModel.PAvgBuyPrice > 0 ? Convert.ToDecimal(item.PAvgBuyPrice - PreModel.PAvgBuyPrice) / PreModel.PAvgBuyPrice : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgUnitPrice = Math.Round(PreModel.PAvgUnitPrice > 0 ? Convert.ToDecimal(item.PAvgUnitPrice - PreModel.PAvgUnitPrice) / PreModel.PAvgUnitPrice : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgMOrderRate = Math.Round(PreModel.PAvgMOrderRate > 0 ? Convert.ToDecimal(item.PAvgMOrderRate - PreModel.PAvgMOrderRate) / PreModel.PAvgMOrderRate : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgProfitRate = Math.Round(PreModel.PAvgProfitRate > 0 ? Convert.ToDecimal(item.PAvgProfitRate - PreModel.PAvgProfitRate) / PreModel.PAvgProfitRate : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgPXNum = Math.Round(PreModel.PAvgPXNum > 0 ? Convert.ToDecimal(item.PAvgPXNum - PreModel.PAvgPXNum) / PreModel.PAvgPXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgVipNum = Math.Round(PreModel.PAvgVipNum > 0 ? Convert.ToDecimal(item.PAvgVipNum - PreModel.PAvgVipNum) / PreModel.PAvgVipNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgYXNum = Math.Round(PreModel.PAvgYXNum > 0 ? Convert.ToDecimal(item.PAvgYXNum - PreModel.PAvgYXNum) / PreModel.PAvgYXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgJXNum = Math.Round(PreModel.PAvgJXNum > 0 ? Convert.ToDecimal(item.PAvgJXNum - PreModel.PAvgJXNum) / PreModel.PAvgJXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgTotalMNum = Math.Round(PreModel.PAvgTotalMNum > 0 ? Convert.ToDecimal(item.PAvgTotalMNum - PreModel.PAvgTotalMNum) / PreModel.PAvgTotalMNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgProfit = Math.Round(PreModel.PAvgProfit > 0 ? Convert.ToDecimal(item.PAvgProfit - PreModel.PAvgProfit) / PreModel.PAvgProfit : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgOrderNum = Math.Round(PreModel.MAvgOrderNum > 0 ? Convert.ToDecimal(item.MAvgOrderNum - PreModel.MAvgOrderNum) / PreModel.MAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgPayMoney = Math.Round(PreModel.MAvgPayMoney > 0 ? Convert.ToDecimal(item.MAvgPayMoney - PreModel.MAvgPayMoney) / PreModel.MAvgPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgBuyNum = Math.Round(PreModel.MAvgBuyNum > 0 ? Convert.ToDecimal(item.MAvgBuyNum - PreModel.MAvgBuyNum) / PreModel.MAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgOrderNum = Math.Round(PreModel.PAvgOrderNum > 0 ? Convert.ToDecimal(item.PAvgOrderNum - PreModel.PAvgOrderNum) / PreModel.PAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgBuyNum = Math.Round(PreModel.PAvgBuyNum > 0 ? Convert.ToDecimal(item.PAvgBuyNum - PreModel.PAvgBuyNum) / PreModel.PAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgBuyPrice = Math.Round(PreModel.PAvgBuyPrice > 0 ? Convert.ToDecimal(item.PAvgBuyPrice - PreModel.PAvgBuyPrice) / PreModel.PAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgUnitPrice = Math.Round(PreModel.PAvgUnitPrice > 0 ? Convert.ToDecimal(item.PAvgUnitPrice - PreModel.PAvgUnitPrice) / PreModel.PAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgMOrderRate = Math.Round(PreModel.PAvgMOrderRate > 0 ? Convert.ToDecimal(item.PAvgMOrderRate - PreModel.PAvgMOrderRate) / PreModel.PAvgMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgProfitRate = Math.Round(PreModel.PAvgProfitRate > 0 ? Convert.ToDecimal(item.PAvgProfitRate - PreModel.PAvgProfitRate) / PreModel.PAvgProfitRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgPXNum = Math.Round(PreModel.PAvgPXNum > 0 ? Convert.ToDecimal(item.PAvgPXNum - PreModel.PAvgPXNum) / PreModel.PAvgPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgVipNum = Math.Round(PreModel.PAvgVipNum > 0 ? Convert.ToDecimal(item.PAvgVipNum - PreModel.PAvgVipNum) / PreModel.PAvgVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgYXNum = Math.Round(PreModel.PAvgYXNum > 0 ? Convert.ToDecimal(item.PAvgYXNum - PreModel.PAvgYXNum) / PreModel.PAvgYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgJXNum = Math.Round(PreModel.PAvgJXNum > 0 ? Convert.ToDecimal(item.PAvgJXNum - PreModel.PAvgJXNum) / PreModel.PAvgJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgTotalMNum = Math.Round(PreModel.PAvgTotalMNum > 0 ? Convert.ToDecimal(item.PAvgTotalMNum - PreModel.PAvgTotalMNum) / PreModel.PAvgTotalMNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgProfit = Math.Round(PreModel.PAvgProfit > 0 ? Convert.ToDecimal(item.PAvgProfit - PreModel.PAvgProfit) / PreModel.PAvgProfit : 1, 4, MidpointRounding.AwayFromZero) * 100;
YearRateSCList.Add(cmodel);
}
......@@ -3556,17 +3659,17 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Query_V2 cmodel = new User_Statistics_Query_V2() { Date = item.Date + "成長率" };
// 成长率 = (当前年 - 上年) /上年
cmodel.PeopleNum = Math.Round(PreModel.PeopleNum > 0 ? Convert.ToDecimal(item.PeopleNum - PreModel.PeopleNum) / PreModel.PeopleNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.OrderNum = Math.Round(PreModel.OrderNum > 0 ? Convert.ToDecimal(item.OrderNum - PreModel.OrderNum) / PreModel.OrderNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PayMoney = Math.Round(PreModel.PayMoney > 0 ? Convert.ToDecimal(item.PayMoney - PreModel.PayMoney) / PreModel.PayMoney : 1, 2, MidpointRounding.AwayFromZero);
cmodel.BuyNum = Math.Round(PreModel.BuyNum > 0 ? Convert.ToDecimal(item.BuyNum - PreModel.BuyNum) / PreModel.BuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.TotalPayPeople = Math.Round(PreModel.TotalPayPeople > 0 ? Convert.ToDecimal(item.TotalPayPeople - PreModel.TotalPayPeople) / PreModel.TotalPayPeople : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.Profit = Math.Round(PreModel.Profit > 0 ? Convert.ToDecimal(item.Profit - PreModel.Profit) / PreModel.Profit : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PXNum = Math.Round(PreModel.PXNum > 0 ? Convert.ToDecimal(item.PXNum - PreModel.PXNum) / PreModel.PXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.VipNum = Math.Round(PreModel.VipNum > 0 ? Convert.ToDecimal(item.VipNum - PreModel.VipNum) / PreModel.VipNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.YXNum = Math.Round(PreModel.YXNum > 0 ? Convert.ToDecimal(item.YXNum - PreModel.YXNum) / PreModel.YXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.JXNum = Math.Round(PreModel.JXNum > 0 ? Convert.ToDecimal(item.JXNum - PreModel.JXNum) / PreModel.JXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PeopleNum = Math.Round(PreModel.PeopleNum > 0 ? Convert.ToDecimal(item.PeopleNum - PreModel.PeopleNum) / PreModel.PeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.OrderNum = Math.Round(PreModel.OrderNum > 0 ? Convert.ToDecimal(item.OrderNum - PreModel.OrderNum) / PreModel.OrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PayMoney = Math.Round(PreModel.PayMoney > 0 ? Convert.ToDecimal(item.PayMoney - PreModel.PayMoney) / PreModel.PayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.BuyNum = Math.Round(PreModel.BuyNum > 0 ? Convert.ToDecimal(item.BuyNum - PreModel.BuyNum) / PreModel.BuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.TotalPayPeople = Math.Round(PreModel.TotalPayPeople > 0 ? Convert.ToDecimal(item.TotalPayPeople - PreModel.TotalPayPeople) / PreModel.TotalPayPeople : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.Profit = Math.Round(PreModel.Profit > 0 ? Convert.ToDecimal(item.Profit - PreModel.Profit) / PreModel.Profit : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PXNum = Math.Round(PreModel.PXNum > 0 ? Convert.ToDecimal(item.PXNum - PreModel.PXNum) / PreModel.PXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.VipNum = Math.Round(PreModel.VipNum > 0 ? Convert.ToDecimal(item.VipNum - PreModel.VipNum) / PreModel.VipNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.YXNum = Math.Round(PreModel.YXNum > 0 ? Convert.ToDecimal(item.YXNum - PreModel.YXNum) / PreModel.YXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.JXNum = Math.Round(PreModel.JXNum > 0 ? Convert.ToDecimal(item.JXNum - PreModel.JXNum) / PreModel.JXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.TotalMNum = cmodel.PXNum + cmodel.VipNum + cmodel.YXNum + cmodel.JXNum;
YearSCList.Add(cmodel);
}
......@@ -3585,21 +3688,21 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearAvgSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Query cmodel = new User_Statistics_Query() { Date = item.Date + "成長率" };
// 成长率 = (当前年 - 上年) /上年
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgOrderNum = Math.Round(PreModel.MAvgOrderNum > 0 ? Convert.ToDecimal(item.MAvgOrderNum - PreModel.MAvgOrderNum) / PreModel.MAvgOrderNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgPayMoney = Math.Round(PreModel.MAvgPayMoney > 0 ? Convert.ToDecimal(item.MAvgPayMoney - PreModel.MAvgPayMoney) / PreModel.MAvgPayMoney : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgBuyNum = Math.Round(PreModel.MAvgBuyNum > 0 ? Convert.ToDecimal(item.MAvgBuyNum - PreModel.MAvgBuyNum) / PreModel.MAvgBuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgOrderNum = Math.Round(PreModel.PAvgOrderNum > 0 ? Convert.ToDecimal(item.PAvgOrderNum - PreModel.PAvgOrderNum) / PreModel.PAvgOrderNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgBuyNum = Math.Round(PreModel.PAvgBuyNum > 0 ? Convert.ToDecimal(item.PAvgBuyNum - PreModel.PAvgBuyNum) / PreModel.PAvgBuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgBuyPrice = Math.Round(PreModel.PAvgBuyPrice > 0 ? Convert.ToDecimal(item.PAvgBuyPrice - PreModel.PAvgBuyPrice) / PreModel.PAvgBuyPrice : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgUnitPrice = Math.Round(PreModel.PAvgUnitPrice > 0 ? Convert.ToDecimal(item.PAvgUnitPrice - PreModel.PAvgUnitPrice) / PreModel.PAvgUnitPrice : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgMemberNum = Math.Round(PreModel.PAvgMemberNum > 0 ? Convert.ToDecimal(item.PAvgMemberNum - PreModel.PAvgMemberNum) / PreModel.PAvgMemberNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgPaymentNum = Math.Round(PreModel.PAvgPaymentNum > 0 ? Convert.ToDecimal(item.PAvgPaymentNum - PreModel.PAvgPaymentNum) / PreModel.PAvgPaymentNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgMOrderRate = Math.Round(PreModel.PAvgMOrderRate > 0 ? Convert.ToDecimal(item.PAvgMOrderRate - PreModel.PAvgMOrderRate) / PreModel.PAvgMOrderRate : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgReBuyNum = Math.Round(PreModel.PAvgReBuyNum > 0 ? Convert.ToDecimal(item.PAvgReBuyNum - PreModel.PAvgReBuyNum) / PreModel.PAvgReBuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgReBuyRate = Math.Round(PreModel.PAvgReBuyRate > 0 ? Convert.ToDecimal(item.PAvgReBuyRate - PreModel.PAvgReBuyRate) / PreModel.PAvgReBuyRate : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgNewPeopleNum = Math.Round(PreModel.PAvgNewPeopleNum > 0 ? Convert.ToDecimal(item.PAvgNewPeopleNum - PreModel.PAvgNewPeopleNum) / PreModel.PAvgNewPeopleNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgProfitRate = Math.Round(PreModel.PAvgProfitRate > 0 ? Convert.ToDecimal(item.PAvgProfitRate - PreModel.PAvgProfitRate) / PreModel.PAvgProfitRate : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgOrderNum = Math.Round(PreModel.MAvgOrderNum > 0 ? Convert.ToDecimal(item.MAvgOrderNum - PreModel.MAvgOrderNum) / PreModel.MAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgPayMoney = Math.Round(PreModel.MAvgPayMoney > 0 ? Convert.ToDecimal(item.MAvgPayMoney - PreModel.MAvgPayMoney) / PreModel.MAvgPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgBuyNum = Math.Round(PreModel.MAvgBuyNum > 0 ? Convert.ToDecimal(item.MAvgBuyNum - PreModel.MAvgBuyNum) / PreModel.MAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgOrderNum = Math.Round(PreModel.PAvgOrderNum > 0 ? Convert.ToDecimal(item.PAvgOrderNum - PreModel.PAvgOrderNum) / PreModel.PAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgBuyNum = Math.Round(PreModel.PAvgBuyNum > 0 ? Convert.ToDecimal(item.PAvgBuyNum - PreModel.PAvgBuyNum) / PreModel.PAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgBuyPrice = Math.Round(PreModel.PAvgBuyPrice > 0 ? Convert.ToDecimal(item.PAvgBuyPrice - PreModel.PAvgBuyPrice) / PreModel.PAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgUnitPrice = Math.Round(PreModel.PAvgUnitPrice > 0 ? Convert.ToDecimal(item.PAvgUnitPrice - PreModel.PAvgUnitPrice) / PreModel.PAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgMemberNum = Math.Round(PreModel.PAvgMemberNum > 0 ? Convert.ToDecimal(item.PAvgMemberNum - PreModel.PAvgMemberNum) / PreModel.PAvgMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgPaymentNum = Math.Round(PreModel.PAvgPaymentNum > 0 ? Convert.ToDecimal(item.PAvgPaymentNum - PreModel.PAvgPaymentNum) / PreModel.PAvgPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgMOrderRate = Math.Round(PreModel.PAvgMOrderRate > 0 ? Convert.ToDecimal(item.PAvgMOrderRate - PreModel.PAvgMOrderRate) / PreModel.PAvgMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgReBuyNum = Math.Round(PreModel.PAvgReBuyNum > 0 ? Convert.ToDecimal(item.PAvgReBuyNum - PreModel.PAvgReBuyNum) / PreModel.PAvgReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgReBuyRate = Math.Round(PreModel.PAvgReBuyRate > 0 ? Convert.ToDecimal(item.PAvgReBuyRate - PreModel.PAvgReBuyRate) / PreModel.PAvgReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgNewPeopleNum = Math.Round(PreModel.PAvgNewPeopleNum > 0 ? Convert.ToDecimal(item.PAvgNewPeopleNum - PreModel.PAvgNewPeopleNum) / PreModel.PAvgNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgProfitRate = Math.Round(PreModel.PAvgProfitRate > 0 ? Convert.ToDecimal(item.PAvgProfitRate - PreModel.PAvgProfitRate) / PreModel.PAvgProfitRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
YearAvgSCList.Add(cmodel);
}
......@@ -3618,23 +3721,23 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearRateSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Rate_Query cmodel = new User_Statistics_Rate_Query() { Date = item.Date + "成長率" };
// 成长率 = (当前年 - 上年) /上年
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgOrderNum = Math.Round(PreModel.MAvgOrderNum > 0 ? Convert.ToDecimal(item.MAvgOrderNum - PreModel.MAvgOrderNum) / PreModel.MAvgOrderNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgPayMoney = Math.Round(PreModel.MAvgPayMoney > 0 ? Convert.ToDecimal(item.MAvgPayMoney - PreModel.MAvgPayMoney) / PreModel.MAvgPayMoney : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgBuyNum = Math.Round(PreModel.MAvgBuyNum > 0 ? Convert.ToDecimal(item.MAvgBuyNum - PreModel.MAvgBuyNum) / PreModel.MAvgBuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgOrderNum = Math.Round(PreModel.PAvgOrderNum > 0 ? Convert.ToDecimal(item.PAvgOrderNum - PreModel.PAvgOrderNum) / PreModel.PAvgOrderNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgBuyNum = Math.Round(PreModel.PAvgBuyNum > 0 ? Convert.ToDecimal(item.PAvgBuyNum - PreModel.PAvgBuyNum) / PreModel.PAvgBuyNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgBuyPrice = Math.Round(PreModel.PAvgBuyPrice > 0 ? Convert.ToDecimal(item.PAvgBuyPrice - PreModel.PAvgBuyPrice) / PreModel.PAvgBuyPrice : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgUnitPrice = Math.Round(PreModel.PAvgUnitPrice > 0 ? Convert.ToDecimal(item.PAvgUnitPrice - PreModel.PAvgUnitPrice) / PreModel.PAvgUnitPrice : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgMOrderRate = Math.Round(PreModel.PAvgMOrderRate > 0 ? Convert.ToDecimal(item.PAvgMOrderRate - PreModel.PAvgMOrderRate) / PreModel.PAvgMOrderRate : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgProfitRate = Math.Round(PreModel.PAvgProfitRate > 0 ? Convert.ToDecimal(item.PAvgProfitRate - PreModel.PAvgProfitRate) / PreModel.PAvgProfitRate : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgPXNum = Math.Round(PreModel.PAvgPXNum > 0 ? Convert.ToDecimal(item.PAvgPXNum - PreModel.PAvgPXNum) / PreModel.PAvgPXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgVipNum = Math.Round(PreModel.PAvgVipNum > 0 ? Convert.ToDecimal(item.PAvgVipNum - PreModel.PAvgVipNum) / PreModel.PAvgVipNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgYXNum = Math.Round(PreModel.PAvgYXNum > 0 ? Convert.ToDecimal(item.PAvgYXNum - PreModel.PAvgYXNum) / PreModel.PAvgYXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgJXNum = Math.Round(PreModel.PAvgJXNum > 0 ? Convert.ToDecimal(item.PAvgJXNum - PreModel.PAvgJXNum) / PreModel.PAvgJXNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgTotalMNum = Math.Round(PreModel.PAvgTotalMNum > 0 ? Convert.ToDecimal(item.PAvgTotalMNum - PreModel.PAvgTotalMNum) / PreModel.PAvgTotalMNum : 1, 2, MidpointRounding.AwayFromZero);
cmodel.PAvgProfit = Math.Round(PreModel.PAvgProfit > 0 ? Convert.ToDecimal(item.PAvgProfit - PreModel.PAvgProfit) / PreModel.PAvgProfit : 1, 2, MidpointRounding.AwayFromZero);
cmodel.MAvgPeopleNum = Math.Round(PreModel.MAvgPeopleNum > 0 ? Convert.ToDecimal(item.MAvgPeopleNum - PreModel.MAvgPeopleNum) / PreModel.MAvgPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgOrderNum = Math.Round(PreModel.MAvgOrderNum > 0 ? Convert.ToDecimal(item.MAvgOrderNum - PreModel.MAvgOrderNum) / PreModel.MAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgPayMoney = Math.Round(PreModel.MAvgPayMoney > 0 ? Convert.ToDecimal(item.MAvgPayMoney - PreModel.MAvgPayMoney) / PreModel.MAvgPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.MAvgBuyNum = Math.Round(PreModel.MAvgBuyNum > 0 ? Convert.ToDecimal(item.MAvgBuyNum - PreModel.MAvgBuyNum) / PreModel.MAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgOrderNum = Math.Round(PreModel.PAvgOrderNum > 0 ? Convert.ToDecimal(item.PAvgOrderNum - PreModel.PAvgOrderNum) / PreModel.PAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgBuyNum = Math.Round(PreModel.PAvgBuyNum > 0 ? Convert.ToDecimal(item.PAvgBuyNum - PreModel.PAvgBuyNum) / PreModel.PAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgBuyPrice = Math.Round(PreModel.PAvgBuyPrice > 0 ? Convert.ToDecimal(item.PAvgBuyPrice - PreModel.PAvgBuyPrice) / PreModel.PAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgUnitPrice = Math.Round(PreModel.PAvgUnitPrice > 0 ? Convert.ToDecimal(item.PAvgUnitPrice - PreModel.PAvgUnitPrice) / PreModel.PAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgMOrderRate = Math.Round(PreModel.PAvgMOrderRate > 0 ? Convert.ToDecimal(item.PAvgMOrderRate - PreModel.PAvgMOrderRate) / PreModel.PAvgMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgProfitRate = Math.Round(PreModel.PAvgProfitRate > 0 ? Convert.ToDecimal(item.PAvgProfitRate - PreModel.PAvgProfitRate) / PreModel.PAvgProfitRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgPXNum = Math.Round(PreModel.PAvgPXNum > 0 ? Convert.ToDecimal(item.PAvgPXNum - PreModel.PAvgPXNum) / PreModel.PAvgPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgVipNum = Math.Round(PreModel.PAvgVipNum > 0 ? Convert.ToDecimal(item.PAvgVipNum - PreModel.PAvgVipNum) / PreModel.PAvgVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgYXNum = Math.Round(PreModel.PAvgYXNum > 0 ? Convert.ToDecimal(item.PAvgYXNum - PreModel.PAvgYXNum) / PreModel.PAvgYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgJXNum = Math.Round(PreModel.PAvgJXNum > 0 ? Convert.ToDecimal(item.PAvgJXNum - PreModel.PAvgJXNum) / PreModel.PAvgJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgTotalMNum = Math.Round(PreModel.PAvgTotalMNum > 0 ? Convert.ToDecimal(item.PAvgTotalMNum - PreModel.PAvgTotalMNum) / PreModel.PAvgTotalMNum : 1, 4, MidpointRounding.AwayFromZero) * 100;
cmodel.PAvgProfit = Math.Round(PreModel.PAvgProfit > 0 ? Convert.ToDecimal(item.PAvgProfit - PreModel.PAvgProfit) / PreModel.PAvgProfit : 1, 4, MidpointRounding.AwayFromZero) * 100;
YearRateSCList.Add(cmodel);
}
......@@ -3708,6 +3811,9 @@ namespace Mall.Module.MarketingCenter
DataList.Add(datarow2);
}
#endregion
//增加行空白
DataList.Add(new ExcelDataSource() { ExcelRows = new List<ExcelColumn>(23) { } });
#endregion
#region 第二表
......@@ -3775,6 +3881,9 @@ namespace Mall.Module.MarketingCenter
DataList.Add(datarow2);
}
#endregion
//增加行空白
DataList.Add(new ExcelDataSource() { ExcelRows = new List<ExcelColumn>(23) { } });
#endregion
#region 第三表
......
......@@ -1615,7 +1615,72 @@ GROUP BY b.Id order by b.Id asc";
return GetPage<OrderStatistics_Query>(pageIndex, pageSize, out count, sql, parameters).ToList();
}
/// <summary>
/// 徐总报表使用
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<OrderStatistics_Query> GetFXOrderProfitLossList_V2(OrderStatistics_Query dmodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = "where 1=1 and a.OrderStatus in(2,3,4,5,6,7) and a.PaymentTime is not NULL ";
if (dmodel != null)
{
if (!string.IsNullOrWhiteSpace(dmodel.OrderNo))
{
where += $" and a.OrderNo like @OrderNo ";
parameters.Add("OrderNo", "%" + dmodel.OrderNo.Trim() + "%");
}
if (dmodel.TenantId > 0)
{
where += $" and a.TenantId={dmodel.TenantId} ";
}
if (dmodel.MallBaseId > 0)
{
where += $" and a.MallBaseId={dmodel.MallBaseId} ";
}
if (dmodel.SupplierId > 0)
{
where += $" and b.SupplierId={dmodel.SupplierId} ";
}
if (dmodel.OneUserId > 0)
{
where += $" and c.OneUserId={dmodel.OneUserId} and d.TwoUserId={dmodel.OneUserId} ";
}
if (dmodel.GoodsID > 0)
{
where += $" and b.GoodsId={dmodel.GoodsID} ";
}
if (dmodel.CompanyId > 0)
{
where += $" and b.CompanyId={dmodel.CompanyId} ";
}
if (!string.IsNullOrWhiteSpace(dmodel.StartDate))
{
where += $" and DATE_FORMAT(a.PaymentTime,'%Y-%m-%d' )>=DATE_FORMAT('{dmodel.StartDate}','%Y-%m-%d' ) ";
}
if (!string.IsNullOrWhiteSpace(dmodel.EndDate))
{
where += $" and DATE_FORMAT(a.PaymentTime,'%Y-%m-%d' )<= DATE_FORMAT('{dmodel.EndDate}','%Y-%m-%d' ) ";
}
}
string sql = $@" SELECT a.OrderSource,a.OrderStatus,a.PaymentTime,a.UserId,sum(b.InsuranceCostMoney) as InsuranceCostMoney,sum(b.InsuranceMoney) as InsuranceMoney,b.CarType,a.OrderClassify,B.Id,b.ServiceCharge,SUM(b.PaidCostMoney) as PaidCostMoney,MAX(b.OrderId) as OrderId,MAX( a.OrderNo) as OrderNo,MAX(b.GoodsName) as GoodsName,b.Specification,MAX(b.Unit_Price) as Unit_Price,SUM(b.Number) as Number,f.`Name` as SupplierName,
SUM(b.Final_Price) as Final_Price,SUM(b.FreightMoney) as FreightMoney,SUM(b.Final_Price+b.FreightMoney+IFNULL(b.InsuranceMoney,0)) as AllPrice,SUM(b.DepositMoney+b.DepositFreightMoney) as TotalDepositMoney ,
(IFNULL(b.CostMoney,0)) as CostMoney,0 as PackingMoney, 0 as CostFreight,sum(b.FreightCostMoney) as GoodsFreight,
0 as OtherPrice,b.LiveCommission,b.LiveFinanceIds,b.LivePeopleNum,0 as Paid,oa.RefundActual,b.CouponMoney,b.CompanyProfitRate,b.CompanyId,muser.`Name` as CompanyName,b.YSMoney,b.RealMoney,b.YFMoney,b.PayMoney
from rb_goods_orderdetail as b
LEFT JOIN rb_goods_order as A on a.OrderId=b.OrderId
LEFT JOIN rb_supplier as f on f.ID=b.SupplierId
LEFT JOIN rb_member_user as muser on muser.id=b.CompanyId
left join rb_goods_orderaftersale oa on b.ID= oa.OrderDetialId and oa.Type=1 and oa.Status=0 and oa.ReOrderStatus in (2,3,4,5) {where}
GROUP BY b.Id order by b.Id asc";
return Get<OrderStatistics_Query>(sql, parameters).ToList();
}
public List<OrderStatistics_Query> GetFXAllOrderProfitLossList(OrderStatistics_Query dmodel)
{
......@@ -1744,6 +1809,72 @@ GROUP BY b.Id order by b.Id asc";
return Get<OrderStatistics_Query>(sql, parameters).ToList();
}
/// <summary>
/// 徐总统计
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<OrderStatistics_Query> GetFXAllCancelOrderProfitLossList_V2(OrderStatistics_Query dmodel)
{
string where = "where 1=1 and a.OrderStatus=7 and a.PaymentTime is not NULL and a.CancelTime is not NULL ";
DynamicParameters parameters = new DynamicParameters();
if (dmodel != null)
{
if (!string.IsNullOrWhiteSpace(dmodel.OrderNo))
{
where += $" and a.OrderNo like @OrderNo ";
parameters.Add("OrderNo", "%" + dmodel.OrderNo.Trim() + "%");
}
if (dmodel.TenantId > 0)
{
where += $" and a.TenantId={dmodel.TenantId} ";
}
if (dmodel.MallBaseId > 0)
{
where += $" and a.MallBaseId={dmodel.MallBaseId} ";
}
if (dmodel.SupplierId > 0)
{
where += $" and b.SupplierId={dmodel.SupplierId} ";
}
if (dmodel.OneUserId > 0)
{
where += $" and c.OneUserId={dmodel.OneUserId} and d.TwoUserId={dmodel.OneUserId} ";
}
if (dmodel.GoodsID > 0)
{
where += $" and b.GoodsId={dmodel.GoodsID} ";
}
if (dmodel.CompanyId > 0)
{
where += $" and b.CompanyId={dmodel.CompanyId} ";
}
if (!string.IsNullOrWhiteSpace(dmodel.Ids))
{
where += $" and b.Id in({dmodel.Ids}) ";
}
//if (!string.IsNullOrWhiteSpace(dmodel.StartDate))
//{
// where += $" and DATE_FORMAT(a.CancelTime,'%Y-%m-%d' )>=DATE_FORMAT('{dmodel.StartDate}','%Y-%m-%d' ) ";
//}
//if (!string.IsNullOrWhiteSpace(dmodel.EndDate))
//{
// where += $" and DATE_FORMAT(a.CancelTime,'%Y-%m-%d' )<= DATE_FORMAT('{dmodel.EndDate}','%Y-%m-%d' ) ";
//}
}
string sql = $@" SELECT a.OrderSource,a.OrderStatus,sum(b.InsuranceCostMoney) as InsuranceCostMoney,sum(b.InsuranceMoney) as InsuranceMoney,b.CarType,a.OrderClassify,B.Id,b.ServiceCharge,SUM(b.PaidCostMoney) as PaidCostMoney,MAX(b.OrderId) as OrderId,MAX( a.OrderNo) as OrderNo,MAX(b.GoodsName) as GoodsName,b.Specification,MAX(b.Unit_Price) as Unit_Price,SUM(b.Number) as Number,f.`Name` as SupplierName,
SUM(b.Final_Price) as Final_Price,SUM(b.FreightMoney) as FreightMoney,SUM(b.Final_Price+b.FreightMoney+IFNULL(b.InsuranceMoney,0)) as AllPrice ,
(IFNULL(b.CostMoney,0)) as CostMoney,0 as PackingMoney, 0 as CostFreight,sum(b.FreightCostMoney) as GoodsFreight,
0 as OtherPrice,b.LiveCommission,b.LiveFinanceIds,b.LivePeopleNum,0 as Paid,b.CouponMoney,b.CompanyProfitRate,b.CompanyId,muser.`Name` as CompanyName,b.YSMoney,b.RealMoney,b.YFMoney,b.PayMoney
from rb_goods_orderdetail as b
LEFT JOIN rb_goods_order as A on a.OrderId=b.OrderId
LEFT JOIN rb_supplier as f on f.ID=b.SupplierId
LEFT JOIN rb_member_user as muser on muser.id=b.CompanyId {where}
GROUP BY b.Id order by b.Id asc";
return Get<OrderStatistics_Query>(sql, parameters).ToList();
}
/// <summary>
......@@ -1815,6 +1946,75 @@ GROUP BY b.Id order by b.Id asc";
return Get<OrderStatistics_Query>(sql, parameters).ToList();
}
/// <summary>
/// 徐总统计
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<OrderStatistics_Query> GetFXAllAftersaleOrderProfitLossList_V2(OrderStatistics_Query dmodel)
{
string where = " and a.OrderStatus in(2,3,4,5,6,7) and a.PaymentTime is not NULL ";
DynamicParameters parameters = new DynamicParameters();
if (dmodel != null)
{
if (!string.IsNullOrWhiteSpace(dmodel.OrderNo))
{
where += $" and a.OrderNo like @OrderNo ";
parameters.Add("OrderNo", "%" + dmodel.OrderNo.Trim() + "%");
}
if (dmodel.TenantId > 0)
{
where += $" and a.TenantId={dmodel.TenantId} ";
}
if (dmodel.MallBaseId > 0)
{
where += $" and a.MallBaseId={dmodel.MallBaseId} ";
}
if (dmodel.SupplierId > 0)
{
where += $" and b.SupplierId={dmodel.SupplierId} ";
}
if (dmodel.OneUserId > 0)
{
where += $" and c.OneUserId={dmodel.OneUserId} and d.TwoUserId={dmodel.OneUserId} ";
}
if (dmodel.GoodsID > 0)
{
where += $" and b.GoodsId={dmodel.GoodsID} ";
}
if (dmodel.CompanyId > 0)
{
where += $" and b.CompanyId={dmodel.CompanyId} ";
}
if (!string.IsNullOrWhiteSpace(dmodel.Ids))
{
where += $" and b.Id in({dmodel.Ids}) ";
}
//if (!string.IsNullOrWhiteSpace(dmodel.StartDate))
//{
// where += $" and DATE_FORMAT(oa.FinishTime,'%Y-%m-%d' )>=DATE_FORMAT('{dmodel.StartDate}','%Y-%m-%d' ) ";
//}
//if (!string.IsNullOrWhiteSpace(dmodel.EndDate))
//{
// where += $" and DATE_FORMAT(oa.FinishTime,'%Y-%m-%d' )<= DATE_FORMAT('{dmodel.EndDate}','%Y-%m-%d' ) ";
//}
}
string sql = $@" SELECT a.OrderSource,a.OrderStatus,sum(b.InsuranceCostMoney) as InsuranceCostMoney,sum(b.InsuranceMoney) as InsuranceMoney,b.CarType,a.OrderClassify,B.Id,b.ServiceCharge,SUM(b.PaidCostMoney) as PaidCostMoney,MAX(b.OrderId) as OrderId,MAX( a.OrderNo) as OrderNo,MAX(b.GoodsName) as GoodsName,b.Specification,MAX(b.Unit_Price) as Unit_Price,SUM(b.Number) as Number,f.`Name` as SupplierName,
SUM(b.Final_Price) as Final_Price,SUM(b.FreightMoney) as FreightMoney,SUM(b.Final_Price+b.FreightMoney+IFNULL(b.InsuranceMoney,0)) as AllPrice ,
(IFNULL(b.CostMoney,0)) as CostMoney,0 as PackingMoney, 0 as CostFreight,sum(b.FreightCostMoney) as GoodsFreight,
0 as OtherPrice,b.LiveCommission,b.LiveFinanceIds,b.LivePeopleNum,0 as Paid,oa.RefundActual,b.CouponMoney,b.CompanyProfitRate,b.CompanyId,muser.`Name` as CompanyName,b.YSMoney,b.RealMoney,b.YFMoney,b.PayMoney
from rb_goods_orderaftersale as oa
LEFT JOIN rb_goods_orderdetail as b on b.ID= oa.OrderDetialId
LEFT JOIN rb_goods_order as A on a.OrderId=b.OrderId
LEFT JOIN rb_supplier as f on f.ID=b.SupplierId
LEFT JOIN rb_member_user as muser on muser.id=b.CompanyId
where oa.Type=1 and oa.Status=0 and oa.ReOrderStatus in (2,3,4,5) {where}
GROUP BY b.Id order by b.Id asc";
return Get<OrderStatistics_Query>(sql, parameters).ToList();
}
......
......@@ -1711,7 +1711,7 @@ FROM RB_Member_User AS a LEFT JOIN rb_miai_baseinfo AS b ON a.Id = b.UserId) as
}
/// <summary>
/// 获取日期以前付款用户数量
/// 获取日期截止付款用户数量
/// </summary>
/// <param name="tenantId"></param>
/// <param name="mallBaseId"></param>
......@@ -1741,7 +1741,7 @@ GROUP BY u.Id)t ";
string sql = $@"SELECT count(0) FROM
(select u.Id from RB_Member_User u
LEFT JOIN rb_goods_order o on u.Id = o.UserId
where u.TenantId={tenantId} and u.MallBaseId={mallBaseId} and o.CreateDate <='{startTime} 23:59:59' and o.PaymentTime is not null and u.Id in({userIds})
where u.TenantId={tenantId} and u.MallBaseId={mallBaseId} and o.OrderStatus <>7 and o.CreateDate <'{startTime}' and o.PaymentTime is not null and u.Id in({userIds})
GROUP BY u.Id)t";
var obj = ExecuteScalar(sql);
return obj == null ? 0 : Convert.ToInt32(obj);
......
......@@ -1390,7 +1390,7 @@ namespace Mall.WebApi.Controllers.AppletWeChat
#region 电商统计
/// <summary>
/// 电商阅读统计
/// 电商月度统计
/// </summary>
/// <returns></returns>
[HttpPost]
......@@ -1452,6 +1452,7 @@ namespace Mall.WebApi.Controllers.AppletWeChat
new ExcelColumn(value: "平均付款單數") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "平均付款金額") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "平均付款件數") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "平均取消單數") { CellWidth = 15, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "平均每人購買單數") { CellWidth = 20, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "平均每人購買件數") { CellWidth = 20, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
new ExcelColumn(value: "平均每單單價") { CellWidth = 20, HAlignmentEnum = HAlignmentEnum.CENTER, VAlignmentEnum = VAlignmentEnum.CENTER },
......
......@@ -64,13 +64,13 @@ namespace Mall.WindowsService.Module
List<OrderStatistics_Query> listCancel = new List<OrderStatistics_Query>();
List<OrderStatistics_Query> listAftersale = new List<OrderStatistics_Query>();
list = statisticsModule.GetFXOrderProfitLossList(1, 100000, out long count, demodel);
list = statisticsModule.GetFXOrderProfitLossList_V2(demodel);
if (list != null && list.Any())
{
string ids = string.Join(",", list.Select(x => x.Id));
demodel.Ids = ids;
listCancel = statisticsModule.GetFXAllCancelOrderProfitLossList(demodel);
listAftersale = statisticsModule.GetFXAllAftersaleOrderProfitLossList(demodel);
listCancel = statisticsModule.GetFXAllCancelOrderProfitLossList_V2(demodel);
listAftersale = statisticsModule.GetFXAllAftersaleOrderProfitLossList_V2(demodel);
}
foreach (var item in list)
......@@ -142,8 +142,10 @@ namespace Mall.WindowsService.Module
};
#region 拉取统计数据
var dayList = list.Where(x => x.PaymentTime.ToString("yyyy-MM-dd") == SDate).ToList();
var dayList = list.Where(x => x.PaymentTime.ToString("yyyy-MM-dd") == SDate && x.OrderStatus != 7).ToList();
int CancelNum = list.Where(x => x.PaymentTime.ToString("yyyy-MM-dd") == SDate && x.OrderStatus == 7).Count();
usmodel.CancelOrderNum = CancelNum;//取消订单数量
usmodel.PeopleNum = dayList.Select(x => x.UserId).Distinct().Count();//付款人数
usmodel.OrderNum = dayList.Select(x => x.OrderId).Distinct().Count();//付款单数
usmodel.PayMoney = dayList.Sum(x => x.AllPrice);//付款金额
......@@ -186,7 +188,9 @@ namespace Mall.WindowsService.Module
//利润
usmodel.Profit = dayList.Sum(x => x.GrossProfit);
usmodel.ProfitRate = dayList.Count() > 0 ? dayList.Sum(x => x.GrossProfitRate) / dayList.Count() : 0;
//usmodel.ProfitRate = dayList.Count() > 0 ? dayList.Sum(x => x.GrossProfitRate) / dayList.Count() : 0;
//直接根据一天的来计算 ((item.AllPrice + item.YSMoney) == 0 ? 0 : Math.Round((item.GrossProfit / (item.AllPrice + item.YSMoney)), 4, MidpointRounding.AwayFromZero) * 100);
usmodel.ProfitRate = dayList.Count() > 0 ? (dayList.Sum(x => x.AllPrice + x.YSMoney) == 0 ? 0 : Math.Round(dayList.Sum(x => x.GrossProfit) / dayList.Sum(x => x.AllPrice + x.YSMoney), 4, MidpointRounding.AwayFromZero) * 100) : 0;
#endregion
var sModel = slist.Where(x => x.Date == Convert.ToDateTime(SDate)).FirstOrDefault();
if (sModel == null)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment