Commit 94ee406d authored by 黄奎's avatar 黄奎

页面修改

parent fa19bc31
...@@ -404,160 +404,160 @@ namespace Edu.Module.User ...@@ -404,160 +404,160 @@ namespace Edu.Module.User
if (index > 0) if (index > 0)
{ {
decimal PushCount = 0; decimal PushCount = 0;
if (item.PushCount > 0) if (firstModel.PushCount > 0)
{ {
PushCount = (item.PushCount - firstModel.PushCount) / item.PushCount * 100; PushCount = (item.PushCount - firstModel.PushCount) / firstModel.PushCount * 100;
} }
decimal NewCount = 0; decimal NewCount = 0;
if (item.NewCount > 0) if (firstModel.NewCount > 0)
{ {
NewCount = (item.NewCount - firstModel.NewCount) / item.NewCount * 100; NewCount = (item.NewCount - firstModel.NewCount) / firstModel.NewCount * 100;
} }
decimal CommunicationCount = 0; decimal CommunicationCount = 0;
if (item.CommunicationCount > 0) if (firstModel.CommunicationCount > 0)
{ {
CommunicationCount = (item.CommunicationCount - firstModel.CommunicationCount) / item.CommunicationCount * 100; CommunicationCount = (item.CommunicationCount - firstModel.CommunicationCount) / firstModel.CommunicationCount * 100;
} }
decimal TrialLessonCount = 0; decimal TrialLessonCount = 0;
if (item.TrialLessonCount > 0) if (firstModel.TrialLessonCount > 0)
{ {
TrialLessonCount = (item.TrialLessonCount - firstModel.TrialLessonCount) / item.TrialLessonCount * 100; TrialLessonCount = (item.TrialLessonCount - firstModel.TrialLessonCount) / firstModel.TrialLessonCount * 100;
} }
decimal NotContacted = 0; decimal NotContacted = 0;
if (item.NotContacted > 0) if (firstModel.NotContacted > 0)
{ {
NotContacted = (item.NotContacted - firstModel.NotContacted) / item.NotContacted * 100; NotContacted = (item.NotContacted - firstModel.NotContacted) / firstModel.NotContacted * 100;
} }
decimal JPCount = 0; decimal JPCount = 0;
if (item.JPCount > 0) if (firstModel.JPCount > 0)
{ {
JPCount = (item.JPCount - firstModel.JPCount) / item.JPCount * 100; JPCount = (item.JPCount - firstModel.JPCount) / firstModel.JPCount * 100;
} }
decimal KRCount = 0; decimal KRCount = 0;
if (item.KRCount > 0) if (firstModel.KRCount > 0)
{ {
KRCount = (item.KRCount - firstModel.KRCount) / item.KRCount * 100; KRCount = (item.KRCount - firstModel.KRCount) / firstModel.KRCount * 100;
} }
decimal FRCount = 0; decimal FRCount = 0;
if (item.FRCount > 0) if (firstModel.FRCount > 0)
{ {
FRCount = (item.FRCount - firstModel.FRCount) / item.FRCount * 100; FRCount = (item.FRCount - firstModel.FRCount) / firstModel.FRCount * 100;
} }
decimal JPStudyCount = 0; decimal JPStudyCount = 0;
if (item.JPStudyCount > 0) if (firstModel.JPStudyCount > 0)
{ {
JPStudyCount = (item.JPStudyCount - firstModel.JPStudyCount) / item.JPStudyCount * 100; JPStudyCount = (item.JPStudyCount - firstModel.JPStudyCount) / firstModel.JPStudyCount * 100;
} }
decimal KRStudyCount = 0; decimal KRStudyCount = 0;
if (item.KRStudyCount > 0) if (firstModel.KRStudyCount > 0)
{ {
KRStudyCount = (item.KRStudyCount - firstModel.KRStudyCount) / item.KRStudyCount * 100; KRStudyCount = (item.KRStudyCount - firstModel.KRStudyCount) / firstModel.KRStudyCount * 100;
} }
decimal YGAStudyCount = 0; decimal YGAStudyCount = 0;
if (item.YGAStudyCount > 0) if (firstModel.YGAStudyCount > 0)
{ {
YGAStudyCount = (item.YGAStudyCount - firstModel.YGAStudyCount) / item.YGAStudyCount * 100; YGAStudyCount = (item.YGAStudyCount - firstModel.YGAStudyCount) / firstModel.YGAStudyCount * 100;
} }
decimal USStudyCount = 0; decimal USStudyCount = 0;
if (item.USStudyCount > 0) if (firstModel.USStudyCount > 0)
{ {
USStudyCount = (item.USStudyCount - firstModel.USStudyCount) / item.USStudyCount * 100; USStudyCount = (item.USStudyCount - firstModel.USStudyCount) / firstModel.USStudyCount * 100;
} }
decimal SGStudyCount = 0; decimal SGStudyCount = 0;
if (item.SGStudyCount > 0) if (firstModel.SGStudyCount > 0)
{ {
SGStudyCount = (item.SGStudyCount - firstModel.SGStudyCount) / item.SGStudyCount * 100; SGStudyCount = (item.SGStudyCount - firstModel.SGStudyCount) / firstModel.SGStudyCount * 100;
} }
decimal AXStudyCount = 0; decimal AXStudyCount = 0;
if (item.AXStudyCount > 0) if (firstModel.AXStudyCount > 0)
{ {
AXStudyCount = (item.AXStudyCount - firstModel.AXStudyCount) / item.AXStudyCount * 100; AXStudyCount = (item.AXStudyCount - firstModel.AXStudyCount) / firstModel.AXStudyCount * 100;
} }
decimal OtherCount = 0; decimal OtherCount = 0;
if (item.OtherCount > 0) if (firstModel.OtherCount > 0)
{ {
OtherCount = (item.OtherCount - firstModel.OtherCount) / item.OtherCount * 100; OtherCount = (item.OtherCount - firstModel.OtherCount) / firstModel.OtherCount * 100;
} }
decimal ClassACount = 0; decimal ClassACount = 0;
if (item.ClassACount > 0) if (firstModel.ClassACount > 0)
{ {
ClassACount = (item.ClassACount - firstModel.ClassACount) / item.ClassACount * 100; ClassACount = (item.ClassACount - firstModel.ClassACount) / firstModel.ClassACount * 100;
} }
decimal ClassBCount = 0; decimal ClassBCount = 0;
if (item.ClassBCount > 0) if (firstModel.ClassBCount > 0)
{ {
ClassBCount = (item.ClassBCount - firstModel.ClassBCount) / item.ClassBCount * 100; ClassBCount = (item.ClassBCount - firstModel.ClassBCount) / firstModel.ClassBCount * 100;
} }
decimal ClassCCount = 0; decimal ClassCCount = 0;
if (item.ClassCCount > 0) if (firstModel.ClassCCount > 0)
{ {
ClassCCount = (item.ClassCCount - firstModel.ClassCCount) / item.ClassCCount * 100; ClassCCount = (item.ClassCCount - firstModel.ClassCCount) / firstModel.ClassCCount * 100;
} }
decimal ClassDCount = 0; decimal ClassDCount = 0;
if (item.ClassDCount > 0) if (firstModel.ClassDCount > 0)
{ {
ClassDCount = (item.ClassDCount - firstModel.ClassDCount) / item.ClassDCount * 100; ClassDCount = (item.ClassDCount - firstModel.ClassDCount) / firstModel.ClassDCount * 100;
} }
decimal CustomerCount = 0; decimal CustomerCount = 0;
if (item.CustomerCount > 0) if (firstModel.CustomerCount > 0)
{ {
CustomerCount = (item.CustomerCount - firstModel.CustomerCount) / item.CustomerCount * 100; CustomerCount = (item.CustomerCount - firstModel.CustomerCount) / firstModel.CustomerCount * 100;
} }
decimal B2CCount = 0; decimal B2CCount = 0;
if (item.B2CCount > 0) if (firstModel.B2CCount > 0)
{ {
B2CCount = (item.B2CCount - firstModel.B2CCount) / item.B2CCount * 100; B2CCount = (item.B2CCount - firstModel.B2CCount) / firstModel.B2CCount * 100;
} }
decimal TransCount = 0; decimal TransCount = 0;
if (item.TransCount > 0) if (firstModel.TransCount > 0)
{ {
TransCount = (item.TransCount - firstModel.TransCount) / item.TransCount * 100; TransCount = (item.TransCount - firstModel.TransCount) / firstModel.TransCount * 100;
} }
decimal InnerCount = 0; decimal InnerCount = 0;
if (item.InnerCount > 0) if (firstModel.InnerCount > 0)
{ {
InnerCount = (item.InnerCount - firstModel.InnerCount) / item.InnerCount * 100; InnerCount = (item.InnerCount - firstModel.InnerCount) / firstModel.InnerCount * 100;
} }
decimal InvalidCount = 0; decimal InvalidCount = 0;
if (item.InvalidCount > 0) if (firstModel.InvalidCount > 0)
{ {
InvalidCount = (item.InvalidCount - firstModel.InvalidCount) / item.InvalidCount * 100; InvalidCount = (item.InvalidCount - firstModel.InvalidCount) / firstModel.InvalidCount * 100;
} }
decimal SuspectedCount = 0; decimal SuspectedCount = 0;
if (item.SuspectedCount > 0) if (firstModel.SuspectedCount > 0)
{ {
SuspectedCount = (item.SuspectedCount - firstModel.SuspectedCount) / item.SuspectedCount * 100; SuspectedCount = (item.SuspectedCount - firstModel.SuspectedCount) / firstModel.SuspectedCount * 100;
} }
decimal IntentionCount = 0; decimal IntentionCount = 0;
if (item.IntentionCount > 0) if (firstModel.IntentionCount > 0)
{ {
IntentionCount = (item.IntentionCount - firstModel.IntentionCount) / item.IntentionCount * 100; IntentionCount = (item.IntentionCount - firstModel.IntentionCount) / firstModel.IntentionCount * 100;
} }
decimal InvitationCount = 0; decimal InvitationCount = 0;
if (item.InvitationCount > 0) if (firstModel.InvitationCount > 0)
{ {
InvitationCount = (item.InvitationCount - firstModel.InvitationCount) / item.InvitationCount * 100; InvitationCount = (item.InvitationCount - firstModel.InvitationCount) / firstModel.InvitationCount * 100;
} }
decimal NegotiationCount = 0; decimal NegotiationCount = 0;
if (item.NegotiationCount > 0) if (firstModel.NegotiationCount > 0)
{ {
NegotiationCount = (item.NegotiationCount - firstModel.NegotiationCount) / item.NegotiationCount * 100; NegotiationCount = (item.NegotiationCount - firstModel.NegotiationCount) / firstModel.NegotiationCount * 100;
} }
decimal ContractCount = 0; decimal ContractCount = 0;
if (item.ContractCount > 0) if (firstModel.ContractCount > 0)
{ {
ContractCount = (item.ContractCount - firstModel.ContractCount) / item.ContractCount * 100; ContractCount = (item.ContractCount - firstModel.ContractCount) / firstModel.ContractCount * 100;
} }
decimal OrderMoney = 0; decimal OrderMoney = 0;
if (item.OrderMoney > 0) if (firstModel.OrderMoney > 0)
{ {
OrderMoney = (item.OrderMoney - firstModel.OrderMoney) / item.OrderMoney * 100; OrderMoney = (item.OrderMoney - firstModel.OrderMoney) / firstModel.OrderMoney * 100;
} }
decimal StudyOrderMoney = 0; decimal StudyOrderMoney = 0;
if (item.StudyOrderMoney > 0) if (firstModel.StudyOrderMoney > 0)
{ {
StudyOrderMoney = (item.StudyOrderMoney - firstModel.StudyOrderMoney) / item.StudyOrderMoney * 100; StudyOrderMoney = (item.StudyOrderMoney - firstModel.StudyOrderMoney) / firstModel.StudyOrderMoney * 100;
} }
subObj = new subObj = new
{ {
...@@ -2152,14 +2152,16 @@ namespace Edu.Module.User ...@@ -2152,14 +2152,16 @@ namespace Edu.Module.User
public List<RateYearItem> GetStudentStaticListYearRateModule(RB_Student_Static_Extend query) public List<RateYearItem> GetStudentStaticListYearRateModule(RB_Student_Static_Extend query)
{ {
List<RateYearItem> yearList = new List<RateYearItem>(); List<RateYearItem> yearList = new List<RateYearItem>();
List<RB_Student_Static_Extend> rateList = new List<RB_Student_Static_Extend>();
var list = student_StaticRepository.GetStudentStaticYearListRepository(query); var dataList = student_StaticRepository.GetStudentStaticMonthListRepository(query, isYear:true);
if (list != null) List<RB_Student_Static_Extend> result = new List<RB_Student_Static_Extend>();
int minYear = dataList.Min(qitem => qitem.YearStr);
int maxYear = dataList.Max(qitem => qitem.YearStr);
var totalYear = maxYear - minYear;
for (var y = 0; y <= totalYear; y++)
{ {
int minYear = list.Min(qitem => qitem.YearStr); var list = dataList.Where(qitem => qitem.YearStr == minYear + y).ToList();
int maxYear = list.Max(qitem => qitem.YearStr); for (var i = 0; i < 12; i++)
var totalYear = maxYear - minYear;
for (var i = 0; i <= totalYear; i++)
{ {
decimal PushCount = 0; decimal PushCount = 0;
var firstModel = new RB_Student_Static_Extend(); var firstModel = new RB_Student_Static_Extend();
...@@ -2168,120 +2170,120 @@ namespace Edu.Module.User ...@@ -2168,120 +2170,120 @@ namespace Edu.Module.User
firstModel = i < list.Count ? list[i - 1] : new RB_Student_Static_Extend(); firstModel = i < list.Count ? list[i - 1] : new RB_Student_Static_Extend();
} }
var item = i < list.Count ? list[i] : new RB_Student_Static_Extend(); var item = i < list.Count ? list[i] : new RB_Student_Static_Extend();
if (item.PushCount > 0 && i > 0) if (firstModel.PushCount > 0 && i > 0)
{ {
PushCount = (item.PushCount - firstModel.PushCount) / item.PushCount * 100; PushCount = (item.PushCount - firstModel.PushCount) / firstModel.PushCount * 100;
} }
decimal NewCount = 0; decimal NewCount = 0;
if (item.NewCount > 0 && i > 0) if (firstModel.NewCount > 0 && i > 0)
{ {
NewCount = (item.NewCount - firstModel.NewCount) / item.NewCount * 100; NewCount = (item.NewCount - firstModel.NewCount) / firstModel.NewCount * 100;
} }
decimal CommunicationCount = 0; decimal CommunicationCount = 0;
if (item.CommunicationCount > 0 && i > 0) if (firstModel.CommunicationCount > 0 && i > 0)
{ {
CommunicationCount = (item.CommunicationCount - firstModel.CommunicationCount) / item.CommunicationCount * 100; CommunicationCount = (item.CommunicationCount - firstModel.CommunicationCount) / firstModel.CommunicationCount * 100;
} }
decimal TrialLessonCount = 0; decimal TrialLessonCount = 0;
if (item.TrialLessonCount > 0 && i > 0) if (firstModel.TrialLessonCount > 0 && i > 0)
{ {
TrialLessonCount = (item.TrialLessonCount - firstModel.TrialLessonCount) / item.TrialLessonCount * 100; TrialLessonCount = (item.TrialLessonCount - firstModel.TrialLessonCount) / firstModel.TrialLessonCount * 100;
} }
decimal NotContacted = 0; decimal NotContacted = 0;
if (item.NotContacted > 0 && i > 0) if (firstModel.NotContacted > 0 && i > 0)
{ {
NotContacted = (item.NotContacted - firstModel.NotContacted) / item.NotContacted * 100; NotContacted = (item.NotContacted - firstModel.NotContacted) / firstModel.NotContacted * 100;
} }
decimal JPCount = 0; decimal JPCount = 0;
if (item.JPCount > 0 && i > 0) if (firstModel.JPCount > 0 && i > 0)
{ {
JPCount = (item.JPCount - firstModel.JPCount) / item.JPCount * 100; JPCount = (item.JPCount - firstModel.JPCount) / firstModel.JPCount * 100;
} }
decimal KRCount = 0; decimal KRCount = 0;
if (item.KRCount > 0 && i > 0) if (firstModel.KRCount > 0 && i > 0)
{ {
KRCount = (item.KRCount - firstModel.KRCount) / item.KRCount * 100; KRCount = (item.KRCount - firstModel.KRCount) / firstModel.KRCount * 100;
} }
decimal FRCount = 0; decimal FRCount = 0;
if (item.FRCount > 0 && i > 0) if (firstModel.FRCount > 0 && i > 0)
{ {
FRCount = (item.FRCount - firstModel.FRCount) / item.FRCount * 100; FRCount = (item.FRCount - firstModel.FRCount) / firstModel.FRCount * 100;
} }
decimal JPStudyCount = 0; decimal JPStudyCount = 0;
if (item.JPStudyCount > 0 && i > 0) if (firstModel.JPStudyCount > 0 && i > 0)
{ {
JPStudyCount = (item.JPStudyCount - firstModel.JPStudyCount) / item.JPStudyCount * 100; JPStudyCount = (item.JPStudyCount - firstModel.JPStudyCount) / firstModel.JPStudyCount * 100;
} }
decimal KRStudyCount = 0; decimal KRStudyCount = 0;
if (item.KRStudyCount > 0 && i > 0) if (firstModel.KRStudyCount > 0 && i > 0)
{ {
KRStudyCount = (item.KRStudyCount - firstModel.KRStudyCount) / item.KRStudyCount * 100; KRStudyCount = (item.KRStudyCount - firstModel.KRStudyCount) / firstModel.KRStudyCount * 100;
} }
decimal YGAStudyCount = 0; decimal YGAStudyCount = 0;
if (item.YGAStudyCount > 0 && i > 0) if (firstModel.YGAStudyCount > 0 && i > 0)
{ {
YGAStudyCount = (item.YGAStudyCount - firstModel.YGAStudyCount) / item.YGAStudyCount * 100; YGAStudyCount = (item.YGAStudyCount - firstModel.YGAStudyCount) / firstModel.YGAStudyCount * 100;
} }
decimal USStudyCount = 0; decimal USStudyCount = 0;
if (item.USStudyCount > 0 && i > 0) if (firstModel.USStudyCount > 0 && i > 0)
{ {
USStudyCount = (item.USStudyCount - firstModel.USStudyCount) / item.USStudyCount * 100; USStudyCount = (item.USStudyCount - firstModel.USStudyCount) / firstModel.USStudyCount * 100;
} }
decimal SGStudyCount = 0; decimal SGStudyCount = 0;
if (item.SGStudyCount > 0 && i > 0) if (firstModel.SGStudyCount > 0 && i > 0)
{ {
SGStudyCount = (item.SGStudyCount - firstModel.SGStudyCount) / item.SGStudyCount * 100; SGStudyCount = (item.SGStudyCount - firstModel.SGStudyCount) / firstModel.SGStudyCount * 100;
} }
decimal AXStudyCount = 0; decimal AXStudyCount = 0;
if (item.AXStudyCount > 0 && i > 0) if (firstModel.AXStudyCount > 0 && i > 0)
{ {
AXStudyCount = (item.AXStudyCount - firstModel.AXStudyCount) / item.AXStudyCount * 100; AXStudyCount = (item.AXStudyCount - firstModel.AXStudyCount) / firstModel.AXStudyCount * 100;
} }
decimal OtherCount = 0; decimal OtherCount = 0;
if (item.OtherCount > 0 && i > 0) if (firstModel.OtherCount > 0 && i > 0)
{ {
OtherCount = (item.OtherCount - firstModel.OtherCount) / item.OtherCount * 100; OtherCount = (item.OtherCount - firstModel.OtherCount) / firstModel.OtherCount * 100;
} }
decimal ClassACount = 0; decimal ClassACount = 0;
if (item.ClassACount > 0 && i > 0) if (firstModel.ClassACount > 0 && i > 0)
{ {
ClassACount = (item.ClassACount - firstModel.ClassACount) / item.ClassACount * 100; ClassACount = (item.ClassACount - firstModel.ClassACount) / firstModel.ClassACount * 100;
} }
decimal ClassBCount = 0; decimal ClassBCount = 0;
if (item.ClassBCount > 0 && i > 0) if (firstModel.ClassBCount > 0 && i > 0)
{ {
ClassBCount = (item.ClassBCount - firstModel.ClassBCount) / item.ClassBCount * 100; ClassBCount = (item.ClassBCount - firstModel.ClassBCount) / firstModel.ClassBCount * 100;
} }
decimal ClassCCount = 0; decimal ClassCCount = 0;
if (item.ClassCCount > 0) if (firstModel.ClassCCount > 0)
{ {
ClassCCount = (item.ClassCCount - firstModel.ClassCCount) / item.ClassCCount * 100; ClassCCount = (item.ClassCCount - firstModel.ClassCCount) / firstModel.ClassCCount * 100;
} }
decimal ClassDCount = 0; decimal ClassDCount = 0;
if (item.ClassDCount > 0 && i > 0) if (firstModel.ClassDCount > 0 && i > 0)
{ {
ClassDCount = (item.ClassDCount - firstModel.ClassDCount) / item.ClassDCount * 100; ClassDCount = (item.ClassDCount - firstModel.ClassDCount) / firstModel.ClassDCount * 100;
} }
decimal CustomerCount = 0; decimal CustomerCount = 0;
if (item.CustomerCount > 0 && i > 0) if (firstModel.CustomerCount > 0 && i > 0)
{ {
CustomerCount = (item.CustomerCount - firstModel.CustomerCount) / item.CustomerCount * 100; CustomerCount = (item.CustomerCount - firstModel.CustomerCount) / firstModel.CustomerCount * 100;
} }
decimal B2CCount = 0; decimal B2CCount = 0;
if (item.B2CCount > 0 && i > 0) if (firstModel.B2CCount > 0 && i > 0)
{ {
B2CCount = (item.B2CCount - firstModel.B2CCount) / item.B2CCount * 100; B2CCount = (item.B2CCount - firstModel.B2CCount) / firstModel.B2CCount * 100;
} }
decimal TransCount = 0; decimal TransCount = 0;
if (item.TransCount > 0 && i > 0) if (firstModel.TransCount > 0 && i > 0)
{ {
TransCount = (item.TransCount - firstModel.TransCount) / item.TransCount * 100; TransCount = (item.TransCount - firstModel.TransCount) / firstModel.TransCount * 100;
} }
decimal InnerCount = 0; decimal InnerCount = 0;
if (item.InnerCount > 0 && i > 0) if (firstModel.InnerCount > 0 && i > 0)
{ {
InnerCount = (item.InnerCount - firstModel.InnerCount) / item.InnerCount * 100; InnerCount = (item.InnerCount - firstModel.InnerCount) / firstModel.InnerCount * 100;
} }
decimal InvalidCount = 0; decimal InvalidCount = 0;
if (item.InvalidCount > 0 && i > 0) if (item.InvalidCount > 0 && i > 0)
...@@ -2289,43 +2291,44 @@ namespace Edu.Module.User ...@@ -2289,43 +2291,44 @@ namespace Edu.Module.User
InvalidCount = (item.InvalidCount - firstModel.InvalidCount) / item.InvalidCount * 100; InvalidCount = (item.InvalidCount - firstModel.InvalidCount) / item.InvalidCount * 100;
} }
decimal SuspectedCount = 0; decimal SuspectedCount = 0;
if (item.SuspectedCount > 0 && i > 0) if (firstModel.SuspectedCount > 0 && i > 0)
{ {
SuspectedCount = (item.SuspectedCount - firstModel.SuspectedCount) / item.SuspectedCount * 100; SuspectedCount = (item.SuspectedCount - firstModel.SuspectedCount) / firstModel.SuspectedCount * 100;
} }
decimal IntentionCount = 0; decimal IntentionCount = 0;
if (item.IntentionCount > 0 && i > 0) if (firstModel.IntentionCount > 0 && i > 0)
{ {
IntentionCount = (item.IntentionCount - firstModel.IntentionCount) / item.IntentionCount * 100; IntentionCount = (item.IntentionCount - firstModel.IntentionCount) / firstModel.IntentionCount * 100;
} }
decimal InvitationCount = 0; decimal InvitationCount = 0;
if (item.InvitationCount > 0 && i > 0) if (firstModel.InvitationCount > 0 && i > 0)
{ {
InvitationCount = (item.InvitationCount - firstModel.InvitationCount) / item.InvitationCount * 100; InvitationCount = (item.InvitationCount - firstModel.InvitationCount) / firstModel.InvitationCount * 100;
} }
decimal NegotiationCount = 0; decimal NegotiationCount = 0;
if (item.NegotiationCount > 0 && i > 0) if (firstModel.NegotiationCount > 0 && i > 0)
{ {
NegotiationCount = (item.NegotiationCount - firstModel.NegotiationCount) / item.NegotiationCount * 100; NegotiationCount = (item.NegotiationCount - firstModel.NegotiationCount) / firstModel.NegotiationCount * 100;
} }
decimal ContractCount = 0; decimal ContractCount = 0;
if (item.ContractCount > 0 && i > 0) if (firstModel.ContractCount > 0 && i > 0)
{ {
ContractCount = (item.ContractCount - firstModel.ContractCount) / item.ContractCount * 100; ContractCount = (item.ContractCount - firstModel.ContractCount) / firstModel.ContractCount * 100;
} }
decimal OrderMoney = 0; decimal OrderMoney = 0;
if (item.OrderMoney > 0 && i > 0) if (firstModel.OrderMoney > 0 && i > 0)
{ {
OrderMoney = (item.OrderMoney - firstModel.OrderMoney) / item.OrderMoney * 100; OrderMoney = (item.OrderMoney - firstModel.OrderMoney) / firstModel.OrderMoney * 100;
} }
decimal StudyOrderMoney = 0; decimal StudyOrderMoney = 0;
if (item.StudyOrderMoney > 0 && i > 0) if (firstModel.StudyOrderMoney > 0 && i > 0)
{ {
StudyOrderMoney = (item.StudyOrderMoney - firstModel.StudyOrderMoney) / item.StudyOrderMoney * 100; StudyOrderMoney = (item.StudyOrderMoney - firstModel.StudyOrderMoney) / firstModel.StudyOrderMoney * 100;
} }
rateList.Add(new RB_Student_Static_Extend() var newModel = new RB_Student_Static_Extend()
{ {
YearStr = minYear + i, YearStr =minYear+y,
MonthStr = i + 1,
PushCount = PushCount, PushCount = PushCount,
NewCount = NewCount, NewCount = NewCount,
CommunicationCount = CommunicationCount, CommunicationCount = CommunicationCount,
...@@ -2357,478 +2360,538 @@ namespace Edu.Module.User ...@@ -2357,478 +2360,538 @@ namespace Edu.Module.User
ContractCount = ContractCount, ContractCount = ContractCount,
OrderMoney = OrderMoney, OrderMoney = OrderMoney,
StudyOrderMoney = StudyOrderMoney, StudyOrderMoney = StudyOrderMoney,
}); };
} result.Add(newModel);
var lastModel = rateList.FirstOrDefault(qitem => qitem.YearStr == minYear);
var curModel = rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear);
decimal CPushCount = 0;
if (lastModel.PushCount > 0)
{
CPushCount = (curModel.PushCount - lastModel.PushCount) / lastModel.PushCount * 100;
} }
}
yearList.Add(new RateYearItem() var lastPushCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem=>qitem.PushCount);
{ var curPushCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.PushCount);
ItemName = "推送人数成长率", decimal CPushCount = 0;
FirstYearStr = minYear, if (lastPushCount > 0)
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).PushCount, 2), {
SecondYearStr = maxYear, CPushCount = (curPushCount - lastPushCount) / lastPushCount * 100;
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).PushCount, 2), }
YearRate = Math.Round(CPushCount, 2),
});
decimal CNewCount = 0; yearList.Add(new RateYearItem()
if (lastModel.NewCount > 0) {
{ ItemName = "推送人数成长率",
CNewCount = (curModel.NewCount - lastModel.NewCount) / lastModel.NewCount * 100; FirstYearStr = minYear,
} FirstYear = Math.Round(lastPushCount, 2),
yearList.Add(new RateYearItem() SecondYearStr = maxYear,
{ SecondYear = Math.Round(curPushCount, 2),
ItemName = "新客户成长率", YearRate = Math.Round(CPushCount, 2),
FirstYearStr = minYear, });
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).NewCount, 2),
SecondYearStr = maxYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).NewCount, 2),
YearRate = Math.Round(CNewCount, 2),
});
decimal CCommunicationCount = 0; var lastNewCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.NewCount);
if (lastModel.CommunicationCount > 0) var curNewCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.NewCount);
{ decimal CNewCount = 0;
CCommunicationCount = (curModel.CommunicationCount - lastModel.CommunicationCount) / lastModel.CommunicationCount * 100; if (lastNewCount > 0)
} {
yearList.Add(new RateYearItem() CNewCount = (curNewCount - lastNewCount) / lastNewCount * 100;
{ }
ItemName = "初步(二次)沟通成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).CommunicationCount, 2), ItemName = "新客户成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).CommunicationCount, 2), FirstYear = Math.Round(lastNewCount, 2),
YearRate = Math.Round(CCommunicationCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curNewCount, 2),
YearRate = Math.Round(CNewCount, 2),
});
decimal CTrialLessonCount = 0; var lastCommunicationCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.CommunicationCount);
if (lastModel.TrialLessonCount > 0) var curCommunicationCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.CommunicationCount);
{ decimal CCommunicationCount = 0;
CTrialLessonCount = (curModel.TrialLessonCount - lastModel.TrialLessonCount) / lastModel.TrialLessonCount * 100; if (lastCommunicationCount > 0)
} {
yearList.Add(new RateYearItem() CCommunicationCount = (curCommunicationCount - lastCommunicationCount) / lastCommunicationCount * 100;
{ }
ItemName = "预约试听(已到店.已试听)成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).TrialLessonCount, 2), ItemName = "初步(二次)沟通成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).TrialLessonCount, 2), FirstYear = Math.Round(lastCommunicationCount, 2),
YearRate = Math.Round(CTrialLessonCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curCommunicationCount, 2),
YearRate = Math.Round(CCommunicationCount, 2),
});
decimal CNotContacted = 0; var lastTrialLessonCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.TrialLessonCount);
if (lastModel.NotContacted > 0) var curTrialLessonCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.TrialLessonCount);
{ decimal CTrialLessonCount = 0;
CNotContacted = (curModel.NotContacted - lastModel.NotContacted) / lastModel.NotContacted * 100; if (lastTrialLessonCount > 0)
} {
yearList.Add(new RateYearItem() CTrialLessonCount = (curTrialLessonCount - lastTrialLessonCount) / lastTrialLessonCount * 100;
{ }
ItemName = "待联系成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).NotContacted, 2), ItemName = "预约试听(已到店.已试听)成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).NotContacted, 2), FirstYear = Math.Round(lastTrialLessonCount, 2),
YearRate = Math.Round(CNotContacted, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curTrialLessonCount, 2),
YearRate = Math.Round(CTrialLessonCount, 2),
});
decimal CJPCount = 0; var lastNotContacted = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.NotContacted);
if (lastModel.JPCount > 0) var curNotContacted = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.NotContacted);
{ decimal CNotContacted = 0;
CJPCount = (curModel.JPCount - lastModel.JPCount) / lastModel.JPCount * 100; if (lastNotContacted > 0)
} {
yearList.Add(new RateYearItem() CNotContacted = (curNotContacted - lastNotContacted) / lastNotContacted * 100;
{ }
ItemName = "日本语培成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).JPCount, 2), ItemName = "待联系成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).JPCount, 2), FirstYear = Math.Round(lastNotContacted, 2),
YearRate = Math.Round(CJPCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curNotContacted, 2),
YearRate = Math.Round(CNotContacted, 2),
});
var lastJPCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.JPCount);
var curJPCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.JPCount);
decimal CJPCount = 0;
if (lastJPCount > 0)
{
CJPCount = (curJPCount - lastJPCount) / lastJPCount * 100;
}
yearList.Add(new RateYearItem()
{
ItemName = "日本语培成长率",
FirstYearStr = minYear,
FirstYear = Math.Round(lastJPCount, 2),
SecondYearStr = maxYear,
SecondYear = Math.Round(curJPCount, 2),
YearRate = Math.Round(CJPCount, 2),
});
decimal CKRCount = 0; var lastKRCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.KRCount);
if (lastModel.KRCount > 0) var curKRCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.KRCount);
{ decimal CKRCount = 0;
CKRCount = (curModel.KRCount - lastModel.KRCount) / lastModel.KRCount * 100; if (lastKRCount > 0)
} {
yearList.Add(new RateYearItem() CKRCount = (curKRCount - lastKRCount) / lastKRCount * 100;
{ }
ItemName = "韩国语培成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).KRCount, 2), ItemName = "韩国语培成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).KRCount, 2), FirstYear = Math.Round(lastKRCount, 2),
YearRate = Math.Round(CKRCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curKRCount, 2),
YearRate = Math.Round(CKRCount, 2),
});
decimal CFRCount = 0; var lastFRCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.FRCount);
if (lastModel.FRCount > 0) var curFRCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.FRCount);
{ decimal CFRCount = 0;
CFRCount = (curModel.FRCount - lastModel.FRCount) / lastModel.FRCount * 100; if (lastFRCount > 0)
} {
yearList.Add(new RateYearItem() CFRCount = (curFRCount - lastFRCount) / lastFRCount * 100;
{ }
ItemName = "法国语培成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).FRCount, 2), ItemName = "法国语培成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).FRCount, 2), FirstYear = Math.Round(lastFRCount, 2),
YearRate = Math.Round(CFRCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curFRCount, 2),
YearRate = Math.Round(CFRCount, 2),
});
decimal CJPStudyCount = 0; var lastJPStudyCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.JPStudyCount);
if (lastModel.JPStudyCount > 0) var curJPStudyCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.JPStudyCount);
{ decimal CJPStudyCount = 0;
CJPStudyCount = (curModel.JPStudyCount - lastModel.JPStudyCount) / lastModel.JPStudyCount * 100; if (lastJPStudyCount > 0)
} {
yearList.Add(new RateYearItem() CJPStudyCount = (curJPStudyCount - lastJPStudyCount) / lastJPStudyCount * 100;
{ }
ItemName = "日本留学成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).JPStudyCount, 2), ItemName = "日本留学成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).JPStudyCount, 2), FirstYear = Math.Round(lastJPStudyCount, 2),
YearRate = Math.Round(CJPStudyCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curJPStudyCount, 2),
YearRate = Math.Round(CJPStudyCount, 2),
});
decimal CKRStudyCount = 0; var lastKRStudyCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.KRStudyCount);
if (lastModel.KRStudyCount > 0) var curKRStudyCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.KRStudyCount);
{ decimal CKRStudyCount = 0;
CKRStudyCount = (curModel.KRStudyCount - lastModel.KRStudyCount) / lastModel.KRStudyCount * 100; if (lastKRStudyCount > 0)
} {
yearList.Add(new RateYearItem() CKRStudyCount = (curKRStudyCount - lastKRStudyCount) / lastKRStudyCount * 100;
{ }
ItemName = "韩国留学成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(list.FirstOrDefault(qitem => qitem.YearStr == minYear).KRStudyCount, 2), ItemName = "韩国留学成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(list.FirstOrDefault(qitem => qitem.YearStr == maxYear).KRStudyCount, 2), FirstYear = Math.Round(lastKRStudyCount, 2),
YearRate = Math.Round(CKRStudyCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curKRStudyCount, 2),
YearRate = Math.Round(CKRStudyCount, 2),
});
var lastYGAStudyCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.YGAStudyCount);
var curYGAStudyCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.YGAStudyCount);
decimal CYGAStudyCount = 0;
if (lastYGAStudyCount > 0)
{
CYGAStudyCount = (curYGAStudyCount - lastYGAStudyCount) / lastYGAStudyCount * 100;
}
yearList.Add(new RateYearItem()
{
ItemName = "英港澳留学成长率",
FirstYearStr = minYear,
FirstYear = Math.Round(lastYGAStudyCount, 2),
SecondYearStr = maxYear,
SecondYear = Math.Round(curYGAStudyCount, 2),
YearRate = Math.Round(CYGAStudyCount, 2),
});
decimal CYGAStudyCount = 0; var lastUSStudyCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.USStudyCount);
if (lastModel.YGAStudyCount > 0) var curUSStudyCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.USStudyCount);
{ decimal CUSStudyCount = 0;
CYGAStudyCount = (curModel.YGAStudyCount - lastModel.YGAStudyCount) / lastModel.YGAStudyCount * 100; if (lastUSStudyCount > 0)
} {
yearList.Add(new RateYearItem() CUSStudyCount = (curUSStudyCount - lastUSStudyCount) / lastUSStudyCount * 100;
{ }
ItemName = "英港澳留学成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).YGAStudyCount, 2), ItemName = "美国留学成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).YGAStudyCount, 2), FirstYear = Math.Round(lastUSStudyCount, 2),
YearRate = Math.Round(CYGAStudyCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curUSStudyCount, 2),
YearRate = Math.Round(CUSStudyCount, 2),
});
decimal CUSStudyCount = 0; var lastSGStudyCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.SGStudyCount);
if (lastModel.USStudyCount > 0) var curSGStudyCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.SGStudyCount);
{ decimal CSGStudyCount = 0;
CUSStudyCount = (curModel.USStudyCount - lastModel.USStudyCount) / lastModel.USStudyCount * 100; if (lastSGStudyCount > 0)
} {
yearList.Add(new RateYearItem() CSGStudyCount = (curSGStudyCount - lastSGStudyCount) / lastSGStudyCount * 100;
{ }
ItemName = "美国留学成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).USStudyCount, 2), ItemName = "新加坡留学成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).USStudyCount, 2), FirstYear = Math.Round(lastSGStudyCount, 2),
YearRate = Math.Round(CUSStudyCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curSGStudyCount, 2),
YearRate = Math.Round(CSGStudyCount, 2),
});
decimal CSGStudyCount = 0; var lastAXStudyCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.AXStudyCount);
if (lastModel.SGStudyCount > 0) var curAXStudyCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.AXStudyCount);
{ decimal CAXStudyCount = 0;
CSGStudyCount = (curModel.SGStudyCount - lastModel.SGStudyCount) / lastModel.SGStudyCount * 100; if (lastAXStudyCount > 0)
} {
yearList.Add(new RateYearItem() CAXStudyCount = (curAXStudyCount - lastAXStudyCount) / lastAXStudyCount * 100;
{ }
ItemName = "新加坡留学成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(list.FirstOrDefault(qitem => qitem.YearStr == minYear).SGStudyCount, 2), ItemName = "澳新留学成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(list.FirstOrDefault(qitem => qitem.YearStr == maxYear).SGStudyCount, 2), FirstYear = Math.Round(lastAXStudyCount, 2),
YearRate = Math.Round(CSGStudyCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curAXStudyCount, 2),
YearRate = Math.Round(CAXStudyCount, 2),
});
decimal CAXStudyCount = 0; var lastOtherCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.OtherCount);
if (lastModel.AXStudyCount > 0) var curOtherCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.OtherCount);
{ decimal COtherCount = 0;
CAXStudyCount = (curModel.AXStudyCount - lastModel.AXStudyCount) / lastModel.AXStudyCount * 100; if (lastOtherCount > 0)
} {
yearList.Add(new RateYearItem() COtherCount = (curOtherCount - lastOtherCount) / lastOtherCount * 100;
{ }
ItemName = "澳新留学成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(list.FirstOrDefault(qitem => qitem.YearStr == minYear).AXStudyCount, 2), ItemName = "其他成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(list.FirstOrDefault(qitem => qitem.YearStr == maxYear).AXStudyCount, 2), FirstYear = Math.Round(lastOtherCount, 2),
YearRate = Math.Round(CAXStudyCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curOtherCount, 2),
YearRate = Math.Round(COtherCount, 2),
});
decimal COtherCount = 0; var lastClassACount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.ClassACount);
if (lastModel.OtherCount > 0) var curClassACount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.ClassACount);
{ decimal CClassACount = 0;
COtherCount = (curModel.OtherCount - lastModel.OtherCount) / lastModel.OtherCount * 100; if (lastClassACount > 0)
} {
yearList.Add(new RateYearItem() CClassACount = (curClassACount - lastClassACount) / lastClassACount * 100;
{ }
ItemName = "其他成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).OtherCount, 2), ItemName = "A类客户成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).OtherCount, 2), FirstYear = Math.Round(lastClassACount, 2),
YearRate = Math.Round(COtherCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curClassACount, 2),
YearRate = Math.Round(CClassACount, 2),
});
decimal CClassACount = 0; var lastClassBCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.ClassBCount);
if (lastModel.ClassACount > 0) var curClassBCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.ClassBCount);
{ decimal CClassBCount = 0;
CClassACount = (curModel.ClassACount - lastModel.ClassACount) / lastModel.ClassACount * 100; if (lastClassBCount > 0)
} {
yearList.Add(new RateYearItem() CClassBCount = (curClassBCount - lastClassBCount) / lastClassBCount * 100;
{ }
ItemName = "A类客户成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).ClassACount, 2), ItemName = "B类客户成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).ClassACount, 2), FirstYear = Math.Round(lastClassBCount, 2),
YearRate = Math.Round(CClassACount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curClassBCount, 2),
YearRate = Math.Round(CClassBCount, 2),
});
decimal CClassBCount = 0; var lastClassCCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.ClassCCount);
if (lastModel.ClassBCount > 0) var curClassCCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.ClassCCount);
{ decimal CClassCCount = 0;
CClassBCount = (curModel.ClassBCount - lastModel.ClassBCount) / lastModel.ClassBCount * 100; if (lastClassCCount > 0)
} {
yearList.Add(new RateYearItem() CClassCCount = (curClassCCount - lastClassCCount) / lastClassCCount * 100;
{ }
ItemName = "B类客户成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).ClassBCount, 2), ItemName = "C类客户成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).ClassBCount, 2), FirstYear = Math.Round(lastClassCCount, 2),
YearRate = Math.Round(CClassBCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curClassCCount, 2),
YearRate = Math.Round(CClassCCount, 2),
});
decimal CClassCCount = 0; var lastClassDCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.ClassDCount);
if (lastModel.ClassCCount > 0) var curClassDCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.ClassDCount);
{ decimal CClassDCount = 0;
CClassCCount = (curModel.ClassCCount - lastModel.ClassCCount) / lastModel.ClassCCount * 100; if (lastClassDCount > 0)
} {
yearList.Add(new RateYearItem() CClassDCount = (curClassDCount - lastClassDCount) / lastClassDCount * 100;
{ }
ItemName = "C类客户成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).ClassCCount, 2), ItemName = "D类客户成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).ClassCCount, 2), FirstYear = Math.Round(lastClassDCount, 2),
YearRate = Math.Round(CClassCCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curClassDCount, 2),
YearRate = Math.Round(CClassDCount, 2),
});
decimal CClassDCount = 0; var lastCustomerCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.CustomerCount);
if (lastModel.ClassDCount > 0) var curCustomerCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.CustomerCount);
{ decimal CCustomerCount = 0;
CClassDCount = (curModel.ClassDCount - lastModel.ClassDCount) / lastModel.ClassDCount * 100; if (lastCustomerCount > 0)
} {
yearList.Add(new RateYearItem() CCustomerCount = (curCustomerCount - lastCustomerCount) / lastCustomerCount * 100;
{ }
ItemName = "D类客户成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).ClassDCount, 2), ItemName = "同行介绍成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).ClassDCount, 2), FirstYear = Math.Round(lastCustomerCount, 2),
YearRate = Math.Round(CClassDCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curCustomerCount, 2),
YearRate = Math.Round(CCustomerCount, 2),
});
decimal CCustomerCount = 0; var lastB2CCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.B2CCount);
if (lastModel.CustomerCount > 0) var curB2CCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.B2CCount);
{ decimal CB2CCount = 0;
CCustomerCount = (curModel.CustomerCount - lastModel.CustomerCount) / lastModel.CustomerCount * 100; if (lastB2CCount > 0)
} {
yearList.Add(new RateYearItem() CB2CCount = (curB2CCount - lastB2CCount) / lastB2CCount * 100;
{ }
ItemName = "同行介绍成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).CustomerCount, 2), ItemName = "直客成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).CustomerCount, 2), FirstYear = Math.Round(lastB2CCount, 2),
YearRate = Math.Round(CCustomerCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curB2CCount, 2),
YearRate = Math.Round(CB2CCount, 2),
});
decimal CB2CCount = 0; var lastTransCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.TransCount);
if (lastModel.B2CCount > 0) var curTransCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.TransCount);
{ decimal CTransCount = 0;
CB2CCount = (curModel.B2CCount - lastModel.B2CCount) / lastModel.B2CCount * 100; if (lastTransCount > 0)
} {
yearList.Add(new RateYearItem() CTransCount = (curTransCount - lastTransCount) / lastTransCount * 100;
{ }
ItemName = "直客成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).B2CCount, 2), ItemName = "学员转介绍成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).B2CCount, 2), FirstYear = Math.Round(lastTransCount, 2),
YearRate = Math.Round(CB2CCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curTransCount, 2),
YearRate = Math.Round(CTransCount, 2),
});
decimal CTransCount = 0; var lastInnerCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.InnerCount);
if (lastModel.TransCount > 0) var curInnerCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.InnerCount);
{ decimal CInnerCount = 0;
CTransCount = (curModel.TransCount - lastModel.TransCount) / lastModel.TransCount * 100; if (lastInnerCount > 0)
} {
yearList.Add(new RateYearItem() CInnerCount = (curInnerCount - lastInnerCount) / lastInnerCount * 100;
{ }
ItemName = "学员转介绍成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).TransCount, 2), ItemName = "内部介绍成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).TransCount, 2), FirstYear = Math.Round(lastInnerCount, 2),
YearRate = Math.Round(CTransCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curInnerCount, 2),
YearRate = Math.Round(CInnerCount, 2),
});
decimal CInnerCount = 0; var lastInvalidCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.InvalidCount);
if (lastModel.InnerCount > 0) var curInvalidCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.InvalidCount);
{ decimal CInvalidCount = 0;
CInnerCount = (curModel.InnerCount - lastModel.InnerCount) / lastModel.InnerCount * 100; if (lastInvalidCount > 0)
} {
yearList.Add(new RateYearItem() CInvalidCount = (curInvalidCount - lastInvalidCount) / lastInvalidCount * 100;
{ }
ItemName = "内部介绍成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).InnerCount, 2), ItemName = "无效成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).InnerCount, 2), FirstYear = Math.Round(lastInvalidCount, 2),
YearRate = Math.Round(CInnerCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curInvalidCount, 2),
YearRate = Math.Round(CInvalidCount, 2),
});
decimal CInvalidCount = 0; var lastSuspectedCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.SuspectedCount);
if (lastModel.InvalidCount > 0) var curSuspectedCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.SuspectedCount);
{ decimal CSuspectedCount = 0;
CInvalidCount = (curModel.InvalidCount - lastModel.InvalidCount) / lastModel.InvalidCount * 100; if (lastSuspectedCount > 0)
} {
yearList.Add(new RateYearItem() CSuspectedCount = (curSuspectedCount - lastSuspectedCount) / lastSuspectedCount * 100;
{ }
ItemName = "无效成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).InvalidCount, 2), ItemName = "疑似成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).InvalidCount, 2), FirstYear = Math.Round(lastSuspectedCount, 2),
YearRate = Math.Round(CInvalidCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curSuspectedCount, 2),
YearRate = Math.Round(CSuspectedCount, 2),
});
decimal CSuspectedCount = 0; var lastIntentionCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.IntentionCount);
if (lastModel.SuspectedCount > 0) var curIntentionCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.IntentionCount);
{ decimal CIntentionCount = 0;
CSuspectedCount = (curModel.SuspectedCount - lastModel.SuspectedCount) / lastModel.SuspectedCount * 100; if (lastIntentionCount > 0)
} {
yearList.Add(new RateYearItem() CIntentionCount = (curIntentionCount - lastIntentionCount) / lastIntentionCount * 100;
{ }
ItemName = "疑似成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).SuspectedCount, 2), ItemName = "意向成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).SuspectedCount, 2), FirstYear = Math.Round(lastIntentionCount, 2),
YearRate = Math.Round(CSuspectedCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curIntentionCount, 2),
YearRate = Math.Round(CIntentionCount, 2),
});
decimal CIntentionCount = 0; var lastInvitationCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.InvitationCount);
if (lastModel.IntentionCount > 0) var curInvitationCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.InvitationCount);
{ decimal CInvitationCount = 0;
CIntentionCount = (curModel.IntentionCount - lastModel.IntentionCount) / lastModel.IntentionCount * 100; if (lastInvitationCount > 0)
} {
yearList.Add(new RateYearItem() CInvitationCount = (curInvitationCount - lastInvitationCount) / lastInvitationCount * 100;
{ }
ItemName = "意向成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).IntentionCount, 2), ItemName = "近期课邀约成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).IntentionCount, 2), FirstYear = Math.Round(lastInvitationCount, 2),
YearRate = Math.Round(CIntentionCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curInvitationCount, 2),
YearRate = Math.Round(CInvitationCount, 2),
});
decimal CInvitationCount = 0; var lastNegotiationCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.NegotiationCount);
if (lastModel.InvitationCount > 0) var curNegotiationCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.NegotiationCount);
{ decimal CNegotiationCount = 0;
CInvitationCount = (curModel.InvitationCount - lastModel.InvitationCount) / lastModel.InvitationCount * 100; if (lastNegotiationCount > 0)
} {
yearList.Add(new RateYearItem() CNegotiationCount = (curNegotiationCount - lastNegotiationCount) / lastNegotiationCount * 100;
{ }
ItemName = "近期课邀约成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).InvitationCount, 2), ItemName = "谈判成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).InvitationCount, 2), FirstYear = Math.Round(lastNegotiationCount, 2),
YearRate = Math.Round(CInvitationCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curNegotiationCount, 2),
YearRate = Math.Round(CNegotiationCount, 2),
});
decimal CNegotiationCount = 0; var lastContractCount = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.ContractCount);
if (lastModel.NegotiationCount > 0) var curContractCount = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.ContractCount);
{ decimal CContractCount = 0;
CNegotiationCount = (curModel.NegotiationCount - lastModel.NegotiationCount) / lastModel.NegotiationCount * 100; if (lastContractCount > 0)
} {
yearList.Add(new RateYearItem() CContractCount = (curContractCount - lastContractCount) / lastContractCount * 100;
{ }
ItemName = "谈判成长率", yearList.Add(new RateYearItem()
FirstYearStr = minYear, {
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).NegotiationCount, 2), ItemName = "签约.成交.续费成长率",
SecondYearStr = maxYear, FirstYearStr = minYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).NegotiationCount, 2), FirstYear = Math.Round(lastContractCount, 2),
YearRate = Math.Round(CNegotiationCount, 2), SecondYearStr = maxYear,
}); SecondYear = Math.Round(curContractCount, 2),
YearRate = Math.Round(CContractCount, 2),
});
decimal CContractCount = 0; var lastOrderMoney = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.OrderMoney);
if (lastModel.ContractCount > 0) var curOrderMoney = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.OrderMoney);
{ decimal COrderMoney = 0;
CContractCount = (curModel.ContractCount - lastModel.ContractCount) / lastModel.ContractCount * 100; if (lastOrderMoney > 0)
} {
yearList.Add(new RateYearItem() COrderMoney = (curOrderMoney - lastOrderMoney) / lastOrderMoney * 100;
{
ItemName = "签约.成交.续费成长率",
FirstYearStr = minYear,
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).ContractCount, 2),
SecondYearStr = maxYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).ContractCount, 2),
YearRate = Math.Round(CContractCount, 2),
});
decimal COrderMoney = 0;
if (lastModel.OrderMoney > 0)
{
COrderMoney = (curModel.OrderMoney - lastModel.OrderMoney) / lastModel.OrderMoney * 100;
}
yearList.Add(new RateYearItem()
{
ItemName = "语培签约金额成长率",
FirstYearStr = minYear,
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).OrderMoney, 2),
SecondYearStr = maxYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).OrderMoney, 2),
YearRate = Math.Round(COrderMoney, 2),
});
decimal CStudyOrderMoney = 0;
if (lastModel.StudyOrderMoney > 0)
{
CStudyOrderMoney = (curModel.StudyOrderMoney - lastModel.StudyOrderMoney) / lastModel.StudyOrderMoney * 100;
}
yearList.Add(new RateYearItem()
{
ItemName = "留学签约金额成长率",
FirstYearStr = minYear,
FirstYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == minYear).StudyOrderMoney, 2),
SecondYearStr = maxYear,
SecondYear = Math.Round(rateList.FirstOrDefault(qitem => qitem.YearStr == maxYear).StudyOrderMoney, 2),
YearRate = Math.Round(CStudyOrderMoney, 2),
});
} }
yearList.Add(new RateYearItem()
{
ItemName = "语培签约金额成长率",
FirstYearStr = minYear,
FirstYear = Math.Round(lastOrderMoney, 2),
SecondYearStr = maxYear,
SecondYear = Math.Round(curOrderMoney, 2),
YearRate = Math.Round(COrderMoney, 2),
});
var lastStudyOrderMoney = result.Where(qitem => qitem.YearStr == minYear).Average(qitem => qitem.StudyOrderMoney);
var curStudyOrderMoney = result.Where(qitem => qitem.YearStr == maxYear).Average(qitem => qitem.StudyOrderMoney);
decimal CStudyOrderMoney = 0;
if (lastStudyOrderMoney > 0)
{
CStudyOrderMoney = (curStudyOrderMoney - lastStudyOrderMoney) / lastStudyOrderMoney * 100;
}
yearList.Add(new RateYearItem()
{
ItemName = "留学签约金额成长率",
FirstYearStr = minYear,
FirstYear = Math.Round(lastStudyOrderMoney, 2),
SecondYearStr = maxYear,
SecondYear = Math.Round(curStudyOrderMoney, 2),
YearRate = Math.Round(CStudyOrderMoney, 2),
});
return yearList; return yearList;
} }
......
...@@ -56,11 +56,11 @@ WHERE 1=1 ...@@ -56,11 +56,11 @@ WHERE 1=1
/// </summary> /// </summary>
/// <param name="query"></param> /// <param name="query"></param>
/// <returns></returns> /// <returns></returns>
public List<RB_Student_Static_Extend> GetStudentStaticMonthListRepository(RB_Student_Static_Extend query) public List<RB_Student_Static_Extend> GetStudentStaticMonthListRepository(RB_Student_Static_Extend query,bool isYear=false)
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT CONCAT(DATE_FORMAT(A.Date, '%Y-%m'),'-01') AS Date,SUM(A.PushCount) AS PushCount,SUM(A.NewCount) AS NewCount,SUM(A.CommunicationCount) AS CommunicationCount SELECT CONCAT(DATE_FORMAT(A.Date, '%Y-%m'),'-01') AS Date,A.YearStr,A.MonthStr,SUM(A.PushCount) AS PushCount,SUM(A.NewCount) AS NewCount,SUM(A.CommunicationCount) AS CommunicationCount
,SUM(A.TrialLessonCount) AS TrialLessonCount,SUM(A.NotContacted) AS NotContacted,SUM(A.JPCount) AS JPCount,SUM(A.KRCount) AS KRCount,SUM(A.FRCount) AS FRCount ,SUM(A.TrialLessonCount) AS TrialLessonCount,SUM(A.NotContacted) AS NotContacted,SUM(A.JPCount) AS JPCount,SUM(A.KRCount) AS KRCount,SUM(A.FRCount) AS FRCount
,SUM(A.JPStudyCount) AS JPStudyCount,SUM(A.KRStudyCount) AS KRStudyCount,SUM(A.YGAStudyCount) AS YGAStudyCount,SUM(A.USStudyCount) AS USStudyCount ,SUM(A.JPStudyCount) AS JPStudyCount,SUM(A.KRStudyCount) AS KRStudyCount,SUM(A.YGAStudyCount) AS YGAStudyCount,SUM(A.USStudyCount) AS USStudyCount
,SUM(A.SGStudyCount) AS SGStudyCount,SUM(A.AXStudyCount) AS AXStudyCount,SUM(A.OtherCount) AS OtherCount,SUM(A.ClassACount) AS ClassACount,SUM(A.ClassBCount) AS ClassBCount ,SUM(A.SGStudyCount) AS SGStudyCount,SUM(A.AXStudyCount) AS AXStudyCount,SUM(A.OtherCount) AS OtherCount,SUM(A.ClassACount) AS ClassACount,SUM(A.ClassBCount) AS ClassBCount
...@@ -79,11 +79,18 @@ WHERE 1=1 AND A.Date<>'0001-01-01 00:00:00' ...@@ -79,11 +79,18 @@ WHERE 1=1 AND A.Date<>'0001-01-01 00:00:00'
} }
if (query.YearStr > 0) if (query.YearStr > 0)
{ {
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Static_Extend.YearStr), query.YearStr); if (isYear)
{
builder.AppendFormat(" AND A.{0}<={1} ", nameof(RB_Student_Static_Extend.YearStr), query.YearStr);
}
else
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Static_Extend.YearStr), query.YearStr);
}
} }
} }
builder.AppendFormat(" GROUP BY DATE_FORMAT(A.Date, '%Y-%m') "); builder.AppendFormat(" GROUP BY DATE_FORMAT(A.Date, '%Y-%m') ");
builder.AppendFormat(" ORDER BY DATE_FORMAT(A.Date, '%Y-%m') ASC ", nameof(RB_Student_Static_Extend.Id)); builder.AppendFormat(" ORDER BY DATE_FORMAT(A.Date, '%Y-%m') ASC ");
return Get<RB_Student_Static_Extend>(builder.ToString()).ToList(); return Get<RB_Student_Static_Extend>(builder.ToString()).ToList();
} }
......
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