Commit ff7b1964 authored by liudong1993's avatar liudong1993

1

parent c8548132
...@@ -163,5 +163,10 @@ namespace Mall.Model.Entity.User ...@@ -163,5 +163,10 @@ namespace Mall.Model.Entity.User
/// </summary> /// </summary>
public int JXLJNum { get; set; } public int JXLJNum { get; set; }
/// <summary>
/// 取消单数
/// </summary>
public int CancelOrderNum { get; set; }
} }
} }
...@@ -107,6 +107,33 @@ namespace Mall.Module.MarketingCenter ...@@ -107,6 +107,33 @@ namespace Mall.Module.MarketingCenter
return list; 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) public List<OrderStatistics_Query> GetFXAllOrderProfitLossList(OrderStatistics_Query dmodel)
{ {
var list = orderRepository.GetFXAllOrderProfitLossList(dmodel); var list = orderRepository.GetFXAllOrderProfitLossList(dmodel);
...@@ -207,6 +234,17 @@ namespace Mall.Module.MarketingCenter ...@@ -207,6 +234,17 @@ namespace Mall.Module.MarketingCenter
return list; 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> /// <summary>
/// 取消订单 /// 取消订单
...@@ -219,6 +257,17 @@ namespace Mall.Module.MarketingCenter ...@@ -219,6 +257,17 @@ namespace Mall.Module.MarketingCenter
return list; 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) public List<RB_Goods_OrderCommission_Extend> GetByOrderDetailId(RB_Goods_OrderCommission_Extend model)
...@@ -519,6 +568,7 @@ namespace Mall.Module.MarketingCenter ...@@ -519,6 +568,7 @@ namespace Mall.Module.MarketingCenter
#region 首先 查询上期平均值 #region 首先 查询上期平均值
int PreDay = Convert.ToDateTime(prvETime).Day - 20; int PreDay = Convert.ToDateTime(prvETime).Day - 20;
#region 上月 #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 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 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); 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 ...@@ -544,6 +594,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new RList.Add(new
{ {
Date = "上期平均", Date = "上期平均",
CancelOrderNum = presCancelOrderNum,
PeopleNum = presPeopleNum, PeopleNum = presPeopleNum,
OrderNum = presOrderNum, OrderNum = presOrderNum,
PayMoney = presPayMoney, PayMoney = presPayMoney,
...@@ -572,6 +623,7 @@ namespace Mall.Module.MarketingCenter ...@@ -572,6 +623,7 @@ namespace Mall.Module.MarketingCenter
int MaxDay = Convert.ToDateTime(EndTime).Day; int MaxDay = Convert.ToDateTime(EndTime).Day;
string SDate = StartTime; string SDate = StartTime;
#region 上期参数 #region 上期参数
decimal sCancelOrderNum = 0;
decimal sPeopleNum = 0; decimal sPeopleNum = 0;
decimal sOrderNum = 0; decimal sOrderNum = 0;
decimal sPayMoney = 0; decimal sPayMoney = 0;
...@@ -594,6 +646,7 @@ namespace Mall.Module.MarketingCenter ...@@ -594,6 +646,7 @@ namespace Mall.Module.MarketingCenter
decimal sProfitRate = 0; decimal sProfitRate = 0;
#endregion #endregion
#region 月平均参数 #region 月平均参数
decimal yCancelOrderNum = 0;
decimal yPeopleNum = 0; decimal yPeopleNum = 0;
decimal yOrderNum = 0; decimal yOrderNum = 0;
decimal yPayMoney = 0; decimal yPayMoney = 0;
...@@ -622,6 +675,7 @@ namespace Mall.Module.MarketingCenter ...@@ -622,6 +675,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new RList.Add(new
{ {
DateStr = Convert.ToDateTime(SDate).ToString("MM-dd"), DateStr = Convert.ToDateTime(SDate).ToString("MM-dd"),
CancelOrderNum = smodel?.CancelOrderNum ?? 0,
PeopleNum = smodel?.PeopleNum ?? 0, PeopleNum = smodel?.PeopleNum ?? 0,
OrderNum = smodel?.OrderNum ?? 0, OrderNum = smodel?.OrderNum ?? 0,
PayMoney = smodel?.PayMoney ?? 0, PayMoney = smodel?.PayMoney ?? 0,
...@@ -647,6 +701,7 @@ namespace Mall.Module.MarketingCenter ...@@ -647,6 +701,7 @@ namespace Mall.Module.MarketingCenter
if (Convert.ToDateTime(SDate).Day == 10) if (Convert.ToDateTime(SDate).Day == 10)
{ {
#region 本月 #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 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 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); 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 ...@@ -672,6 +727,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new RList.Add(new
{ {
Date = "平均", Date = "平均",
CancelOrderNum,
PeopleNum, PeopleNum,
OrderNum, OrderNum,
PayMoney, PayMoney,
...@@ -698,6 +754,7 @@ namespace Mall.Module.MarketingCenter ...@@ -698,6 +754,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new RList.Add(new
{ {
Date = "环比成长", 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, 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, 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, PayMoney = Math.Round(presPayMoney > 0 ? (PayMoney - presPayMoney) / presPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100,
...@@ -722,6 +779,7 @@ namespace Mall.Module.MarketingCenter ...@@ -722,6 +779,7 @@ namespace Mall.Module.MarketingCenter
#endregion #endregion
#region 月平均 #region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum; yPeopleNum += PeopleNum;
yOrderNum += OrderNum; yOrderNum += OrderNum;
yPayMoney += PayMoney; yPayMoney += PayMoney;
...@@ -744,6 +802,7 @@ namespace Mall.Module.MarketingCenter ...@@ -744,6 +802,7 @@ namespace Mall.Module.MarketingCenter
yProfitRate += ProfitRate; yProfitRate += ProfitRate;
#endregion #endregion
#region 当期赋值 用于下期环比 #region 当期赋值 用于下期环比
sCancelOrderNum = CancelOrderNum;
sPeopleNum = PeopleNum; sPeopleNum = PeopleNum;
sOrderNum = OrderNum; sOrderNum = OrderNum;
sPayMoney = PayMoney; sPayMoney = PayMoney;
...@@ -769,6 +828,7 @@ namespace Mall.Module.MarketingCenter ...@@ -769,6 +828,7 @@ namespace Mall.Module.MarketingCenter
else if (Convert.ToDateTime(SDate).Day == 20) else if (Convert.ToDateTime(SDate).Day == 20)
{ {
#region 本月 #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 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 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); 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 ...@@ -794,6 +854,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new RList.Add(new
{ {
Date = "平均", Date = "平均",
CancelOrderNum,
PeopleNum, PeopleNum,
OrderNum, OrderNum,
PayMoney, PayMoney,
...@@ -820,6 +881,7 @@ namespace Mall.Module.MarketingCenter ...@@ -820,6 +881,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new RList.Add(new
{ {
Date = "环比成长", 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, 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, 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, PayMoney = Math.Round(sPayMoney > 0 ? (PayMoney - sPayMoney) / sPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100,
...@@ -844,6 +906,7 @@ namespace Mall.Module.MarketingCenter ...@@ -844,6 +906,7 @@ namespace Mall.Module.MarketingCenter
#endregion #endregion
#region 月平均 #region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum; yPeopleNum += PeopleNum;
yOrderNum += OrderNum; yOrderNum += OrderNum;
yPayMoney += PayMoney; yPayMoney += PayMoney;
...@@ -866,6 +929,7 @@ namespace Mall.Module.MarketingCenter ...@@ -866,6 +929,7 @@ namespace Mall.Module.MarketingCenter
yProfitRate += ProfitRate; yProfitRate += ProfitRate;
#endregion #endregion
#region 当期赋值 用于下期环比 #region 当期赋值 用于下期环比
sCancelOrderNum = CancelOrderNum;
sPeopleNum = PeopleNum; sPeopleNum = PeopleNum;
sOrderNum = OrderNum; sOrderNum = OrderNum;
sPayMoney = PayMoney; sPayMoney = PayMoney;
...@@ -891,6 +955,7 @@ namespace Mall.Module.MarketingCenter ...@@ -891,6 +955,7 @@ namespace Mall.Module.MarketingCenter
else if (Convert.ToDateTime(SDate).Day == MaxDay) { else if (Convert.ToDateTime(SDate).Day == MaxDay) {
int NowDay = MaxDay - 20; int NowDay = MaxDay - 20;
#region 本月 #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 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 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); 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 ...@@ -916,6 +981,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new RList.Add(new
{ {
Date = "平均", Date = "平均",
CancelOrderNum,
PeopleNum, PeopleNum,
OrderNum, OrderNum,
PayMoney, PayMoney,
...@@ -942,6 +1008,7 @@ namespace Mall.Module.MarketingCenter ...@@ -942,6 +1008,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new RList.Add(new
{ {
Date = "环比成长", 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, 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, 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, PayMoney = Math.Round(sPayMoney > 0 ? (PayMoney - sPayMoney) / sPayMoney : 1, 4, MidpointRounding.AwayFromZero) * 100,
...@@ -966,6 +1033,7 @@ namespace Mall.Module.MarketingCenter ...@@ -966,6 +1033,7 @@ namespace Mall.Module.MarketingCenter
#endregion #endregion
#region 月平均 #region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum; yPeopleNum += PeopleNum;
yOrderNum += OrderNum; yOrderNum += OrderNum;
yPayMoney += PayMoney; yPayMoney += PayMoney;
...@@ -1000,6 +1068,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1000,6 +1068,7 @@ namespace Mall.Module.MarketingCenter
RList.Add(new RList.Add(new
{ {
Date = "月平均", Date = "月平均",
CancelOrderNum = Math.Round(yCancelOrderNum / 3, 2, MidpointRounding.AwayFromZero),
PeopleNum = Math.Round(yPeopleNum / 3, 2, MidpointRounding.AwayFromZero), PeopleNum = Math.Round(yPeopleNum / 3, 2, MidpointRounding.AwayFromZero),
OrderNum = Math.Round(yOrderNum / 3, 2, MidpointRounding.AwayFromZero), OrderNum = Math.Round(yOrderNum / 3, 2, MidpointRounding.AwayFromZero),
PayMoney = Math.Round(yPayMoney / 3, 2, MidpointRounding.AwayFromZero), PayMoney = Math.Round(yPayMoney / 3, 2, MidpointRounding.AwayFromZero),
...@@ -1032,6 +1101,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1032,6 +1101,7 @@ namespace Mall.Module.MarketingCenter
return new return new
{ {
TotalCancenNum = list.Sum(x => x.CancelOrderNum),
TotalPeopleNum = list.Sum(x => x.PeopleNum), TotalPeopleNum = list.Sum(x => x.PeopleNum),
TotalOrderNum = list.Sum(x => x.OrderNum), TotalOrderNum = list.Sum(x => x.OrderNum),
TotalPayMoney = list.Sum(x => x.PayMoney), TotalPayMoney = list.Sum(x => x.PayMoney),
...@@ -1040,6 +1110,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1040,6 +1110,7 @@ namespace Mall.Module.MarketingCenter
TotalVIPNum, TotalVIPNum,
TotalYXNum, TotalYXNum,
TotalJXNum, TotalJXNum,
AvgCancelNum = presCancelOrderNum,
AvgPeopleNum = presPeopleNum, AvgPeopleNum = presPeopleNum,
AvgOrderNum = presOrderNum, AvgOrderNum = presOrderNum,
AvgPayMoney = presPayMoney, AvgPayMoney = presPayMoney,
...@@ -1061,6 +1132,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1061,6 +1132,7 @@ namespace Mall.Module.MarketingCenter
AvgProfit = presProfit, AvgProfit = presProfit,
AvgProfitRate = presProfitRate, AvgProfitRate = presProfitRate,
MonthProfit = list.Sum(x => x.Profit), MonthProfit = list.Sum(x => x.Profit),
MonthProfitRate = Math.Round(Convert.ToDecimal(list.Sum(x => x.ProfitRate)) / MaxDay, 2, MidpointRounding.AwayFromZero),
RList RList
}; };
} }
...@@ -1085,6 +1157,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1085,6 +1157,7 @@ namespace Mall.Module.MarketingCenter
#region 首先 查询上期平均值 #region 首先 查询上期平均值
int PreDay = Convert.ToDateTime(prvETime).Day - 20; int PreDay = Convert.ToDateTime(prvETime).Day - 20;
#region 上月 #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 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 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); 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 ...@@ -1122,6 +1195,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:presOrderNum.ToString()){ }, new ExcelColumn(value:presOrderNum.ToString()){ },
new ExcelColumn(value:presPayMoney.ToString()){ }, new ExcelColumn(value:presPayMoney.ToString()){ },
new ExcelColumn(value:presBuyNum.ToString()){ }, new ExcelColumn(value:presBuyNum.ToString()){ },
new ExcelColumn(value:presCancelOrderNum.ToString()){ },
new ExcelColumn(value:presAvgOrderNum.ToString()){ }, new ExcelColumn(value:presAvgOrderNum.ToString()){ },
new ExcelColumn(value:presAvgBuyNum.ToString()){ }, new ExcelColumn(value:presAvgBuyNum.ToString()){ },
new ExcelColumn(value:presAvgUnitPrice.ToString()){ }, new ExcelColumn(value:presAvgUnitPrice.ToString()){ },
...@@ -1153,6 +1227,7 @@ namespace Mall.Module.MarketingCenter ...@@ -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: "取消單數") { },
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 ...@@ -1174,6 +1249,7 @@ namespace Mall.Module.MarketingCenter
#endregion #endregion
#region 上期参数 #region 上期参数
decimal sCancelOrderNum = 0;
decimal sPeopleNum = 0; decimal sPeopleNum = 0;
decimal sOrderNum = 0; decimal sOrderNum = 0;
decimal sPayMoney = 0; decimal sPayMoney = 0;
...@@ -1196,6 +1272,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1196,6 +1272,7 @@ namespace Mall.Module.MarketingCenter
decimal sProfitRate = 0; decimal sProfitRate = 0;
#endregion #endregion
#region 月平均参数 #region 月平均参数
decimal yCancelOrderNum = 0;
decimal yPeopleNum = 0; decimal yPeopleNum = 0;
decimal yOrderNum = 0; decimal yOrderNum = 0;
decimal yPayMoney = 0; decimal yPayMoney = 0;
...@@ -1229,6 +1306,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1229,6 +1306,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:(smodel?.OrderNum ?? 0).ToString()){ }, new ExcelColumn(value:(smodel?.OrderNum ?? 0).ToString()){ },
new ExcelColumn(value:(smodel?.PayMoney ?? 0).ToString()){ }, new ExcelColumn(value:(smodel?.PayMoney ?? 0).ToString()){ },
new ExcelColumn(value:(smodel?.BuyNum ?? 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?.AvgOrderNum ?? 0).ToString()){ },
new ExcelColumn(value:(smodel?.AvgBuyNum ?? 0).ToString()){ }, new ExcelColumn(value:(smodel?.AvgBuyNum ?? 0).ToString()){ },
new ExcelColumn(value:(smodel?.AvgUnitPrice ?? 0).ToString()){ }, new ExcelColumn(value:(smodel?.AvgUnitPrice ?? 0).ToString()){ },
...@@ -1251,6 +1329,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1251,6 +1329,7 @@ namespace Mall.Module.MarketingCenter
if (Convert.ToDateTime(SDate).Day == 10) if (Convert.ToDateTime(SDate).Day == 10)
{ {
#region 本月 #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 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 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); 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 ...@@ -1282,6 +1361,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:(OrderNum).ToString()){ }, new ExcelColumn(value:(OrderNum).ToString()){ },
new ExcelColumn(value:(PayMoney).ToString()){ }, new ExcelColumn(value:(PayMoney).ToString()){ },
new ExcelColumn(value:(BuyNum).ToString()){ }, new ExcelColumn(value:(BuyNum).ToString()){ },
new ExcelColumn(value:(CancelOrderNum).ToString()){ },
new ExcelColumn(value:(AvgOrderNum).ToString()){ }, new ExcelColumn(value:(AvgOrderNum).ToString()){ },
new ExcelColumn(value:(AvgBuyNum).ToString()){ }, new ExcelColumn(value:(AvgBuyNum).ToString()){ },
new ExcelColumn(value:(AvgUnitPrice).ToString()){ }, new ExcelColumn(value:(AvgUnitPrice).ToString()){ },
...@@ -1306,24 +1386,25 @@ namespace Mall.Module.MarketingCenter ...@@ -1306,24 +1386,25 @@ namespace Mall.Module.MarketingCenter
{ {
ExcelRows = new List<ExcelColumn>(23) { ExcelRows = new List<ExcelColumn>(23) {
new ExcelColumn(value:"环比成长"){ }, new ExcelColumn(value:"环比成长"){ },
new ExcelColumn(value:(Math.Round(presPeopleNum > 0 ? (PeopleNum - presPeopleNum) / presPeopleNum : 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()+ "%"){ }, 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()+ "%"){ }, 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()+ "%"){ }, new ExcelColumn(value:(Math.Round(presBuyNum > 0 ? (BuyNum - presBuyNum) / presBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgOrderNum > 0 ? (AvgOrderNum - presAvgOrderNum) / presAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presCancelOrderNum > 0 ? (CancelOrderNum - presCancelOrderNum) / presCancelOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgBuyNum > 0 ? (AvgBuyNum - presAvgBuyNum) / presAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presAvgOrderNum > 0 ? (AvgOrderNum - presAvgOrderNum) / presAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgUnitPrice > 0 ? (AvgUnitPrice - presAvgUnitPrice) / presAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presAvgBuyNum > 0 ? (AvgBuyNum - presAvgBuyNum) / presAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presAvgBuyPrice > 0 ? (AvgBuyPrice - presAvgBuyPrice) / presAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presAvgUnitPrice > 0 ? (AvgUnitPrice - presAvgUnitPrice) / presAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presMemberNum > 0 ? (MemberNum - presMemberNum) / presMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presAvgBuyPrice > 0 ? (AvgBuyPrice - presAvgBuyPrice) / presAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presPaymentNum > 0 ? (PaymentNum - presPaymentNum) / presPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presMemberNum > 0 ? (MemberNum - presMemberNum) / presMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presMOrderRate > 0 ? (MOrderRate - presMOrderRate) / presMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presPaymentNum > 0 ? (PaymentNum - presPaymentNum) / presPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presReBuyNum > 0 ? (ReBuyNum - presReBuyNum) / presReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presMOrderRate > 0 ? (MOrderRate - presMOrderRate) / presMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presReBuyRate > 0 ? (ReBuyRate - presReBuyRate) / presReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presReBuyNum > 0 ? (ReBuyNum - presReBuyNum) / presReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presNewPeopleNum > 0 ? (NewPeopleNum - presNewPeopleNum) / presNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presReBuyRate > 0 ? (ReBuyRate - presReBuyRate) / presReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presPXNum > 0 ? (PXNum - presPXNum) / presPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presNewPeopleNum > 0 ? (NewPeopleNum - presNewPeopleNum) / presNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presVipNum > 0 ? (VipNum - presVipNum) / presVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presPXNum > 0 ? (PXNum - presPXNum) / presPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presYXNum > 0 ? (YXNum - presYXNum) / presYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(presVipNum > 0 ? (VipNum - presVipNum) / presVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(presJXNum > 0 ? (JXNum - presJXNum) / presJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, 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 ColumnHight = 30
}; };
...@@ -1341,6 +1422,7 @@ namespace Mall.Module.MarketingCenter ...@@ -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: "取消單數") { },
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 ...@@ -1363,6 +1445,7 @@ namespace Mall.Module.MarketingCenter
#region 月平均 #region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum; yPeopleNum += PeopleNum;
yOrderNum += OrderNum; yOrderNum += OrderNum;
yPayMoney += PayMoney; yPayMoney += PayMoney;
...@@ -1385,6 +1468,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1385,6 +1468,7 @@ namespace Mall.Module.MarketingCenter
yProfitRate += ProfitRate; yProfitRate += ProfitRate;
#endregion #endregion
#region 当期赋值 用于下期环比 #region 当期赋值 用于下期环比
sCancelOrderNum = CancelOrderNum;
sPeopleNum = PeopleNum; sPeopleNum = PeopleNum;
sOrderNum = OrderNum; sOrderNum = OrderNum;
sPayMoney = PayMoney; sPayMoney = PayMoney;
...@@ -1410,6 +1494,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1410,6 +1494,7 @@ namespace Mall.Module.MarketingCenter
else if (Convert.ToDateTime(SDate).Day == 20) else if (Convert.ToDateTime(SDate).Day == 20)
{ {
#region 本月 #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 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 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); 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 ...@@ -1441,6 +1526,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:(OrderNum).ToString()){ }, new ExcelColumn(value:(OrderNum).ToString()){ },
new ExcelColumn(value:(PayMoney).ToString()){ }, new ExcelColumn(value:(PayMoney).ToString()){ },
new ExcelColumn(value:(BuyNum).ToString()){ }, new ExcelColumn(value:(BuyNum).ToString()){ },
new ExcelColumn(value:(CancelOrderNum).ToString()){ },
new ExcelColumn(value:(AvgOrderNum).ToString()){ }, new ExcelColumn(value:(AvgOrderNum).ToString()){ },
new ExcelColumn(value:(AvgBuyNum).ToString()){ }, new ExcelColumn(value:(AvgBuyNum).ToString()){ },
new ExcelColumn(value:(AvgUnitPrice).ToString()){ }, new ExcelColumn(value:(AvgUnitPrice).ToString()){ },
...@@ -1465,24 +1551,25 @@ namespace Mall.Module.MarketingCenter ...@@ -1465,24 +1551,25 @@ namespace Mall.Module.MarketingCenter
{ {
ExcelRows = new List<ExcelColumn>(23) { ExcelRows = new List<ExcelColumn>(23) {
new ExcelColumn(value:"环比成长"){ }, new ExcelColumn(value:"环比成长"){ },
new ExcelColumn(value:(Math.Round(sPeopleNum > 0 ? (PeopleNum - sPeopleNum) / sPeopleNum : 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()+ "%"){ }, 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()+ "%"){ }, 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()+ "%"){ }, new ExcelColumn(value:(Math.Round(sBuyNum > 0 ? (BuyNum - sBuyNum) / sBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgOrderNum > 0 ? (AvgOrderNum - sAvgOrderNum) / sAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sCancelOrderNum > 0 ? (CancelOrderNum - sCancelOrderNum) / sCancelOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyNum > 0 ? (AvgBuyNum - sAvgBuyNum) / sAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sAvgOrderNum > 0 ? (AvgOrderNum - sAvgOrderNum) / sAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgUnitPrice > 0 ? (AvgUnitPrice - sAvgUnitPrice) / sAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sAvgBuyNum > 0 ? (AvgBuyNum - sAvgBuyNum) / sAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyPrice > 0 ? (AvgBuyPrice - sAvgBuyPrice) / sAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sAvgUnitPrice > 0 ? (AvgUnitPrice - sAvgUnitPrice) / sAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sMemberNum > 0 ? (MemberNum - sMemberNum) / sMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sAvgBuyPrice > 0 ? (AvgBuyPrice - sAvgBuyPrice) / sAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sPaymentNum > 0 ? (PaymentNum - sPaymentNum) / sPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sMemberNum > 0 ? (MemberNum - sMemberNum) / sMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sMOrderRate > 0 ? (MOrderRate - sMOrderRate) / sMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sPaymentNum > 0 ? (PaymentNum - sPaymentNum) / sPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyNum > 0 ? (ReBuyNum - sReBuyNum) / sReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sMOrderRate > 0 ? (MOrderRate - sMOrderRate) / sMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyRate > 0 ? (ReBuyRate - sReBuyRate) / sReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sReBuyNum > 0 ? (ReBuyNum - sReBuyNum) / sReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sNewPeopleNum > 0 ? (NewPeopleNum - sNewPeopleNum) / sNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sReBuyRate > 0 ? (ReBuyRate - sReBuyRate) / sReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sPXNum > 0 ? (PXNum - sPXNum) / sPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sNewPeopleNum > 0 ? (NewPeopleNum - sNewPeopleNum) / sNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sVipNum > 0 ? (VipNum - sVipNum) / sVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sPXNum > 0 ? (PXNum - sPXNum) / sPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sYXNum > 0 ? (YXNum - sYXNum) / sYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sVipNum > 0 ? (VipNum - sVipNum) / sVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sJXNum > 0 ? (JXNum - sJXNum) / sJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, 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 ColumnHight = 30
}; };
...@@ -1501,6 +1588,7 @@ namespace Mall.Module.MarketingCenter ...@@ -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: "取消單數") { },
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 ...@@ -1522,6 +1610,7 @@ namespace Mall.Module.MarketingCenter
#endregion #endregion
#region 月平均 #region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum; yPeopleNum += PeopleNum;
yOrderNum += OrderNum; yOrderNum += OrderNum;
yPayMoney += PayMoney; yPayMoney += PayMoney;
...@@ -1544,6 +1633,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1544,6 +1633,7 @@ namespace Mall.Module.MarketingCenter
yProfitRate += ProfitRate; yProfitRate += ProfitRate;
#endregion #endregion
#region 当期赋值 用于下期环比 #region 当期赋值 用于下期环比
sCancelOrderNum = CancelOrderNum;
sPeopleNum = PeopleNum; sPeopleNum = PeopleNum;
sOrderNum = OrderNum; sOrderNum = OrderNum;
sPayMoney = PayMoney; sPayMoney = PayMoney;
...@@ -1570,6 +1660,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1570,6 +1660,7 @@ namespace Mall.Module.MarketingCenter
{ {
int NowDay = MaxDay - 20; int NowDay = MaxDay - 20;
#region 本月 #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 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 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); 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 ...@@ -1601,6 +1692,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:(OrderNum).ToString()){ }, new ExcelColumn(value:(OrderNum).ToString()){ },
new ExcelColumn(value:(PayMoney).ToString()){ }, new ExcelColumn(value:(PayMoney).ToString()){ },
new ExcelColumn(value:(BuyNum).ToString()){ }, new ExcelColumn(value:(BuyNum).ToString()){ },
new ExcelColumn(value:(CancelOrderNum).ToString()){ },
new ExcelColumn(value:(AvgOrderNum).ToString()){ }, new ExcelColumn(value:(AvgOrderNum).ToString()){ },
new ExcelColumn(value:(AvgBuyNum).ToString()){ }, new ExcelColumn(value:(AvgBuyNum).ToString()){ },
new ExcelColumn(value:(AvgUnitPrice).ToString()){ }, new ExcelColumn(value:(AvgUnitPrice).ToString()){ },
...@@ -1625,24 +1717,25 @@ namespace Mall.Module.MarketingCenter ...@@ -1625,24 +1717,25 @@ namespace Mall.Module.MarketingCenter
{ {
ExcelRows = new List<ExcelColumn>(23) { ExcelRows = new List<ExcelColumn>(23) {
new ExcelColumn(value:"环比成长"){ }, new ExcelColumn(value:"环比成长"){ },
new ExcelColumn(value:(Math.Round(sPeopleNum > 0 ? (PeopleNum - sPeopleNum) / sPeopleNum : 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()+ "%"){ }, 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()+ "%"){ }, 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()+ "%"){ }, new ExcelColumn(value:(Math.Round(sBuyNum > 0 ? (BuyNum - sBuyNum) / sBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgOrderNum > 0 ? (AvgOrderNum - sAvgOrderNum) / sAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sCancelOrderNum > 0 ? (CancelOrderNum - sCancelOrderNum) / sCancelOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyNum > 0 ? (AvgBuyNum - sAvgBuyNum) / sAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sAvgOrderNum > 0 ? (AvgOrderNum - sAvgOrderNum) / sAvgOrderNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgUnitPrice > 0 ? (AvgUnitPrice - sAvgUnitPrice) / sAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sAvgBuyNum > 0 ? (AvgBuyNum - sAvgBuyNum) / sAvgBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sAvgBuyPrice > 0 ? (AvgBuyPrice - sAvgBuyPrice) / sAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sAvgUnitPrice > 0 ? (AvgUnitPrice - sAvgUnitPrice) / sAvgUnitPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sMemberNum > 0 ? (MemberNum - sMemberNum) / sMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sAvgBuyPrice > 0 ? (AvgBuyPrice - sAvgBuyPrice) / sAvgBuyPrice : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sPaymentNum > 0 ? (PaymentNum - sPaymentNum) / sPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sMemberNum > 0 ? (MemberNum - sMemberNum) / sMemberNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sMOrderRate > 0 ? (MOrderRate - sMOrderRate) / sMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sPaymentNum > 0 ? (PaymentNum - sPaymentNum) / sPaymentNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyNum > 0 ? (ReBuyNum - sReBuyNum) / sReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sMOrderRate > 0 ? (MOrderRate - sMOrderRate) / sMOrderRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sReBuyRate > 0 ? (ReBuyRate - sReBuyRate) / sReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sReBuyNum > 0 ? (ReBuyNum - sReBuyNum) / sReBuyNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sNewPeopleNum > 0 ? (NewPeopleNum - sNewPeopleNum) / sNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sReBuyRate > 0 ? (ReBuyRate - sReBuyRate) / sReBuyRate : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sPXNum > 0 ? (PXNum - sPXNum) / sPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sNewPeopleNum > 0 ? (NewPeopleNum - sNewPeopleNum) / sNewPeopleNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sVipNum > 0 ? (VipNum - sVipNum) / sVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sPXNum > 0 ? (PXNum - sPXNum) / sPXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sYXNum > 0 ? (YXNum - sYXNum) / sYXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, new ExcelColumn(value:(Math.Round(sVipNum > 0 ? (VipNum - sVipNum) / sVipNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString("#0.00")+ "%"){ },
new ExcelColumn(value:(Math.Round(sJXNum > 0 ? (JXNum - sJXNum) / sJXNum : 1, 4, MidpointRounding.AwayFromZero) * 100).ToString()+ "%"){ }, 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 ColumnHight = 30
}; };
...@@ -1653,6 +1746,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1653,6 +1746,7 @@ namespace Mall.Module.MarketingCenter
DataList.Add(new ExcelDataSource() { ExcelRows = new List<ExcelColumn>(23) { new ExcelColumn(value: "") { Colspan = 19 } } }); DataList.Add(new ExcelDataSource() { ExcelRows = new List<ExcelColumn>(23) { new ExcelColumn(value: "") { Colspan = 19 } } });
#region 月平均 #region 月平均
yCancelOrderNum += CancelOrderNum;
yPeopleNum += PeopleNum; yPeopleNum += PeopleNum;
yOrderNum += OrderNum; yOrderNum += OrderNum;
yPayMoney += PayMoney; yPayMoney += PayMoney;
...@@ -1692,6 +1786,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1692,6 +1786,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value:Math.Round(yOrderNum/3,2,MidpointRounding.AwayFromZero).ToString()){ }, 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(yPayMoney/3,2,MidpointRounding.AwayFromZero).ToString()){ },
new ExcelColumn(value:Math.Round(yBuyNum/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(yAvgOrderNum/3,2,MidpointRounding.AwayFromZero).ToString()){ },
new ExcelColumn(value:Math.Round(yAvgBuyNum/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()){ }, new ExcelColumn(value:Math.Round(yAvgUnitPrice/3,2,MidpointRounding.AwayFromZero).ToString()){ },
...@@ -1724,6 +1819,7 @@ namespace Mall.Module.MarketingCenter ...@@ -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: "取消單數累計") { },
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 ...@@ -1758,6 +1854,7 @@ namespace Mall.Module.MarketingCenter
new ExcelColumn(value: list.Sum(x => x.OrderNum).ToString()) { }, 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.PayMoney).ToString()) { },
new ExcelColumn(value: list.Sum(x => x.BuyNum).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: "") { }, new ExcelColumn(value: "") { },
new ExcelColumn(value: "") { }, new ExcelColumn(value: "") { },
...@@ -1796,6 +1893,7 @@ namespace Mall.Module.MarketingCenter ...@@ -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: "") { },
new ExcelColumn(value: "") { },
new ExcelColumn(value: "會員總數") { }, new ExcelColumn(value: "會員總數") { },
new ExcelColumn(value: (TotalPXNum+TotalVIPNum+TotalYXNum+TotalJXNum).ToString()) { } new ExcelColumn(value: (TotalPXNum+TotalVIPNum+TotalYXNum+TotalJXNum).ToString()) { }
}, },
...@@ -1823,6 +1921,7 @@ namespace Mall.Module.MarketingCenter ...@@ -1823,6 +1921,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: "") { },
new ExcelColumn(value: "") { } new ExcelColumn(value: "") { }
}, },
ColumnHight = 30 ColumnHight = 30
...@@ -1862,10 +1961,10 @@ namespace Mall.Module.MarketingCenter ...@@ -1862,10 +1961,10 @@ namespace Mall.Module.MarketingCenter
mmodel.TotalPayPeople = mlist.Any() ? mlist.Max(x => x.PaymentNum) : 0; mmodel.TotalPayPeople = mlist.Any() ? mlist.Max(x => x.PaymentNum) : 0;
mmodel.Profit = mlist.Sum(x => x.Profit); mmodel.Profit = mlist.Sum(x => x.Profit);
//抓取累计数据 //抓取累计数据
int TotalPXNum = mlist.Any() ? list.Max(x => x.PXLJNum) : 0; int TotalPXNum = mlist.Any() ? mlist.Max(x => x.PXLJNum) : 0;
int TotalVIPNum = mlist.Any() ? list.Max(x => x.VipLJNum) : 0; int TotalVIPNum = mlist.Any() ? mlist.Max(x => x.VipLJNum) : 0;
int TotalYXNum = mlist.Any() ? list.Max(x => x.YXLJNum) : 0; int TotalYXNum = mlist.Any() ? mlist.Max(x => x.YXLJNum) : 0;
int TotalJXNum = mlist.Any() ? list.Max(x => x.JXLJNum) : 0; int TotalJXNum = mlist.Any() ? mlist.Max(x => x.JXLJNum) : 0;
mmodel.PXNum = TotalPXNum; mmodel.PXNum = TotalPXNum;
mmodel.VipNum = TotalVIPNum; mmodel.VipNum = TotalVIPNum;
mmodel.YXNum = TotalYXNum; mmodel.YXNum = TotalYXNum;
...@@ -2092,11 +2191,12 @@ namespace Mall.Module.MarketingCenter ...@@ -2092,11 +2191,12 @@ namespace Mall.Module.MarketingCenter
PayMoney = MonthSList2.Sum(x => x.PayMoney), PayMoney = MonthSList2.Sum(x => x.PayMoney),
BuyNum = MonthSList2.Sum(x => x.BuyNum), BuyNum = MonthSList2.Sum(x => x.BuyNum),
Profit = MonthSList2.Sum(x => x.Profit), Profit = MonthSList2.Sum(x => x.Profit),
PXNum = MonthSList2.Sum(x => x.PXNum), TotalPayPeople = MonthSList2.Any()? MonthSList2.Max(x => x.TotalPayPeople) : 0,
VipNum = MonthSList2.Sum(x => x.VipNum), PXNum = MonthSList2.Any()? MonthSList2.Max(x => x.PXNum) : 0,
YXNum = MonthSList2.Sum(x => x.YXNum), VipNum = MonthSList2.Any() ? MonthSList2.Max(x => x.VipNum) : 0,
JXNum = MonthSList2.Sum(x => x.JXNum), YXNum = MonthSList2.Any() ? MonthSList2.Max(x => x.YXNum) : 0,
TotalMNum = MonthSList2.Sum(x => x.TotalMNum), 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), MAvgPeopleNum = Math.Round(MonthSList2.Sum(x => x.MAvgPeopleNum) / TotalMonthNum, 2, MidpointRounding.AwayFromZero),
MAvgOrderNum = Math.Round(MonthSList2.Sum(x => x.MAvgOrderNum) / TotalMonthNum, 2, MidpointRounding.AwayFromZero), MAvgOrderNum = Math.Round(MonthSList2.Sum(x => x.MAvgOrderNum) / TotalMonthNum, 2, MidpointRounding.AwayFromZero),
...@@ -2230,10 +2330,10 @@ namespace Mall.Module.MarketingCenter ...@@ -2230,10 +2330,10 @@ namespace Mall.Module.MarketingCenter
mmodel.TotalPayPeople = mlist.Any() ? mlist.Max(x => x.PaymentNum) : 0; mmodel.TotalPayPeople = mlist.Any() ? mlist.Max(x => x.PaymentNum) : 0;
mmodel.Profit = mlist.Sum(x => x.Profit); mmodel.Profit = mlist.Sum(x => x.Profit);
//抓取累计数据 //抓取累计数据
int TotalPXNum = mlist.Any() ? list.Max(x => x.PXLJNum) : 0; int TotalPXNum = mlist.Any() ? mlist.Max(x => x.PXLJNum) : 0;
int TotalVIPNum = mlist.Any() ? list.Max(x => x.VipLJNum) : 0; int TotalVIPNum = mlist.Any() ? mlist.Max(x => x.VipLJNum) : 0;
int TotalYXNum = mlist.Any() ? list.Max(x => x.YXLJNum) : 0; int TotalYXNum = mlist.Any() ? mlist.Max(x => x.YXLJNum) : 0;
int TotalJXNum = mlist.Any() ? list.Max(x => x.JXLJNum) : 0; int TotalJXNum = mlist.Any() ? mlist.Max(x => x.JXLJNum) : 0;
mmodel.PXNum = TotalPXNum; mmodel.PXNum = TotalPXNum;
mmodel.VipNum = TotalVIPNum; mmodel.VipNum = TotalVIPNum;
mmodel.YXNum = TotalYXNum; mmodel.YXNum = TotalYXNum;
...@@ -2461,11 +2561,12 @@ namespace Mall.Module.MarketingCenter ...@@ -2461,11 +2561,12 @@ namespace Mall.Module.MarketingCenter
PayMoney = MonthSList2.Sum(x => x.PayMoney), PayMoney = MonthSList2.Sum(x => x.PayMoney),
BuyNum = MonthSList2.Sum(x => x.BuyNum), BuyNum = MonthSList2.Sum(x => x.BuyNum),
Profit = MonthSList2.Sum(x => x.Profit), Profit = MonthSList2.Sum(x => x.Profit),
PXNum = MonthSList2.Sum(x => x.PXNum), TotalPayPeople = MonthSList2.Any() ? MonthSList2.Max(x => x.TotalPayPeople) : 0,
VipNum = MonthSList2.Sum(x => x.VipNum), PXNum = MonthSList2.Any() ? MonthSList2.Max(x => x.PXNum) : 0,
YXNum = MonthSList2.Sum(x => x.YXNum), VipNum = MonthSList2.Any() ? MonthSList2.Max(x => x.VipNum) : 0,
JXNum = MonthSList2.Sum(x => x.JXNum), YXNum = MonthSList2.Any() ? MonthSList2.Max(x => x.YXNum) : 0,
TotalMNum = MonthSList2.Sum(x => x.TotalMNum), 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), MAvgPeopleNum = Math.Round(MonthSList2.Sum(x => x.MAvgPeopleNum) / TotalMonthNum, 2, MidpointRounding.AwayFromZero),
MAvgOrderNum = Math.Round(MonthSList2.Sum(x => x.MAvgOrderNum) / TotalMonthNum, 2, MidpointRounding.AwayFromZero), MAvgOrderNum = Math.Round(MonthSList2.Sum(x => x.MAvgOrderNum) / TotalMonthNum, 2, MidpointRounding.AwayFromZero),
...@@ -3053,18 +3154,20 @@ namespace Mall.Module.MarketingCenter ...@@ -3053,18 +3154,20 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault(); var PreModel = YearSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Query_V2 cmodel = new User_Statistics_Query_V2() { Date = item.Date + "成長率" }; 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.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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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; 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); YearSCList.Add(cmodel);
} }
} }
...@@ -3082,21 +3185,21 @@ namespace Mall.Module.MarketingCenter ...@@ -3082,21 +3185,21 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearAvgSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault(); var PreModel = YearAvgSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Query cmodel = new User_Statistics_Query() { Date = item.Date + "成長率" }; 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.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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); cmodel.PAvgProfitRate = Math.Round(PreModel.PAvgProfitRate > 0 ? Convert.ToDecimal(item.PAvgProfitRate - PreModel.PAvgProfitRate) / PreModel.PAvgProfitRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
YearAvgSCList.Add(cmodel); YearAvgSCList.Add(cmodel);
} }
...@@ -3115,23 +3218,23 @@ namespace Mall.Module.MarketingCenter ...@@ -3115,23 +3218,23 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearRateSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault(); var PreModel = YearRateSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Rate_Query cmodel = new User_Statistics_Rate_Query() { Date = item.Date + "成長率" }; 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.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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); cmodel.PAvgProfit = Math.Round(PreModel.PAvgProfit > 0 ? Convert.ToDecimal(item.PAvgProfit - PreModel.PAvgProfit) / PreModel.PAvgProfit : 1, 4, MidpointRounding.AwayFromZero) * 100;
YearRateSCList.Add(cmodel); YearRateSCList.Add(cmodel);
} }
...@@ -3556,17 +3659,17 @@ namespace Mall.Module.MarketingCenter ...@@ -3556,17 +3659,17 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault(); var PreModel = YearSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Query_V2 cmodel = new User_Statistics_Query_V2() { Date = item.Date + "成長率" }; 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.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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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; cmodel.TotalMNum = cmodel.PXNum + cmodel.VipNum + cmodel.YXNum + cmodel.JXNum;
YearSCList.Add(cmodel); YearSCList.Add(cmodel);
} }
...@@ -3585,21 +3688,21 @@ namespace Mall.Module.MarketingCenter ...@@ -3585,21 +3688,21 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearAvgSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault(); var PreModel = YearAvgSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Query cmodel = new User_Statistics_Query() { Date = item.Date + "成長率" }; 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.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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); cmodel.PAvgProfitRate = Math.Round(PreModel.PAvgProfitRate > 0 ? Convert.ToDecimal(item.PAvgProfitRate - PreModel.PAvgProfitRate) / PreModel.PAvgProfitRate : 1, 4, MidpointRounding.AwayFromZero) * 100;
YearAvgSCList.Add(cmodel); YearAvgSCList.Add(cmodel);
} }
...@@ -3618,23 +3721,23 @@ namespace Mall.Module.MarketingCenter ...@@ -3618,23 +3721,23 @@ namespace Mall.Module.MarketingCenter
var PreModel = YearRateSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault(); var PreModel = YearRateSList.Where(x => x.Date == PreYear.ToString()).FirstOrDefault();
User_Statistics_Rate_Query cmodel = new User_Statistics_Rate_Query() { Date = item.Date + "成長率" }; 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.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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); 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, 2, MidpointRounding.AwayFromZero); cmodel.PAvgProfit = Math.Round(PreModel.PAvgProfit > 0 ? Convert.ToDecimal(item.PAvgProfit - PreModel.PAvgProfit) / PreModel.PAvgProfit : 1, 4, MidpointRounding.AwayFromZero) * 100;
YearRateSCList.Add(cmodel); YearRateSCList.Add(cmodel);
} }
...@@ -3708,6 +3811,9 @@ namespace Mall.Module.MarketingCenter ...@@ -3708,6 +3811,9 @@ namespace Mall.Module.MarketingCenter
DataList.Add(datarow2); DataList.Add(datarow2);
} }
#endregion #endregion
//增加行空白
DataList.Add(new ExcelDataSource() { ExcelRows = new List<ExcelColumn>(23) { } });
#endregion #endregion
#region 第二表 #region 第二表
...@@ -3775,6 +3881,9 @@ namespace Mall.Module.MarketingCenter ...@@ -3775,6 +3881,9 @@ namespace Mall.Module.MarketingCenter
DataList.Add(datarow2); DataList.Add(datarow2);
} }
#endregion #endregion
//增加行空白
DataList.Add(new ExcelDataSource() { ExcelRows = new List<ExcelColumn>(23) { } });
#endregion #endregion
#region 第三表 #region 第三表
......
...@@ -1615,7 +1615,72 @@ GROUP BY b.Id order by b.Id asc"; ...@@ -1615,7 +1615,72 @@ GROUP BY b.Id order by b.Id asc";
return GetPage<OrderStatistics_Query>(pageIndex, pageSize, out count, sql, parameters).ToList(); 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) public List<OrderStatistics_Query> GetFXAllOrderProfitLossList(OrderStatistics_Query dmodel)
{ {
...@@ -1744,6 +1809,72 @@ GROUP BY b.Id order by b.Id asc"; ...@@ -1744,6 +1809,72 @@ GROUP BY b.Id order by b.Id asc";
return Get<OrderStatistics_Query>(sql, parameters).ToList(); 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> /// <summary>
...@@ -1815,6 +1946,75 @@ GROUP BY b.Id order by b.Id asc"; ...@@ -1815,6 +1946,75 @@ GROUP BY b.Id order by b.Id asc";
return Get<OrderStatistics_Query>(sql, parameters).ToList(); 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 ...@@ -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>
/// 获取日期以前付款用户数量 /// 获取日期截止付款用户数量
/// </summary> /// </summary>
/// <param name="tenantId"></param> /// <param name="tenantId"></param>
/// <param name="mallBaseId"></param> /// <param name="mallBaseId"></param>
...@@ -1741,7 +1741,7 @@ GROUP BY u.Id)t "; ...@@ -1741,7 +1741,7 @@ GROUP BY u.Id)t ";
string sql = $@"SELECT count(0) FROM string sql = $@"SELECT count(0) FROM
(select u.Id from RB_Member_User u (select u.Id from RB_Member_User u
LEFT JOIN rb_goods_order o on u.Id = o.UserId 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"; GROUP BY u.Id)t";
var obj = ExecuteScalar(sql); var obj = ExecuteScalar(sql);
return obj == null ? 0 : Convert.ToInt32(obj); return obj == null ? 0 : Convert.ToInt32(obj);
......
...@@ -1390,7 +1390,7 @@ namespace Mall.WebApi.Controllers.AppletWeChat ...@@ -1390,7 +1390,7 @@ namespace Mall.WebApi.Controllers.AppletWeChat
#region 电商统计 #region 电商统计
/// <summary> /// <summary>
/// 电商阅读统计 /// 电商月度统计
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
...@@ -1452,6 +1452,7 @@ namespace Mall.WebApi.Controllers.AppletWeChat ...@@ -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 = 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 }, 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 ...@@ -64,13 +64,13 @@ namespace Mall.WindowsService.Module
List<OrderStatistics_Query> listCancel = new List<OrderStatistics_Query>(); List<OrderStatistics_Query> listCancel = new List<OrderStatistics_Query>();
List<OrderStatistics_Query> listAftersale = 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()) if (list != null && list.Any())
{ {
string ids = string.Join(",", list.Select(x => x.Id)); string ids = string.Join(",", list.Select(x => x.Id));
demodel.Ids = ids; demodel.Ids = ids;
listCancel = statisticsModule.GetFXAllCancelOrderProfitLossList(demodel); listCancel = statisticsModule.GetFXAllCancelOrderProfitLossList_V2(demodel);
listAftersale = statisticsModule.GetFXAllAftersaleOrderProfitLossList(demodel); listAftersale = statisticsModule.GetFXAllAftersaleOrderProfitLossList_V2(demodel);
} }
foreach (var item in list) foreach (var item in list)
...@@ -142,8 +142,10 @@ namespace Mall.WindowsService.Module ...@@ -142,8 +142,10 @@ namespace Mall.WindowsService.Module
}; };
#region 拉取统计数据 #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.PeopleNum = dayList.Select(x => x.UserId).Distinct().Count();//付款人数
usmodel.OrderNum = dayList.Select(x => x.OrderId).Distinct().Count();//付款单数 usmodel.OrderNum = dayList.Select(x => x.OrderId).Distinct().Count();//付款单数
usmodel.PayMoney = dayList.Sum(x => x.AllPrice);//付款金额 usmodel.PayMoney = dayList.Sum(x => x.AllPrice);//付款金额
...@@ -186,7 +188,9 @@ namespace Mall.WindowsService.Module ...@@ -186,7 +188,9 @@ namespace Mall.WindowsService.Module
//利润 //利润
usmodel.Profit = dayList.Sum(x => x.GrossProfit); 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 #endregion
var sModel = slist.Where(x => x.Date == Convert.ToDateTime(SDate)).FirstOrDefault(); var sModel = slist.Where(x => x.Date == Convert.ToDateTime(SDate)).FirstOrDefault();
if (sModel == null) 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