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
934d0810
Commit
934d0810
authored
Feb 11, 2022
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
eeae4f19
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
416 additions
and
47 deletions
+416
-47
MarketChannelStaticModel.cs
...odel/ViewModel/DataStatistics/MarketChannelStaticModel.cs
+7
-1
MarketConsultantModule.cs
Edu.Module.Customer/MarketConsultantModule.cs
+34
-34
B2BCustomerController.cs
Edu.WebApi/Controllers/Customer/B2BCustomerController.cs
+79
-12
UserCenterController.cs
Edu.WebApi/Controllers/User/UserCenterController.cs
+296
-0
No files found.
Edu.Model/ViewModel/DataStatistics/MarketChannelStaticModel.cs
View file @
934d0810
using
System
;
using
Edu.Common.Enum.Customer
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
...
...
@@ -38,5 +39,10 @@ namespace Edu.Model.ViewModel.DataStatistics
/// 订单业绩金额
/// </summary>
public
decimal
OrderIncome
{
get
;
set
;
}
/// <summary>
/// 客户类型
/// </summary>
public
CatetoryTypeEnum
CustomerType
{
get
;
set
;
}
}
}
Edu.Module.Customer/MarketConsultantModule.cs
View file @
934d0810
...
...
@@ -1333,9 +1333,9 @@ namespace Edu.Module.Customer
/// <param name="StartTime"></param>
/// <param name="EndTime"></param>
/// <returns></returns>
public
object
MarketChannelStaticModule
(
List
<
int
>
queryEmployeeList
,
string
StartTime
,
string
EndTime
)
public
List
<
MarketChannelStaticModel
>
MarketChannelStaticModule
(
List
<
int
>
queryEmployeeList
,
string
StartTime
,
string
EndTime
)
{
List
<
object
>
list
=
new
List
<
object
>();
List
<
MarketChannelStaticModel
>
list
=
new
List
<
MarketChannelStaticModel
>();
var
channelList
=
channelRepository
.
GetChannelListRepository
(
new
RB_Channel_Extend
()
{
});
var
dataList
=
studentRepository
.
GetStudentChannelStaticRepository
(
new
RB_Student_ViewModel
()
{
...
...
@@ -1348,14 +1348,14 @@ namespace Edu.Module.Customer
foreach
(
var
item
in
channelList
)
{
var
channelTempList
=
dataList
?.
Where
(
qitem
=>
qitem
.
CreateType
==
StuCreateTypeEnum
.
EmployeeInput
&&
qitem
.
StuChannel
==
item
.
Id
)?.
ToList
();
list
.
Add
(
new
list
.
Add
(
new
MarketChannelStaticModel
()
{
ChannelName
=
item
.
Name
,
ChannelId
=
item
.
Id
,
ClueCount
=
channelTempList
?.
Count
(),
VisitCount
=
channelTempList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
),
OrderCount
=
channelTempList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
),
OrderIncome
=
channelTempList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
ClueCount
=
channelTempList
?.
Count
()
??
0
,
VisitCount
=
channelTempList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
)
??
0
,
OrderCount
=
channelTempList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
)
??
0
,
OrderIncome
=
channelTempList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
??
0
});
}
}
...
...
@@ -1382,29 +1382,29 @@ namespace Edu.Module.Customer
//企业同行
if
(
sItem
.
CustomerType
==
Common
.
Enum
.
Customer
.
CatetoryTypeEnum
.
Company
)
{
list
.
Add
(
new
list
.
Add
(
new
MarketChannelStaticModel
()
{
ChannelName
=
"(企业)"
+
(
customerList
?.
FirstOrDefault
(
qitem
=>
qitem
.
CustomerId
==
subItem
.
StuSourceId
)?.
CustomerName
??
""
),
ChannelId
=
subItem
.
StuSourceId
,
sItem
.
CustomerType
,
ClueCount
=
tempCusList
?.
Count
(),
VisitCount
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
),
OrderCount
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
),
OrderIncome
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
CustomerType
=
sItem
.
CustomerType
,
ClueCount
=
tempCusList
?.
Count
()
??
0
,
VisitCount
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
)
??
0
,
OrderCount
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
)
??
0
,
OrderIncome
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
??
0
});
}
//校代同行
if
(
sItem
.
CustomerType
==
Common
.
Enum
.
Customer
.
CatetoryTypeEnum
.
School
)
{
list
.
Add
(
new
list
.
Add
(
new
MarketChannelStaticModel
()
{
ChannelName
=
"(校代)"
+
(
customerList
?.
FirstOrDefault
(
qitem
=>
qitem
.
CustomerId
==
subItem
.
StuSourceId
)?.
CustomerName
??
""
),
ChannelId
=
subItem
.
StuSourceId
,
sItem
.
CustomerType
,
ClueCount
=
tempCusList
?.
Count
(),
VisitCount
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
),
OrderCount
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
),
OrderIncome
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
CustomerType
=
sItem
.
CustomerType
,
ClueCount
=
tempCusList
?.
Count
()
??
0
,
VisitCount
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
)
??
0
,
OrderCount
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
)
??
0
,
OrderIncome
=
tempCusList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
??
0
});
}
}
...
...
@@ -1423,14 +1423,14 @@ namespace Edu.Module.Customer
foreach
(
var
sItem
in
groupDataList
)
{
var
tempInnerList
=
dataList
?.
Where
(
qitem
=>
qitem
.
CreateType
==
StuCreateTypeEnum
.
InternalIntroduction
&&
qitem
.
StuSourceId
==
sItem
.
StuSourceId
)?.
ToList
();
list
.
Add
(
new
list
.
Add
(
new
MarketChannelStaticModel
()
{
ChannelName
=
"(内部介绍)"
+
(
empList
?.
FirstOrDefault
(
qitem
=>
qitem
.
Id
==
sItem
.
StuSourceId
)?.
EmployeeName
??
""
),
ChannelId
=
sItem
.
StuSourceId
,
ClueCount
=
tempInnerList
?.
Count
(),
VisitCount
=
tempInnerList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
),
OrderCount
=
tempInnerList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
),
OrderIncome
=
tempInnerList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
ClueCount
=
tempInnerList
?.
Count
()
??
0
,
VisitCount
=
tempInnerList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
)
??
0
,
OrderCount
=
tempInnerList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
)
??
0
,
OrderIncome
=
tempInnerList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
??
0
});
}
...
...
@@ -1446,25 +1446,25 @@ namespace Edu.Module.Customer
foreach
(
var
sItem
in
transTypeList
)
{
var
tempTransList
=
dataList
?.
Where
(
qitem
=>
qitem
.
CreateType
==
StuCreateTypeEnum
.
TransIntroduction
&&
qitem
.
StuSourceId
==
sItem
.
StuSourceId
)?.
ToList
();
list
.
Add
(
new
list
.
Add
(
new
MarketChannelStaticModel
()
{
ChannelName
=
"(学员转介绍)"
+
stuList
?.
FirstOrDefault
(
qitem
=>
qitem
.
StuId
==
sItem
.
StuSourceId
)?.
StuName
??
""
,
ChannelId
=
sItem
.
StuSourceId
,
ClueCount
=
tempTransList
?.
Count
(),
VisitCount
=
tempTransList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
),
OrderCount
=
tempTransList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
),
OrderIncome
=
tempTransList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
ClueCount
=
tempTransList
?.
Count
()
??
0
,
VisitCount
=
tempTransList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
)
??
0
,
OrderCount
=
tempTransList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
)
??
0
,
OrderIncome
=
tempTransList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
??
0
});
}
list
.
Add
(
new
list
.
Add
(
new
MarketChannelStaticModel
()
{
ChannelName
=
"合计"
,
ChannelId
=
10005
,
ClueCount
=
dataList
?.
Count
(),
VisitCount
=
dataList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
),
OrderCount
=
dataList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
),
OrderIncome
=
dataList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
ClueCount
=
dataList
?.
Count
()
??
0
,
VisitCount
=
dataList
?.
Sum
(
qitem
=>
qitem
.
VisitCount
)
??
0
,
OrderCount
=
dataList
?.
Sum
(
qitem
=>
qitem
.
OrderCount
)
??
0
,
OrderIncome
=
dataList
?.
Sum
(
qitem
=>
qitem
.
OrderIncome
)
??
0
});
return
list
;
}
...
...
Edu.WebApi/Controllers/Customer/B2BCustomerController.cs
View file @
934d0810
...
...
@@ -623,18 +623,18 @@ namespace Edu.WebApi.Controllers.Customer
ExcelDataSource
header
=
new
ExcelDataSource
();
header
.
ExcelRows
=
new
List
<
ExcelColumn
>()
{
new
ExcelColumn
(
"联系人名称"
),
new
ExcelColumn
(
"类型"
),
new
ExcelColumn
(
"同行名称"
),
new
ExcelColumn
(
"电话"
),
new
ExcelColumn
(
"QQ号"
),
new
ExcelColumn
(
"微信号"
),
new
ExcelColumn
(
"客户数量"
),
new
ExcelColumn
(
"订单数量"
),
new
ExcelColumn
(
"交易额"
),
new
ExcelColumn
(
"审核状态"
),
new
ExcelColumn
(
"加入时间"
),
new
ExcelColumn
(
"负责人"
),
new
ExcelColumn
(
"联系人名称"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"类型"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"同行名称"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"电话"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"QQ号"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"微信号"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"客户数量"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"订单数量"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"交易额"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"审核状态"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"加入时间"
)
{
CellWidth
=
20
}
,
new
ExcelColumn
(
"负责人"
)
{
CellWidth
=
20
}
,
};
slist
.
Add
(
header
);
foreach
(
var
item
in
list
)
...
...
@@ -949,6 +949,73 @@ namespace Edu.WebApi.Controllers.Customer
return
ApiResult
.
Success
(
data
:
pageModel
);
}
/// <summary>
/// 同行信息下载
/// </summary>
/// <returns></returns>
[
HttpPost
]
[
Obsolete
]
public
FileContentResult
DownLoadCustomer
()
{
var
query
=
new
RB_Customer_Category_Extend
()
{
Group_Id
=
base
.
UserInfo
.
Group_Id
,
CategoryName
=
base
.
ParmJObj
.
GetStringValue
(
"CategoryName"
),
CatetoryType
=
(
CatetoryTypeEnum
)
base
.
ParmJObj
.
GetInt
(
"CatetoryType"
),
};
int
IsQueryAll
=
base
.
ParmJObj
.
GetInt
(
"IsQueryAll"
);
if
(
IsQueryAll
==
0
)
{
query
.
CreateBy
=
base
.
UserInfo
.
Id
;
}
var
list
=
customerModule
.
GetCustomerCategoryPageModule
(
1
,
100000
,
out
long
rowsCount
,
query
);
string
excelName
=
"同行资料.xls"
;
List
<
ExcelDataSource
>
slist
=
new
List
<
ExcelDataSource
>();
try
{
ExcelDataSource
header
=
new
ExcelDataSource
();
header
.
ExcelRows
=
new
List
<
ExcelColumn
>()
{
new
ExcelColumn
(
"同业名称"
){
CellWidth
=
20
},
new
ExcelColumn
(
"类型"
){
CellWidth
=
20
},
new
ExcelColumn
(
"联系人数量"
){
CellWidth
=
20
},
new
ExcelColumn
(
"客户数量"
){
CellWidth
=
20
},
new
ExcelColumn
(
"订单数量"
){
CellWidth
=
20
},
new
ExcelColumn
(
"加入时间"
){
CellWidth
=
20
},
new
ExcelColumn
(
"负责人"
){
CellWidth
=
20
},
};
slist
.
Add
(
header
);
foreach
(
var
item
in
list
)
{
var
dataRow
=
new
ExcelDataSource
()
{
ExcelRows
=
new
List
<
ExcelColumn
>()
{
new
ExcelColumn
(
item
.
CategoryName
),
new
ExcelColumn
(
item
.
CatetoryType
.
ToName
()),
new
ExcelColumn
(
item
.
LinkManCount
.
ToString
()),
new
ExcelColumn
(
item
.
StudentCount
.
ToString
()),
new
ExcelColumn
(
item
.
OrderCount
.
ToString
()),
new
ExcelColumn
(
Common
.
ConvertHelper
.
FormatTime
(
item
.
CreateTime
)),
new
ExcelColumn
(
UserReidsCache
.
GetUserLoginInfo
(
item
.
CreateBy
)?.
AccountName
??
""
),
}
};
slist
.
Add
(
dataRow
);
}
var
byteData
=
ExcelTempLateHelper
.
ToExcelExtend
(
slist
);
return
File
(
byteData
,
"application/octet-stream"
,
excelName
);
}
catch
(
Exception
ex
)
{
LogHelper
.
Write
(
ex
,
"OutToExcelOrderStudentClassHoursList"
);
var
byteData1
=
ExcelTempLateHelper
.
ToExcelExtend
(
slist
);
return
File
(
byteData1
,
"application/octet-stream"
,
excelName
);
}
}
/// <summary>
/// 获取同行列表
/// </summary>
...
...
Edu.WebApi/Controllers/User/UserCenterController.cs
View file @
934d0810
...
...
@@ -2795,6 +2795,101 @@ namespace Edu.WebApi.Controllers.User
return
ApiResult
.
Success
(
data
:
data
);
}
/// <summary>
/// 渠道总表下载
/// </summary>
/// <returns></returns>
[
HttpPost
]
[
Obsolete
]
public
FileContentResult
DownLoadMarketChannelStudentStatic
()
{
string
startTime
=
base
.
ParmJObj
.
GetStringValue
(
"startTime"
);
if
(
string
.
IsNullOrEmpty
(
startTime
))
{
startTime
=
"2022-01-01"
;
}
string
endTime
=
base
.
ParmJObj
.
GetStringValue
(
"endTime"
);
if
(
string
.
IsNullOrEmpty
(
endTime
))
{
endTime
=
Common
.
ConvertHelper
.
FormatDate
(
DateTime
.
Now
);
}
string
empIds
=
base
.
ParmJObj
.
GetStringValue
(
"empList"
);
List
<
int
>
empList
=
new
List
<
int
>();
if
(!
string
.
IsNullOrEmpty
(
empIds
))
{
empList
=
JsonHelper
.
DeserializeObject
<
List
<
int
>>(
empIds
);
}
string
qEmpIds
=
""
;
if
(
empList
!=
null
&&
empList
.
Count
>
0
)
{
qEmpIds
=
string
.
Join
(
","
,
empList
);
}
var
list
=
marketConsultantModule
.
MarketChannelStudentStaticModule
(
startTime
,
endTime
,
qEmpIds
,
isHaveAuth
:
base
.
CheckUserActionAuth
(
"Query_MarketConsultant"
));
string
excelName
=
"渠道总表.xls"
;
List
<
ExcelDataSource
>
slist
=
new
List
<
ExcelDataSource
>();
try
{
JObject
headerObj
=
JObject
.
Parse
(
Common
.
Plugin
.
JsonHelper
.
Serialize
(
list
[
0
]));
var
headerArray
=
JsonHelper
.
DeserializeObject
<
List
<
MarketChannelStaticModel
>>(
headerObj
.
GetStringValue
(
"subList"
));
ExcelDataSource
header
=
new
ExcelDataSource
()
{
ExcelRows
=
new
List
<
ExcelColumn
>()
};
var
subHeader
=
new
ExcelDataSource
()
{
ExcelRows
=
new
List
<
ExcelColumn
>()
};
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"员工"
)
{
Rowspan
=
2
,
CellWidth
=
20
});
subHeader
.
ExcelRows
.
Add
(
new
ExcelColumn
());
if
(
headerArray
!=
null
&&
headerArray
.
Count
>
0
)
{
foreach
(
var
item
in
headerArray
)
{
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
item
.
ChannelName
)
{
Colspan
=
3
});
subHeader
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"回单"
)
{
CellWidth
=
10
});
subHeader
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"到访"
)
{
CellWidth
=
10
});
subHeader
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"转化率"
)
{
CellWidth
=
10
});
}
}
slist
.
Add
(
header
);
slist
.
Add
(
subHeader
);
foreach
(
var
item
in
list
)
{
var
excelRows
=
new
List
<
ExcelColumn
>();
var
dataObj
=
JObject
.
Parse
(
Common
.
Plugin
.
JsonHelper
.
Serialize
(
item
));
var
dataArray
=
JsonHelper
.
DeserializeObject
<
List
<
MarketChannelStaticModel
>>(
dataObj
.
GetStringValue
(
"subList"
));
excelRows
.
Add
(
new
ExcelColumn
(
dataObj
.
GetStringValue
(
"EmployeeName"
)));
if
(
dataArray
!=
null
&&
dataArray
.
Count
>
0
)
{
foreach
(
var
subItem
in
dataArray
)
{
decimal
rate
=
0
;
if
(
subItem
.
ClueCount
>
0
)
{
rate
=
Math
.
Round
(
Convert
.
ToDecimal
(
subItem
.
VisitCount
)
/
Convert
.
ToDecimal
(
subItem
.
ClueCount
)
*
Convert
.
ToDecimal
(
100
),
2
);
}
excelRows
.
Add
(
new
ExcelColumn
(
subItem
.
ClueCount
.
ToString
()));
excelRows
.
Add
(
new
ExcelColumn
(
subItem
.
VisitCount
.
ToString
()));
excelRows
.
Add
(
new
ExcelColumn
(
rate
.
ToString
()+
"%"
));
}
}
var
dataRow
=
new
ExcelDataSource
()
{
ExcelRows
=
excelRows
,
};
slist
.
Add
(
dataRow
);
}
var
byteData
=
ExcelTempLateHelper
.
ToExcelExtend
(
slist
);
return
File
(
byteData
,
"application/octet-stream"
,
excelName
);
}
catch
(
Exception
ex
)
{
LogHelper
.
Write
(
ex
,
"OutToExcelOrderStudentClassHoursList"
);
var
byteData1
=
ExcelTempLateHelper
.
ToExcelExtend
(
slist
);
return
File
(
byteData1
,
"application/octet-stream"
,
excelName
);
}
}
/// <summary>
/// 市场渠道统计
/// </summary>
...
...
@@ -2824,6 +2919,117 @@ namespace Edu.WebApi.Controllers.User
return
ApiResult
.
Success
(
data
:
data
);
}
/// <summary>
/// 渠道总表下载
/// </summary>
/// <returns></returns>
[
HttpPost
]
[
Obsolete
]
public
FileContentResult
DownLoadMarketCreateType
()
{
List
<
ExcelDataSource
>
slist
=
new
List
<
ExcelDataSource
>();
string
startTime
=
base
.
ParmJObj
.
GetStringValue
(
"startTime"
);
if
(
string
.
IsNullOrEmpty
(
startTime
))
{
startTime
=
"2022-01-01"
;
}
string
endTime
=
base
.
ParmJObj
.
GetStringValue
(
"endTime"
);
if
(
string
.
IsNullOrEmpty
(
endTime
))
{
endTime
=
Common
.
ConvertHelper
.
FormatDate
(
DateTime
.
Now
);
}
string
empIds
=
base
.
ParmJObj
.
GetStringValue
(
"empList"
);
List
<
int
>
empList
=
new
List
<
int
>();
if
(!
string
.
IsNullOrEmpty
(
empIds
))
{
empList
=
JsonHelper
.
DeserializeObject
<
List
<
int
>>(
empIds
);
}
var
queryType
=
base
.
ParmJObj
.
GetInt
(
"top_Check"
);
var
data
=
marketConsultantModule
.
MarketCreateTypeStaticModule
(
empList
,
startTime
,
endTime
);
string
excelName
=
"同行渠道.xls"
;
ExcelDataSource
header
=
new
ExcelDataSource
()
{
ExcelRows
=
new
List
<
ExcelColumn
>()
};
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"序号"
)
{
CellWidth
=
5
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"渠道名"
)
{
CellWidth
=
20
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"回单"
)
{
CellWidth
=
15
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"到访"
)
{
CellWidth
=
15
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"合同数"
)
{
CellWidth
=
15
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"新业绩金额"
)
{
CellWidth
=
15
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"到访率"
)
{
CellWidth
=
15
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"合同转化率"
)
{
CellWidth
=
15
});
slist
.
Add
(
header
);
try
{
JObject
dataObj
=
JObject
.
Parse
(
JsonHelper
.
Serialize
(
data
));
List
<
MarketChannelStaticModel
>
list
=
new
List
<
MarketChannelStaticModel
>();
//同行渠道
if
(
queryType
==
1
)
{
list
=
JsonHelper
.
DeserializeObject
<
List
<
MarketChannelStaticModel
>>(
dataObj
.
GetStringValue
(
"customerDataList"
));
}
//内部渠道
if
(
queryType
==
2
)
{
list
=
JsonHelper
.
DeserializeObject
<
List
<
MarketChannelStaticModel
>>(
dataObj
.
GetStringValue
(
"innerDataList"
));
}
//学校渠道
if
(
queryType
==
3
)
{
list
=
JsonHelper
.
DeserializeObject
<
List
<
MarketChannelStaticModel
>>(
dataObj
.
GetStringValue
(
"schoolDataList"
));
}
//转介渠道
if
(
queryType
==
4
)
{
list
=
JsonHelper
.
DeserializeObject
<
List
<
MarketChannelStaticModel
>>(
dataObj
.
GetStringValue
(
"transDataList"
));
}
int
index
=
1
;
foreach
(
var
item
in
list
)
{
var
excelRows
=
new
List
<
ExcelColumn
>();
excelRows
.
Add
(
new
ExcelColumn
(
index
.
ToString
()));
excelRows
.
Add
(
new
ExcelColumn
(
item
.
ChannelName
));
excelRows
.
Add
(
new
ExcelColumn
(
item
.
ClueCount
.
ToString
()));
excelRows
.
Add
(
new
ExcelColumn
(
item
.
VisitCount
.
ToString
()));
excelRows
.
Add
(
new
ExcelColumn
(
item
.
OrderCount
.
ToString
()));
excelRows
.
Add
(
new
ExcelColumn
(
item
.
OrderIncome
.
ToString
()));
decimal
rate
=
0
;
if
(
item
.
ClueCount
>
0
)
{
rate
=
Math
.
Round
(
Convert
.
ToDecimal
(
item
.
VisitCount
)
/
Convert
.
ToDecimal
(
item
.
ClueCount
)
*
Convert
.
ToDecimal
(
100
),
2
);
}
decimal
orderRate
=
0
;
if
(
item
.
VisitCount
>
0
)
{
orderRate
=
Math
.
Round
(
Convert
.
ToDecimal
(
item
.
OrderCount
)
/
Convert
.
ToDecimal
(
item
.
VisitCount
)
*
Convert
.
ToDecimal
(
100
),
2
);
}
excelRows
.
Add
(
new
ExcelColumn
(
rate
.
ToString
()+
"%"
));
excelRows
.
Add
(
new
ExcelColumn
(
orderRate
.
ToString
()
+
"%"
));
var
dataRow
=
new
ExcelDataSource
()
{
ExcelRows
=
excelRows
,
};
slist
.
Add
(
dataRow
);
index
++;
}
var
byteData
=
ExcelTempLateHelper
.
ToExcelExtend
(
slist
);
return
File
(
byteData
,
"application/octet-stream"
,
excelName
);
}
catch
(
Exception
ex
)
{
LogHelper
.
Write
(
ex
,
"OutToExcelOrderStudentClassHoursList"
);
var
byteData1
=
ExcelTempLateHelper
.
ToExcelExtend
(
slist
);
return
File
(
byteData1
,
"application/octet-stream"
,
excelName
);
}
}
/// <summary>
/// 市场渠道统计汇总
/// </summary>
...
...
@@ -2856,6 +3062,96 @@ namespace Edu.WebApi.Controllers.User
var
data
=
marketConsultantModule
.
MarketChannelStaticModule
(
empList
,
startTime
,
endTime
);
return
ApiResult
.
Success
(
data
:
data
);
}
/// <summary>
/// 细分渠道下载
/// </summary>
/// <returns></returns>
[
HttpPost
]
[
Obsolete
]
public
FileContentResult
DownLoadMarketChannelStatic
()
{
string
startTime
=
base
.
ParmJObj
.
GetStringValue
(
"startTime"
);
if
(
string
.
IsNullOrEmpty
(
startTime
))
{
startTime
=
"2022-01-01"
;
}
string
endTime
=
base
.
ParmJObj
.
GetStringValue
(
"endTime"
);
if
(
string
.
IsNullOrEmpty
(
endTime
))
{
endTime
=
Common
.
ConvertHelper
.
FormatDate
(
DateTime
.
Now
);
}
string
empIds
=
base
.
ParmJObj
.
GetStringValue
(
"empList"
);
List
<
int
>
empList
=
new
List
<
int
>();
if
(!
string
.
IsNullOrEmpty
(
empIds
))
{
empList
=
JsonHelper
.
DeserializeObject
<
List
<
int
>>(
empIds
);
}
string
qEmpIds
=
""
;
if
(
empList
!=
null
&&
empList
.
Count
>
0
)
{
qEmpIds
=
string
.
Join
(
","
,
empList
);
}
var
list
=
marketConsultantModule
.
MarketChannelStaticModule
(
empList
,
startTime
,
endTime
);
string
excelName
=
"细分渠道.xls"
;
List
<
ExcelDataSource
>
slist
=
new
List
<
ExcelDataSource
>();
ExcelDataSource
header
=
new
ExcelDataSource
()
{
ExcelRows
=
new
List
<
ExcelColumn
>()
};
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"序号"
)
{
CellWidth
=
5
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"渠道名"
)
{
CellWidth
=
20
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"回单"
)
{
CellWidth
=
15
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"到访"
)
{
CellWidth
=
15
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"合同数"
)
{
CellWidth
=
15
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"新业绩金额"
)
{
CellWidth
=
15
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"到访率"
)
{
CellWidth
=
15
});
header
.
ExcelRows
.
Add
(
new
ExcelColumn
(
"合同转化率"
)
{
CellWidth
=
15
});
slist
.
Add
(
header
);
try
{
int
index
=
1
;
foreach
(
var
item
in
list
)
{
var
excelRows
=
new
List
<
ExcelColumn
>();
excelRows
.
Add
(
new
ExcelColumn
(
index
.
ToString
()));
excelRows
.
Add
(
new
ExcelColumn
(
item
.
ChannelName
));
excelRows
.
Add
(
new
ExcelColumn
(
item
.
ClueCount
.
ToString
()));
excelRows
.
Add
(
new
ExcelColumn
(
item
.
VisitCount
.
ToString
()));
excelRows
.
Add
(
new
ExcelColumn
(
item
.
OrderCount
.
ToString
()));
excelRows
.
Add
(
new
ExcelColumn
(
item
.
OrderIncome
.
ToString
()));
decimal
rate
=
0
;
if
(
item
.
ClueCount
>
0
)
{
rate
=
Math
.
Round
(
Convert
.
ToDecimal
(
item
.
VisitCount
)
/
Convert
.
ToDecimal
(
item
.
ClueCount
)
*
Convert
.
ToDecimal
(
100
),
2
);
}
decimal
orderRate
=
0
;
if
(
item
.
VisitCount
>
0
)
{
orderRate
=
Math
.
Round
(
Convert
.
ToDecimal
(
item
.
OrderCount
)
/
Convert
.
ToDecimal
(
item
.
VisitCount
)
*
Convert
.
ToDecimal
(
100
),
2
);
}
excelRows
.
Add
(
new
ExcelColumn
(
rate
.
ToString
()
+
"%"
));
excelRows
.
Add
(
new
ExcelColumn
(
orderRate
.
ToString
()
+
"%"
));
var
dataRow
=
new
ExcelDataSource
()
{
ExcelRows
=
excelRows
,
};
slist
.
Add
(
dataRow
);
index
++;
}
var
byteData
=
ExcelTempLateHelper
.
ToExcelExtend
(
slist
);
return
File
(
byteData
,
"application/octet-stream"
,
excelName
);
}
catch
(
Exception
ex
)
{
LogHelper
.
Write
(
ex
,
"OutToExcelOrderStudentClassHoursList"
);
var
byteData1
=
ExcelTempLateHelper
.
ToExcelExtend
(
slist
);
return
File
(
byteData1
,
"application/octet-stream"
,
excelName
);
}
}
#
endregion
}
}
\ No newline at end of file
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