Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
Education
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄奎
Education
Commits
23952402
Commit
23952402
authored
Mar 04, 2022
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
bc78aeb2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1131 additions
and
2 deletions
+1131
-2
StudentStatModule.cs
Edu.Module.User/StudentStatModule.cs
+1098
-1
StudentStatController.cs
Edu.WebApi/Controllers/User/StudentStatController.cs
+33
-1
No files found.
Edu.Module.User/StudentStatModule.cs
View file @
23952402
...
...
@@ -4067,7 +4067,7 @@ namespace Edu.Module.User
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"
推送
人数成长率"
,
ItemName
=
"
进单
人数成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
PushCount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
PushCount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
PushCount
,
2
),
...
...
@@ -4083,6 +4083,377 @@ namespace Edu.Module.User
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
PushCount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"语培需求成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
TrainCount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
TrainCount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
TrainCount
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
TrainCount
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
TrainCount
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
TrainCount
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
TrainCount
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
TrainCount
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
TrainCount
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
TrainCount
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
TrainCount
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
TrainCount
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
TrainCount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"留学需求成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
StudyCount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
StudyCount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
StudyCount
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
StudyCount
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
StudyCount
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
StudyCount
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
StudyCount
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
StudyCount
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
StudyCount
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
StudyCount
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
StudyCount
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
StudyCount
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
StudyCount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"美团点评成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
MeiTuanCount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
MeiTuanCount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
MeiTuanCount
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
MeiTuanCount
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
MeiTuanCount
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
MeiTuanCount
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
MeiTuanCount
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
MeiTuanCount
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
MeiTuanCount
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
MeiTuanCount
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
MeiTuanCount
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
MeiTuanCount
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
MeiTuanCount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"教育同行(签约)成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
EduCustomerSign
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
EduCustomerSign
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
EduCustomerSign
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
EduCustomerSign
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
EduCustomerSign
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
EduCustomerSign
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
EduCustomerSign
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
EduCustomerSign
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
EduCustomerSign
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
EduCustomerSign
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
EduCustomerSign
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
EduCustomerSign
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
EduCustomerSign
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"教育同行(未签约)成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
EduCustomerNotSign
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
EduCustomerNotSign
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
EduCustomerNotSign
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
EduCustomerNotSign
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
EduCustomerNotSign
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
EduCustomerNotSign
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
EduCustomerNotSign
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
EduCustomerNotSign
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
EduCustomerNotSign
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
EduCustomerNotSign
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
EduCustomerNotSign
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
EduCustomerNotSign
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
EduCustomerNotSign
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"过路客(直客)成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
PassBy
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
PassBy
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
PassBy
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
PassBy
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
PassBy
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
PassBy
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
PassBy
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
PassBy
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
PassBy
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
PassBy
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
PassBy
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
PassBy
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
PassBy
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"朋友圈成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
WeChatFriend
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
WeChatFriend
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
WeChatFriend
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
WeChatFriend
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
WeChatFriend
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
WeChatFriend
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
WeChatFriend
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
WeChatFriend
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
WeChatFriend
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
WeChatFriend
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
WeChatFriend
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
WeChatFriend
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
WeChatFriend
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"学员转介绍成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
TransCount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
TransCount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
TransCount
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
TransCount
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
TransCount
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
TransCount
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
TransCount
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
TransCount
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
TransCount
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
TransCount
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
TransCount
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
TransCount
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
TransCount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"校园推广成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
SchoolPromote
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
SchoolPromote
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
SchoolPromote
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
SchoolPromote
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
SchoolPromote
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
SchoolPromote
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
SchoolPromote
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
SchoolPromote
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
SchoolPromote
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
SchoolPromote
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
SchoolPromote
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
SchoolPromote
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
SchoolPromote
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"校园代理成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
SchoolAgent
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
SchoolAgent
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
SchoolAgent
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
SchoolAgent
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
SchoolAgent
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
SchoolAgent
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
SchoolAgent
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
SchoolAgent
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
SchoolAgent
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
SchoolAgent
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
SchoolAgent
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
SchoolAgent
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
SchoolAgent
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"线下活动成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
OfflineActivity
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
OfflineActivity
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
OfflineActivity
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
OfflineActivity
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
OfflineActivity
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
OfflineActivity
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
OfflineActivity
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
OfflineActivity
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
OfflineActivity
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
OfflineActivity
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
OfflineActivity
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
OfflineActivity
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
OfflineActivity
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"公众号成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
OfficialAccount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
OfficialAccount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
OfficialAccount
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
OfficialAccount
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
OfficialAccount
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
OfficialAccount
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
OfficialAccount
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
OfficialAccount
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
OfficialAccount
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
OfficialAccount
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
OfficialAccount
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
OfficialAccount
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
OfficialAccount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"教师推荐成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
TeacherRecommend
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
TeacherRecommend
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
TeacherRecommend
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
TeacherRecommend
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
TeacherRecommend
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
TeacherRecommend
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
TeacherRecommend
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
TeacherRecommend
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
TeacherRecommend
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
TeacherRecommend
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
TeacherRecommend
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
TeacherRecommend
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
TeacherRecommend
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"字节跳动成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
ByteDance
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
ByteDance
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
ByteDance
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
ByteDance
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
ByteDance
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
ByteDance
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
ByteDance
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
ByteDance
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
ByteDance
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
ByteDance
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
ByteDance
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
ByteDance
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
ByteDance
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"第三方平台成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
ThirdPartyPlatform
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
ThirdPartyPlatform
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
ThirdPartyPlatform
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
ThirdPartyPlatform
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
ThirdPartyPlatform
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
ThirdPartyPlatform
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
ThirdPartyPlatform
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
ThirdPartyPlatform
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
ThirdPartyPlatform
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
ThirdPartyPlatform
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
ThirdPartyPlatform
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
ThirdPartyPlatform
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
ThirdPartyPlatform
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"其他成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
Other
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
Other
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
Other
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
Other
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
Other
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
Other
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
Other
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
Other
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
Other
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
Other
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
Other
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
Other
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
Other
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"A类客户成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
ClassACount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
ClassACount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
ClassACount
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
ClassACount
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
ClassACount
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
ClassACount
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
ClassACount
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
ClassACount
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
ClassACount
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
ClassACount
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
ClassACount
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
ClassACount
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
ClassACount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"B类客户成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
ClassBCount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
ClassBCount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
ClassBCount
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
ClassBCount
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
ClassBCount
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
ClassBCount
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
ClassBCount
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
ClassBCount
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
ClassBCount
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
ClassBCount
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
ClassBCount
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
ClassBCount
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
ClassBCount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"C类客户成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
ClassCCount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
ClassCCount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
ClassCCount
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
ClassCCount
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
ClassCCount
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
ClassCCount
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
ClassCCount
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
ClassCCount
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
ClassCCount
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
ClassCCount
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
ClassCCount
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
ClassCCount
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
ClassCCount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"D类客户成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
ClassDCount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
ClassDCount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
ClassDCount
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
ClassDCount
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
ClassDCount
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
ClassDCount
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
ClassDCount
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
ClassDCount
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
ClassDCount
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
ClassDCount
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
ClassDCount
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
ClassDCount
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
ClassDCount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"无效成长率"
,
JanuaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
1
).
InvalidCount
,
2
),
FebruaryRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
2
).
InvalidCount
,
2
),
MarchRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
3
).
InvalidCount
,
2
),
AprilRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
4
).
InvalidCount
,
2
),
MayRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
5
).
InvalidCount
,
2
),
JuneRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
6
).
InvalidCount
,
2
),
JulyRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
7
).
InvalidCount
,
2
),
AugustRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
8
).
InvalidCount
,
2
),
SeptemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
9
).
InvalidCount
,
2
),
OctoberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
10
).
InvalidCount
,
2
),
NovemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
11
).
InvalidCount
,
2
),
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
InvalidCount
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
InvalidCount
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"签约.成交.续费成长率"
,
...
...
@@ -4118,6 +4489,7 @@ namespace Edu.Module.User
DecemberRate
=
Math
.
Round
(
result
.
FirstOrDefault
(
qitem
=>
qitem
.
MonthStr
==
12
).
OrderMoney
,
2
),
AvgRate
=
Math
.
Round
(
result
.
Average
(
qitem
=>
qitem
.
OrderMoney
),
2
),
});
monthList
.
Add
(
new
RateMonthItem
()
{
ItemName
=
"留学签约金额成长率"
,
...
...
@@ -4137,6 +4509,731 @@ namespace Edu.Module.User
});
return
monthList
;
}
/// <summary>
/// 市场部年份数据统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public
List
<
RateYearItem
>
GetStudentMarketListYearModule
(
RB_Student_Market_Extend
query
)
{
List
<
RateYearItem
>
yearList
=
new
List
<
RateYearItem
>();
List
<
RB_Student_Market_Extend
>
rateList
=
new
List
<
RB_Student_Market_Extend
>();
var
list
=
student_MarketRepository
.
GetStudentMarketYearListRepository
(
query
);
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
int
minYear
=
list
.
Min
(
qitem
=>
qitem
.
YearStr
);
int
maxYear
=
list
.
Max
(
qitem
=>
qitem
.
YearStr
);
var
totalYear
=
maxYear
-
minYear
;
for
(
var
i
=
0
;
i
<=
totalYear
;
i
++)
{
decimal
PushCount
=
0
;
var
firstModel
=
new
RB_Student_Market_Extend
();
if
(
i
>
0
)
{
firstModel
=
i
<
list
.
Count
?
list
[
i
-
1
]
:
new
RB_Student_Market_Extend
();
}
var
item
=
i
<
list
.
Count
?
list
[
i
]
:
new
RB_Student_Market_Extend
();
if
(
firstModel
.
PushCount
>
0
&&
i
>
0
)
{
PushCount
=
(
item
.
PushCount
-
firstModel
.
PushCount
)
/
firstModel
.
PushCount
*
100
;
}
decimal
TrainCount
=
0
;
if
(
firstModel
.
TrainCount
>
0
&&
i
>
0
)
{
TrainCount
=
(
item
.
TrainCount
-
firstModel
.
TrainCount
)
/
firstModel
.
TrainCount
*
100
;
}
decimal
StudyCount
=
0
;
if
(
firstModel
.
StudyCount
>
0
&&
i
>
0
)
{
StudyCount
=
(
item
.
StudyCount
-
firstModel
.
StudyCount
)
/
firstModel
.
StudyCount
*
100
;
}
decimal
MeiTuanCount
=
0
;
if
(
firstModel
.
MeiTuanCount
>
0
&&
i
>
0
)
{
MeiTuanCount
=
(
item
.
MeiTuanCount
-
firstModel
.
MeiTuanCount
)
/
firstModel
.
MeiTuanCount
*
100
;
}
decimal
EduCustomerSign
=
0
;
if
(
firstModel
.
EduCustomerSign
>
0
&&
i
>
0
)
{
EduCustomerSign
=
(
item
.
EduCustomerSign
-
firstModel
.
EduCustomerSign
)
/
firstModel
.
EduCustomerSign
*
100
;
}
decimal
EduCustomerNotSign
=
0
;
if
(
firstModel
.
EduCustomerNotSign
>
0
&&
i
>
0
)
{
EduCustomerNotSign
=
(
item
.
EduCustomerNotSign
-
firstModel
.
EduCustomerNotSign
)
/
firstModel
.
EduCustomerNotSign
*
100
;
}
decimal
PassBy
=
0
;
if
(
firstModel
.
PassBy
>
0
&&
i
>
0
)
{
PassBy
=
(
item
.
PassBy
-
firstModel
.
PassBy
)
/
firstModel
.
PassBy
*
100
;
}
decimal
WeChatFriend
=
0
;
if
(
firstModel
.
WeChatFriend
>
0
&&
i
>
0
)
{
WeChatFriend
=
(
item
.
WeChatFriend
-
firstModel
.
WeChatFriend
)
/
firstModel
.
WeChatFriend
*
100
;
}
decimal
TransCount
=
0
;
if
(
firstModel
.
TransCount
>
0
&&
i
>
0
)
{
TransCount
=
(
item
.
TransCount
-
firstModel
.
TransCount
)
/
firstModel
.
TransCount
*
100
;
}
decimal
SchoolPromote
=
0
;
if
(
item
.
SchoolPromote
>
0
&&
i
>
0
)
{
SchoolPromote
=
(
item
.
SchoolPromote
-
firstModel
.
SchoolPromote
)
/
item
.
SchoolPromote
*
100
;
}
decimal
SchoolAgent
=
0
;
if
(
firstModel
.
SchoolAgent
>
0
&&
i
>
0
)
{
SchoolAgent
=
(
item
.
SchoolAgent
-
firstModel
.
SchoolAgent
)
/
firstModel
.
SchoolAgent
*
100
;
}
decimal
OfflineActivity
=
0
;
if
(
firstModel
.
OfflineActivity
>
0
&&
i
>
0
)
{
OfflineActivity
=
(
item
.
OfflineActivity
-
firstModel
.
OfflineActivity
)
/
firstModel
.
OfflineActivity
*
100
;
}
decimal
OfficialAccount
=
0
;
if
(
firstModel
.
OfficialAccount
>
0
&&
i
>
0
)
{
OfficialAccount
=
(
item
.
OfficialAccount
-
firstModel
.
OfficialAccount
)
/
firstModel
.
OfficialAccount
*
100
;
}
decimal
TeacherRecommend
=
0
;
if
(
firstModel
.
TeacherRecommend
>
0
&&
i
>
0
)
{
TeacherRecommend
=
(
item
.
TeacherRecommend
-
firstModel
.
TeacherRecommend
)
/
firstModel
.
TeacherRecommend
*
100
;
}
decimal
ByteDance
=
0
;
if
(
firstModel
.
ByteDance
>
0
&&
i
>
0
)
{
ByteDance
=
(
item
.
ByteDance
-
firstModel
.
ByteDance
)
/
firstModel
.
ByteDance
*
100
;
}
decimal
ThirdPartyPlatform
=
0
;
if
(
firstModel
.
ThirdPartyPlatform
>
0
&&
i
>
0
)
{
ThirdPartyPlatform
=
(
item
.
ThirdPartyPlatform
-
firstModel
.
ThirdPartyPlatform
)
/
firstModel
.
ThirdPartyPlatform
*
100
;
}
decimal
Other
=
0
;
if
(
firstModel
.
Other
>
0
&&
i
>
0
)
{
Other
=
(
item
.
Other
-
firstModel
.
Other
)
/
firstModel
.
Other
*
100
;
}
decimal
ClassACount
=
0
;
if
(
firstModel
.
ClassACount
>
0
&&
i
>
0
)
{
ClassACount
=
(
item
.
ClassACount
-
firstModel
.
ClassACount
)
/
firstModel
.
ClassACount
*
100
;
}
decimal
ClassBCount
=
0
;
if
(
firstModel
.
ClassBCount
>
0
&&
i
>
0
)
{
ClassBCount
=
(
item
.
ClassBCount
-
firstModel
.
ClassBCount
)
/
firstModel
.
ClassBCount
*
100
;
}
decimal
ClassCCount
=
0
;
if
(
firstModel
.
ClassCCount
>
0
)
{
ClassCCount
=
(
item
.
ClassCCount
-
firstModel
.
ClassCCount
)
/
firstModel
.
ClassCCount
*
100
;
}
decimal
ClassDCount
=
0
;
if
(
firstModel
.
ClassDCount
>
0
&&
i
>
0
)
{
ClassDCount
=
(
item
.
ClassDCount
-
firstModel
.
ClassDCount
)
/
firstModel
.
ClassDCount
*
100
;
}
decimal
InvalidCount
=
0
;
if
(
firstModel
.
InvalidCount
>
0
&&
i
>
0
)
{
InvalidCount
=
(
item
.
InvalidCount
-
firstModel
.
InvalidCount
)
/
firstModel
.
InvalidCount
*
100
;
}
decimal
ContractCount
=
0
;
if
(
firstModel
.
ContractCount
>
0
&&
i
>
0
)
{
ContractCount
=
(
item
.
ContractCount
-
firstModel
.
ContractCount
)
/
firstModel
.
ContractCount
*
100
;
}
decimal
OrderMoney
=
0
;
if
(
firstModel
.
OrderMoney
>
0
&&
i
>
0
)
{
OrderMoney
=
(
item
.
OrderMoney
-
firstModel
.
OrderMoney
)
/
firstModel
.
OrderMoney
*
100
;
}
decimal
StudyOrderMoney
=
0
;
if
(
firstModel
.
StudyOrderMoney
>
0
&&
i
>
0
)
{
StudyOrderMoney
=
(
item
.
StudyOrderMoney
-
firstModel
.
StudyOrderMoney
)
/
firstModel
.
StudyOrderMoney
*
100
;
}
rateList
.
Add
(
new
RB_Student_Market_Extend
()
{
YearStr
=
minYear
+
i
,
PushCount
=
PushCount
,
TrainCount
=
TrainCount
,
StudyCount
=
StudyCount
,
MeiTuanCount
=
MeiTuanCount
,
EduCustomerSign
=
EduCustomerSign
,
EduCustomerNotSign
=
EduCustomerNotSign
,
PassBy
=
PassBy
,
WeChatFriend
=
WeChatFriend
,
TransCount
=
TransCount
,
SchoolPromote
=
SchoolPromote
,
SchoolAgent
=
SchoolAgent
,
OfflineActivity
=
OfflineActivity
,
OfficialAccount
=
OfficialAccount
,
TeacherRecommend
=
TeacherRecommend
,
ByteDance
=
ByteDance
,
ThirdPartyPlatform
=
ThirdPartyPlatform
,
Other
=
Other
,
ClassACount
=
ClassACount
,
ClassBCount
=
ClassBCount
,
ClassCCount
=
ClassCCount
,
ClassDCount
=
ClassDCount
,
InvalidCount
=
InvalidCount
,
ContractCount
=
ContractCount
,
OrderMoney
=
OrderMoney
,
StudyOrderMoney
=
StudyOrderMoney
,
});
}
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"进单人数"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
PushCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
PushCount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
PushCount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"语培需求"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
TrainCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
TrainCount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
TrainCount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"留学需求"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
StudyCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
StudyCount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
StudyCount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"美团点评"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
MeiTuanCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
MeiTuanCount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
MeiTuanCount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"教育同行(签约)"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
EduCustomerSign
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
EduCustomerSign
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
EduCustomerSign
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"教育同行(未签约)"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
EduCustomerNotSign
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
EduCustomerNotSign
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
EduCustomerNotSign
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"过路客(直客)"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
PassBy
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
PassBy
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
PassBy
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"朋友圈"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
WeChatFriend
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
WeChatFriend
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
WeChatFriend
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"学员转介绍"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
TransCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
TransCount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
TransCount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"校园推广"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
SchoolPromote
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
SchoolPromote
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
SchoolPromote
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"校园代理"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
SchoolAgent
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
SchoolAgent
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
SchoolAgent
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"线下活动"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
OfflineActivity
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
OfflineActivity
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
OfflineActivity
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"公众号"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
OfficialAccount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
OfficialAccount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
OfficialAccount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"教师推荐"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
TeacherRecommend
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
TeacherRecommend
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
TeacherRecommend
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"字节跳动"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
ByteDance
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ByteDance
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ByteDance
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"第三方平台"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
ThirdPartyPlatform
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ThirdPartyPlatform
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ThirdPartyPlatform
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"其他"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
Other
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
Other
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
Other
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"A类客户"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
ClassACount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ClassACount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ClassACount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"B类客户"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
ClassBCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ClassBCount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ClassBCount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"C类客户"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
ClassCCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ClassCCount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ClassCCount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"D类客户"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
ClassDCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ClassDCount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ClassDCount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"无效"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
InvalidCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
InvalidCount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
InvalidCount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"签约.成交.续费"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
ContractCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ContractCount
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
ContractCount
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"语培签约金额"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
OrderMoney
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
OrderMoney
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
OrderMoney
,
2
),
});
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"留学签约金额"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
minYear
).
StudyOrderMoney
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
list
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
StudyOrderMoney
,
2
),
YearRate
=
Math
.
Round
(
rateList
.
FirstOrDefault
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
StudyOrderMoney
,
2
),
});
}
return
yearList
;
}
/// <summary>
/// 市场部年份数据统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public
List
<
RateYearItem
>
GetStudentMarketListYearRateModule
(
RB_Student_Market_Extend
query
)
{
List
<
RateYearItem
>
yearList
=
new
List
<
RateYearItem
>();
var
dataList
=
student_MarketRepository
.
GetStudentMarketMonthListRepository
(
query
,
isYear
:
true
);
if
(
dataList
!=
null
&&
dataList
.
Count
>
0
)
{
List
<
RB_Student_Market_Extend
>
result
=
new
List
<
RB_Student_Market_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
++)
{
var
list
=
dataList
.
Where
(
qitem
=>
qitem
.
YearStr
==
minYear
+
y
).
ToList
();
for
(
var
i
=
0
;
i
<
12
;
i
++)
{
decimal
PushCount
=
0
;
var
firstModel
=
new
RB_Student_Market_Extend
();
if
(
i
>
0
)
{
firstModel
=
i
<
list
.
Count
?
list
[
i
-
1
]
:
new
RB_Student_Market_Extend
();
}
var
item
=
i
<
list
.
Count
?
list
[
i
]
:
new
RB_Student_Market_Extend
();
if
(
firstModel
.
PushCount
>
0
&&
i
>
0
)
{
PushCount
=
(
item
.
PushCount
-
firstModel
.
PushCount
)
/
firstModel
.
PushCount
*
100
;
}
decimal
TrainCount
=
0
;
if
(
firstModel
.
TrainCount
>
0
&&
i
>
0
)
{
TrainCount
=
(
item
.
TrainCount
-
firstModel
.
TrainCount
)
/
firstModel
.
TrainCount
*
100
;
}
decimal
StudyCount
=
0
;
if
(
firstModel
.
StudyCount
>
0
&&
i
>
0
)
{
StudyCount
=
(
item
.
StudyCount
-
firstModel
.
StudyCount
)
/
firstModel
.
StudyCount
*
100
;
}
decimal
MeiTuanCount
=
0
;
if
(
firstModel
.
MeiTuanCount
>
0
&&
i
>
0
)
{
MeiTuanCount
=
(
item
.
MeiTuanCount
-
firstModel
.
MeiTuanCount
)
/
firstModel
.
MeiTuanCount
*
100
;
}
decimal
EduCustomerSign
=
0
;
if
(
firstModel
.
EduCustomerSign
>
0
&&
i
>
0
)
{
EduCustomerSign
=
(
item
.
EduCustomerSign
-
firstModel
.
EduCustomerSign
)
/
firstModel
.
EduCustomerSign
*
100
;
}
decimal
EduCustomerNotSign
=
0
;
if
(
firstModel
.
EduCustomerNotSign
>
0
&&
i
>
0
)
{
EduCustomerNotSign
=
(
item
.
EduCustomerNotSign
-
firstModel
.
EduCustomerNotSign
)
/
firstModel
.
EduCustomerNotSign
*
100
;
}
decimal
PassBy
=
0
;
if
(
firstModel
.
PassBy
>
0
&&
i
>
0
)
{
PassBy
=
(
item
.
PassBy
-
firstModel
.
PassBy
)
/
firstModel
.
PassBy
*
100
;
}
decimal
WeChatFriend
=
0
;
if
(
firstModel
.
WeChatFriend
>
0
&&
i
>
0
)
{
WeChatFriend
=
(
item
.
WeChatFriend
-
firstModel
.
WeChatFriend
)
/
firstModel
.
WeChatFriend
*
100
;
}
decimal
TransCount
=
0
;
if
(
firstModel
.
TransCount
>
0
&&
i
>
0
)
{
TransCount
=
(
item
.
TransCount
-
firstModel
.
TransCount
)
/
firstModel
.
TransCount
*
100
;
}
decimal
SchoolPromote
=
0
;
if
(
firstModel
.
SchoolPromote
>
0
&&
i
>
0
)
{
SchoolPromote
=
(
item
.
SchoolPromote
-
firstModel
.
SchoolPromote
)
/
firstModel
.
SchoolPromote
*
100
;
}
decimal
SchoolAgent
=
0
;
if
(
firstModel
.
SchoolAgent
>
0
&&
i
>
0
)
{
SchoolAgent
=
(
item
.
SchoolAgent
-
firstModel
.
SchoolAgent
)
/
firstModel
.
SchoolAgent
*
100
;
}
decimal
OfflineActivity
=
0
;
if
(
firstModel
.
OfflineActivity
>
0
&&
i
>
0
)
{
OfflineActivity
=
(
item
.
OfflineActivity
-
firstModel
.
OfflineActivity
)
/
firstModel
.
OfflineActivity
*
100
;
}
decimal
OfficialAccount
=
0
;
if
(
firstModel
.
OfficialAccount
>
0
&&
i
>
0
)
{
OfficialAccount
=
(
item
.
OfficialAccount
-
firstModel
.
OfficialAccount
)
/
firstModel
.
OfficialAccount
*
100
;
}
decimal
TeacherRecommend
=
0
;
if
(
firstModel
.
TeacherRecommend
>
0
&&
i
>
0
)
{
TeacherRecommend
=
(
item
.
TeacherRecommend
-
firstModel
.
TeacherRecommend
)
/
firstModel
.
TeacherRecommend
*
100
;
}
decimal
ByteDance
=
0
;
if
(
firstModel
.
ByteDance
>
0
&&
i
>
0
)
{
ByteDance
=
(
item
.
ByteDance
-
firstModel
.
ByteDance
)
/
firstModel
.
ByteDance
*
100
;
}
decimal
ThirdPartyPlatform
=
0
;
if
(
firstModel
.
ThirdPartyPlatform
>
0
&&
i
>
0
)
{
ThirdPartyPlatform
=
(
item
.
ThirdPartyPlatform
-
firstModel
.
ThirdPartyPlatform
)
/
firstModel
.
ThirdPartyPlatform
*
100
;
}
decimal
Other
=
0
;
if
(
firstModel
.
Other
>
0
&&
i
>
0
)
{
Other
=
(
item
.
Other
-
firstModel
.
Other
)
/
firstModel
.
Other
*
100
;
}
decimal
ClassACount
=
0
;
if
(
firstModel
.
ClassACount
>
0
&&
i
>
0
)
{
ClassACount
=
(
item
.
ClassACount
-
firstModel
.
ClassACount
)
/
firstModel
.
ClassACount
*
100
;
}
decimal
ClassBCount
=
0
;
if
(
firstModel
.
ClassBCount
>
0
&&
i
>
0
)
{
ClassBCount
=
(
item
.
ClassBCount
-
firstModel
.
ClassBCount
)
/
firstModel
.
ClassBCount
*
100
;
}
decimal
ClassCCount
=
0
;
if
(
firstModel
.
ClassCCount
>
0
)
{
ClassCCount
=
(
item
.
ClassCCount
-
firstModel
.
ClassCCount
)
/
firstModel
.
ClassCCount
*
100
;
}
decimal
ClassDCount
=
0
;
if
(
firstModel
.
ClassDCount
>
0
&&
i
>
0
)
{
ClassDCount
=
(
item
.
ClassDCount
-
firstModel
.
ClassDCount
)
/
firstModel
.
ClassDCount
*
100
;
}
decimal
InvalidCount
=
0
;
if
(
item
.
InvalidCount
>
0
&&
i
>
0
)
{
InvalidCount
=
(
item
.
InvalidCount
-
firstModel
.
InvalidCount
)
/
item
.
InvalidCount
*
100
;
}
decimal
ContractCount
=
0
;
if
(
firstModel
.
ContractCount
>
0
&&
i
>
0
)
{
ContractCount
=
(
item
.
ContractCount
-
firstModel
.
ContractCount
)
/
firstModel
.
ContractCount
*
100
;
}
decimal
OrderMoney
=
0
;
if
(
firstModel
.
OrderMoney
>
0
&&
i
>
0
)
{
OrderMoney
=
(
item
.
OrderMoney
-
firstModel
.
OrderMoney
)
/
firstModel
.
OrderMoney
*
100
;
}
decimal
StudyOrderMoney
=
0
;
if
(
firstModel
.
StudyOrderMoney
>
0
&&
i
>
0
)
{
StudyOrderMoney
=
(
item
.
StudyOrderMoney
-
firstModel
.
StudyOrderMoney
)
/
firstModel
.
StudyOrderMoney
*
100
;
}
var
newModel
=
new
RB_Student_Market_Extend
()
{
YearStr
=
minYear
+
y
,
MonthStr
=
i
+
1
,
PushCount
=
PushCount
,
TrainCount
=
TrainCount
,
StudyCount
=
StudyCount
,
MeiTuanCount
=
MeiTuanCount
,
EduCustomerSign
=
EduCustomerSign
,
EduCustomerNotSign
=
EduCustomerNotSign
,
PassBy
=
PassBy
,
WeChatFriend
=
WeChatFriend
,
TransCount
=
TransCount
,
SchoolPromote
=
SchoolPromote
,
SchoolAgent
=
SchoolAgent
,
OfflineActivity
=
OfflineActivity
,
OfficialAccount
=
OfficialAccount
,
TeacherRecommend
=
TeacherRecommend
,
ByteDance
=
ByteDance
,
ThirdPartyPlatform
=
ThirdPartyPlatform
,
Other
=
Other
,
ClassACount
=
ClassACount
,
ClassBCount
=
ClassBCount
,
ClassCCount
=
ClassCCount
,
ClassDCount
=
ClassDCount
,
InvalidCount
=
InvalidCount
,
ContractCount
=
ContractCount
,
OrderMoney
=
OrderMoney
,
StudyOrderMoney
=
StudyOrderMoney
,
};
result
.
Add
(
newModel
);
}
}
var
lastPushCount
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
minYear
).
Average
(
qitem
=>
qitem
.
PushCount
);
var
curPushCount
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
Average
(
qitem
=>
qitem
.
PushCount
);
decimal
CPushCount
=
0
;
if
(
lastPushCount
>
0
)
{
CPushCount
=
(
curPushCount
-
lastPushCount
)
/
lastPushCount
*
100
;
}
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"进单人数成长率"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
lastPushCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
curPushCount
,
2
),
YearRate
=
Math
.
Round
(
CPushCount
,
2
),
});
var
lastTrainCount
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
minYear
).
Average
(
qitem
=>
qitem
.
TrainCount
);
var
curTrainCount
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
Average
(
qitem
=>
qitem
.
TrainCount
);
decimal
CTrainCount
=
0
;
if
(
lastTrainCount
>
0
)
{
CTrainCount
=
(
curTrainCount
-
lastTrainCount
)
/
lastTrainCount
*
100
;
}
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"语培需求成长率"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
lastTrainCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
curTrainCount
,
2
),
YearRate
=
Math
.
Round
(
CTrainCount
,
2
),
});
var
lastStudyCount
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
minYear
).
Average
(
qitem
=>
qitem
.
StudyCount
);
var
curStudyCount
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
Average
(
qitem
=>
qitem
.
StudyCount
);
decimal
CStudyCount
=
0
;
if
(
lastStudyCount
>
0
)
{
CStudyCount
=
(
curStudyCount
-
lastStudyCount
)
/
lastStudyCount
*
100
;
}
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"留学需求成长率"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
lastStudyCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
curStudyCount
,
2
),
YearRate
=
Math
.
Round
(
CStudyCount
,
2
),
});
var
lastMeiTuanCount
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
minYear
).
Average
(
qitem
=>
qitem
.
MeiTuanCount
);
var
curMeiTuanCount
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
Average
(
qitem
=>
qitem
.
MeiTuanCount
);
decimal
CMeiTuanCount
=
0
;
if
(
lastMeiTuanCount
>
0
)
{
CMeiTuanCount
=
(
curMeiTuanCount
-
lastMeiTuanCount
)
/
lastMeiTuanCount
*
100
;
}
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"美团点评成长率"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
lastMeiTuanCount
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
curMeiTuanCount
,
2
),
YearRate
=
Math
.
Round
(
CMeiTuanCount
,
2
),
});
var
lastEduCustomerSign
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
minYear
).
Average
(
qitem
=>
qitem
.
EduCustomerSign
);
var
curEduCustomerSign
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
Average
(
qitem
=>
qitem
.
EduCustomerSign
);
decimal
CEduCustomerSign
=
0
;
if
(
lastEduCustomerSign
>
0
)
{
CEduCustomerSign
=
(
curEduCustomerSign
-
lastEduCustomerSign
)
/
lastEduCustomerSign
*
100
;
}
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"教育同行(签约)成长率"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
lastEduCustomerSign
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
curEduCustomerSign
,
2
),
YearRate
=
Math
.
Round
(
CEduCustomerSign
,
2
),
});
var
lastEduCustomerNotSign
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
minYear
).
Average
(
qitem
=>
qitem
.
EduCustomerNotSign
);
var
curEduCustomerNotSign
=
result
.
Where
(
qitem
=>
qitem
.
YearStr
==
maxYear
).
Average
(
qitem
=>
qitem
.
EduCustomerNotSign
);
decimal
CEduCustomerNotSign
=
0
;
if
(
lastEduCustomerNotSign
>
0
)
{
CEduCustomerNotSign
=
(
curEduCustomerNotSign
-
lastEduCustomerNotSign
)
/
lastEduCustomerNotSign
*
100
;
}
yearList
.
Add
(
new
RateYearItem
()
{
ItemName
=
"教育同行(未签约)成长率"
,
FirstYearStr
=
minYear
,
FirstYear
=
Math
.
Round
(
lastEduCustomerNotSign
,
2
),
SecondYearStr
=
maxYear
,
SecondYear
=
Math
.
Round
(
curEduCustomerNotSign
,
2
),
YearRate
=
Math
.
Round
(
CEduCustomerNotSign
,
2
),
});
}
return
yearList
;
}
#
endregion
}
}
Edu.WebApi/Controllers/User/StudentStatController.cs
View file @
23952402
...
...
@@ -1030,7 +1030,7 @@ namespace Edu.WebApi.Controllers.User
StartTime
=
Common
.
ConvertHelper
.
FormatDate
(
DateTime
.
Now
);
}
StartTime
=
"2021-12-21"
;
string
EndTime
=
Common
.
ConvertHelper
.
FormatDate
(
DateTime
.
Now
.
AddDays
(-
1
)
);
string
EndTime
=
Common
.
ConvertHelper
.
FormatDate
(
DateTime
.
Now
);
bool
flag
=
studentStatModule
.
CreateStudentMarketModule
(
userInfo
,
StartTime
,
EndTime
);
return
flag
?
ApiResult
.
Success
()
:
ApiResult
.
Failed
();
}
...
...
@@ -1084,6 +1084,38 @@ namespace Edu.WebApi.Controllers.User
var
list
=
studentStatModule
.
GetStudentMarketRateListMonthModule
(
query
);
return
ApiResult
.
Success
(
data
:
list
);
}
/// <summary>
/// 市场部客户数据年份统计
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetStudentMarketYear
()
{
var
query
=
new
RB_Student_Market_Extend
()
{
YearStr
=
base
.
ParmJObj
.
GetInt
(
"YearStr"
),
};
query
.
Group_Id
=
base
.
UserInfo
.
Group_Id
;
var
list
=
studentStatModule
.
GetStudentMarketListYearModule
(
query
);
return
ApiResult
.
Success
(
data
:
list
);
}
/// <summary>
/// 市场部客户数据年份统计
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetStudentMarketYearRate
()
{
var
query
=
new
RB_Student_Market_Extend
()
{
YearStr
=
base
.
ParmJObj
.
GetInt
(
"YearStr"
),
};
query
.
Group_Id
=
base
.
UserInfo
.
Group_Id
;
var
list
=
studentStatModule
.
GetStudentMarketListYearRateModule
(
query
);
return
ApiResult
.
Success
(
data
:
list
);
}
#
endregion
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment