Commit 3c514f01 authored by 吴春's avatar 吴春

学员跟进修改

parent 26824cdf
......@@ -22,7 +22,7 @@ namespace Edu.Model.ViewModel.DataStatistics
/// 学员名称
/// </summary>
public string StuName { get; set; }
/// <summary>
/// 学员电话
/// </summary>
......@@ -38,11 +38,36 @@ namespace Edu.Model.ViewModel.DataStatistics
/// </summary>
public string ContractSTime { get; set; }
/// <summary>
/// 报名日期
/// </summary>
public string CreateTime { get; set; }
/// <summary>
/// 职业
/// </summary>
public string StuProfession { get; set; }
/// <summary>
/// 课程名称
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 初报级别
/// </summary>
public string CourseRateName { get; set; }
/// <summary>
/// 金额
/// </summary>
public decimal PreferPrice { get; set; }
/// <summary>
/// 日语基础
/// </summary>
......@@ -82,6 +107,13 @@ namespace Edu.Model.ViewModel.DataStatistics
/// </summary>
public List<RB_Student_Assist_Extend> AssistList { get; set; }
public object FollowList { get; set; }
/// <summary>
/// 续费订单
/// </summary>
public object RenewOrderList { get; set; }
/// <summary>
/// 收客渠道
/// </summary>
......@@ -145,7 +177,7 @@ namespace Edu.Model.ViewModel.DataStatistics
/// <summary>
/// 课程顾问跟进状态名称
/// </summary>
public string AdvisorStatusName{ get; set; }
public string AdvisorStatusName { get; set; }
/// <summary>
/// 课程顾问跟进信息列表
......
......@@ -126,6 +126,14 @@ namespace Edu.Model.ViewModel.User
public int EnterID { get; set; }
/// <summary>
/// 初报级别
/// </summary>
public int CourseRate { get; set; }
/// <summary>
/// 订单金额
/// </summary>
public decimal PreferPrice { get; set; }
/// <summary>
/// 剩余课时
/// </summary>
......@@ -431,6 +439,11 @@ namespace Edu.Model.ViewModel.User
/// </summary>
public List<RB_Student_Advisor_Extend> AdvisorList { get; set; }
/// <summary>
/// 跟进信息列表
/// </summary>
public List<RB_Student_Follow_Extend> FollowList { get; set; }
/// <summary>
/// 客户状态(1-有效,2-无效)
/// </summary>
......
using Edu.Common.Enum.User;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.User;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Entity.User;
......@@ -311,6 +312,117 @@ namespace Edu.Module.User
return Robj;
}
/// <summary>
/// 学员跟进分页列表2024-20-29 add by:W
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public object GetStudentFollowUpPageModule_V2(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
{
object Robj = new object();
var slist = student_OrderGuestRepository.GetStudentFollowUpPageRepository_V2(pageIndex, pageSize, out count, demodel);
if (slist.Any())
{
string stuIds = string.Join(",", slist.Select(x => x.StuId));
//查询学生每月的跟进情况
var flist = followRepository.GetStudentFollowListRepository(new RB_Student_Follow_Extend { QStuIds=stuIds,Group_Id=demodel.Group_Id});
//查询续课 学员介绍
var xlist = student_OrderGuestRepository.GetStudentRenewRepository(demodel.Group_Id, stuIds);//续费
//查询汇总数据
// var TotalData = student_OrderGuestRepository.GetStudentFollowUpStat_V2(demodel);
//学习目的
string goalIds = string.Join(",", slist.Select(qitem => qitem.StuPurpose));
var goalList = learningGoalsRepository.GetLearningGoalsListRepository(new Model.ViewModel.System.RB_LearningGoals_Extend()
{
QGoalIds = goalIds
});
//协助人员列表
var assistList = student_AssistRepository.GetStudentAssistListRepository(new Model.ViewModel.Customer.RB_Student_Assist_Extend()
{
QStuIds = stuIds
});
//内部介绍人
List<int> empIdList = Common.ConvertHelper.StringToList(string.Join(",", slist.Where(qitem => qitem.CreateType == StuCreateTypeEnum.InternalIntroduction).Select(qitem => qitem.StuSourceId)));
List<int> aIds = Common.ConvertHelper.StringToList(string.Join(",", assistList.Select(qitem => qitem.AssistId)));
List<RB_Account_ViewModel> accountList = new List<RB_Account_ViewModel>();
if (aIds != null && aIds.Count > 0)
{
empIdList.AddRange(aIds);
}
List<int> scIds = Common.ConvertHelper.StringToList(string.Join(",", slist.Select(qitem => qitem.CreateBy)));
if (scIds != null && scIds.Count > 0)
{
empIdList.AddRange(scIds);
}
if (empIdList != null && empIdList.Count > 0)
{
accountList = accountRepository.GetAccountListExtRepository(new RB_Account_ViewModel() { QIds = string.Join(",", empIdList) });
}
#region 组装数据
//数据
List<object> RList = new List<object>();
foreach (var item in slist)
{
//组合所有的月份
//查询学生首次报名 至 当月的所有月份
var tempAssistList = assistList?.Where(qitem => qitem.StuId == item.StuId)?.ToList();
foreach (var sItem in tempAssistList)
{
sItem.AssistName = accountList?.FirstOrDefault(qitem => qitem.Id == sItem.AssistId)?.AccountName ?? "";
}
item.AssistList = tempAssistList;
item.CreateByName = accountList?.FirstOrDefault(qitem => qitem.Id == item.CreateBy)?.AccountName ?? "";
item.StuPurposeName = goalList?.FirstOrDefault(qitem => qitem.Id == item.StuPurpose)?.Name ?? "";
item.FollowList = flist?.Where(qitem => qitem.StuId == item.StuId)?.ToList();
var followModel = new StudentFollowStatic()
{
StuId = item.StuId,
StuName = item.StuName,//姓名
StuTel = item.StuTel,
CreateTime = item.CreateTime.ToString("yyyy-MM-dd"),//报名日期
StuProfession = item.StuProfession,
StuPurpose = item.StuPurpose,
StuPurposeName = item.StuPurposeName,
CourseName = item.CourseName,
CourseRateName = item.CourseRate > 0 ? Common.Plugin.EnumHelper.ToName((CourseRateEnum)item.CourseRate) : "",
PreferPrice = item.PreferPrice,
JapanBaseInfo = item.JapanBaseInfo.ToName(),
AssistList = item.AssistList,
CreateByName = item.CreateByName,
RenewOrderList = xlist?.Where(x => x.StuId == item.StuId)?.Select(x => new { x.CourseName, x.CourseRate, CourseRateName = x.CourseRate > 0 ? Common.Plugin.EnumHelper.ToName((CourseRateEnum)x.CourseRate) : "", x.PreferPrice }),
FollowList = item.FollowList?.Select(x => new { x.Remark, CreateTime = x.CreateTime.ToString("yyyy-MM-dd HH:mm:ss") }),
};
RList.Add(followModel);
}
Robj = new
{
RList,
//Stat = new
//{
// StuTNum = TotalData.OrderCount,
// RenewNum = TotalData.RenewOrderCount,
// NewNum = TotalData.OrderCount - TotalData.RenewOrderCount,
// TotalData.StudyNum,
// TotalData.GraduateNum,
// TotalData.SuspendNum,
// TotalData.DropOutNum
//}
};
#endregion
}
return Robj;
}
#endregion
#region 客人咨询
......@@ -715,7 +827,7 @@ namespace Edu.Module.User
string ids = string.Join(",", list.Select(qitem => qitem.Id));
if (!string.IsNullOrEmpty(ids))
{
tempList= student_StaticRepository.GetStudentStaticListRepository(new RB_Student_Static_Extend() { QIds = ids });
tempList = student_StaticRepository.GetStudentStaticListRepository(new RB_Student_Static_Extend() { QIds = ids });
}
}
List<RB_Student_Static_Extend> monthList = new List<RB_Student_Static_Extend>();
......@@ -906,14 +1018,14 @@ namespace Edu.Module.User
{
decimal PushCount = 0;
var firstModel = new RB_Student_Static_Extend();
var secondModel = new RB_Student_Static_Extend();
var secondModel = new RB_Student_Static_Extend();
if (i > 0)
{
firstModel = i < list.Count ? list[i - 1] : new RB_Student_Static_Extend();
secondModel= i < tempList.Count ? tempList[i - 1] : new RB_Student_Static_Extend();
secondModel = i < tempList.Count ? tempList[i - 1] : new RB_Student_Static_Extend();
}
var item = i < list.Count ? list[i] : new RB_Student_Static_Extend();
var item2= i < tempList.Count ? tempList[i] : new RB_Student_Static_Extend();
var item2 = i < tempList.Count ? tempList[i] : new RB_Student_Static_Extend();
if (firstModel.PushCount > 0 && i > 0)
{
......@@ -1746,7 +1858,7 @@ namespace Edu.Module.User
secondModel = i < tempList.Count ? tempList[i - 1] : new RB_Student_Static_Extend();
}
var item = i < list.Count ? list[i] : new RB_Student_Static_Extend();
var item2= i < tempList.Count ? tempList[i] : new RB_Student_Static_Extend();
var item2 = i < tempList.Count ? tempList[i] : new RB_Student_Static_Extend();
if (firstModel.PushCount > 0 && i > 0)
{
PushCount = (item.PushCount - firstModel.PushCount) / firstModel.PushCount * 100;
......@@ -2320,7 +2432,7 @@ namespace Edu.Module.User
secondModel = i < list2.Count ? list2[i - 1] : new RB_Student_Static_Extend();
}
var item = i < list.Count ? list[i] : new RB_Student_Static_Extend();
var item2= i < list2.Count ? list2[i] : new RB_Student_Static_Extend();
var item2 = i < list2.Count ? list2[i] : new RB_Student_Static_Extend();
if (firstModel.PushCount > 0 && i > 0)
{
PushCount = (item.PushCount - firstModel.PushCount) / firstModel.PushCount * 100;
......@@ -6226,7 +6338,7 @@ namespace Edu.Module.User
PushCount = tempList?.Sum(qitem => qitem.PushCount),
NewCount = tempList?.Sum(qitem => qitem.NewCount),
CommunicationCount = tempList != null && tempList.Count > 0 ? tempList?.LastOrDefault()?.CommunicationCount : 0,
TrialLessonCount = tempList?.Sum(qitem => qitem.TrialLessonCount),
TrialLessonCount = tempList?.Sum(qitem => qitem.TrialLessonCount),
NotContacted = tempList != null && tempList.Count > 0 ? tempList?.LastOrDefault()?.NotContacted : 0,
JPCount = tempList?.Sum(qitem => qitem.JPCount),
KRCount = tempList?.Sum(qitem => qitem.KRCount),
......@@ -6289,7 +6401,7 @@ namespace Edu.Module.User
{
tempStudent = studentList.Where(qitem => qitem.YearStr == query.YearStr && qitem.MonthStr <= i).LastOrDefault();
}
var secondTempData= tempList?.Where(qitem => qitem.YearStr == query.YearStr && qitem.MonthStr == i).LastOrDefault();
var secondTempData = tempList?.Where(qitem => qitem.YearStr == query.YearStr && qitem.MonthStr == i).LastOrDefault();
var newData = new RB_Student_Company_Extend()
{
ShowMonthStr = i + "月",
......@@ -6477,7 +6589,7 @@ namespace Edu.Module.User
{
decimal PushCount = 0;
var firstModel = new RB_Student_Company_Extend();
var secondModel= new RB_Student_Company_Extend();
var secondModel = new RB_Student_Company_Extend();
if (i > 0)
{
firstModel = i < list.Count ? list[i - 1] : new RB_Student_Company_Extend();
......@@ -7307,14 +7419,14 @@ namespace Edu.Module.User
{
decimal PushCount = 0;
var firstModel = new RB_Student_Company_Extend();
var secondModel=new RB_Student_Company_Extend();
var secondModel = new RB_Student_Company_Extend();
if (i > 0)
{
firstModel = i < list.Count ? list[i - 1] : new RB_Student_Company_Extend();
secondModel = i < tempList.Count ? tempList[i - 1] : new RB_Student_Company_Extend();
}
var item = i < list.Count ? list[i] : new RB_Student_Company_Extend();
var item2= i < tempList.Count ? tempList[i] : new RB_Student_Company_Extend();
var item2 = i < tempList.Count ? tempList[i] : new RB_Student_Company_Extend();
if (firstModel.PushCount > 0 && i > 0)
{
PushCount = (item.PushCount - firstModel.PushCount) / firstModel.PushCount * 100;
......@@ -8668,7 +8780,7 @@ namespace Edu.Module.User
/// </summary>
/// <param name="Date"></param>
/// <returns></returns>
public bool CheckStudentCompanyModule (string Date)
public bool CheckStudentCompanyModule(string Date)
{
return student_CompanyRepository.CheckStudentCompanyExistsRepository(Date);
}
......
......@@ -167,7 +167,7 @@ GROUP BY s.StuSourceId,DATE_FORMAT(o.CreateTime,'%Y-%m')
public List<RB_Student_Follow_Extend> GetStudentFollowUpLatelyList(string stuIds, int group_Id)
{
string sql = $@"SELECT f.*,f1.Remark,f1.CreateTime FROM
(SELECT StuId,AssistType,MAX(Id) AS Id FROM rb_student_follow WHERE Group_Id ={group_Id} and `Status` =0 and StuId in ({stuIds}) and AssistType =2
(SELECT StuId,AssistType,MAX(Id) AS Id FROM rb_student_follow WHERE Group_Id ={group_Id} and `Status` =0 and StuId in ({stuIds})
GROUP BY StuId,AssistType
) f
INNER JOIN rb_student_follow f1 on f.Id = f1.Id
......
using Edu.Common.Enum;
using Edu.Model.Entity.User;
using Edu.Model.ViewModel.Customer;
using Edu.Model.ViewModel.Sell;
using Edu.Model.ViewModel.User;
using System.Collections.Generic;
......@@ -502,10 +503,83 @@ FROM rb_student s
return GetPage<RB_Student_ViewModel>(pageIndex, pageSize, out count, sql, parameters).ToList();
}
public string GetStudentFollowUpSql(RB_Student_ViewModel demodel, out DynamicParameters parameters)
/// <summary>
/// 获取学员跟进分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentFollowUpPageRepository_V2(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
{
string where = GetStudentFollowUpSql(demodel, out DynamicParameters parameters);
string joinType = "INNER JOIN";
if (demodel.QueryTpye == 3)
{
joinType = "LEFT JOIN";
}
string sql = $@"
SELECT o.CreateTime,s.StuId,s.StuName,s.StuTel,s.StuProfession,s.StuPurpose,c.CourseName,c.CourseRate,o.PreferPrice,s.JapanBaseInfo,s.CreateBy
FROM rb_student s
{joinType} rb_student_orderguest og on og.Student_Id = s.StuId
{joinType} (SELECT og.Student_Id,min(og.Id) as Id FROM rb_student_orderguest og INNER JOIN rb_order o on og.OrderId = o.OrderId WHERE o.OrderState <>3 GROUP BY og.Student_Id) stu on og.Id = stu.Id and og.Student_Id = s.StuId
{joinType} rb_order_guest org on org.Id = og.GuestId
{joinType} rb_order o on og.OrderId = o.OrderId
{joinType} rb_class cl on cl.ClassId = o.ClassId
{joinType} rb_course c on o.CourseId = c.CourseId
LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId
LEFT JOIN rb_student_advisorconfig AS b ON s.AdvisorStatus=B.Id
LEFT JOIN (
SELECT B.Student_Id,MIN(A.ClassDate) AS ClassDate
FROM rb_class_check AS A INNER JOIN rb_student_orderguest AS B ON A.OrderGuestId=B.GuestId
WHERE A.Status=0 AND A.CheckStatus=0 GROUP BY B.Student_Id
) AS clcheck ON s.StuId=clcheck.Student_Id
";
if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime))
{
//增加跟进链表
sql += $@" LEFT JOIN rb_student_follow f on s.StuId = f.StuId and f.`Status` =0 and f.AssistType in(2,4) and f.CreateTime >='{demodel.SFTime}' and f.CreateTime <='{demodel.EFTime} 23:59:59'";
}
sql += $" where {where} and o.JoinType=1 ";
if ((!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)))
{
sql += $" GROUP BY s.StuId";
}
sql += $" order by s.StuId desc";
return GetPage<RB_Student_ViewModel>(pageIndex, pageSize, out count, sql, parameters).ToList();
}
/// <summary>
/// 获取学员跟进分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentRenewRepository( int group_Id,string stuIds)
{
string sql = $@"
SELECT s.StuId,c.CourseName,c.CourseRate,o.PreferPrice
FROM rb_student s
INNER JOIN rb_student_orderguest sog on s.StuId = sog.Student_Id
INNER JOIN rb_order o on sog.OrderId = o.OrderId
INNER JOIN rb_class cl on cl.ClassId = o.ClassId
INNER JOIN rb_course c on o.CourseId = c.CourseId
INNER JOIN rb_order_guest og on og.Id = sog.GuestId
WHERE s.Group_Id ={group_Id} and o.JoinType=3 and s.`Status` =0 and sog.`Status` =0 and o.OrderState <>3 and (o.RenewOrderId >0 or og.RenewState =2) and s.StuId in({stuIds})";
return Get<RB_Student_ViewModel>(sql).ToList();
}
public string GetStudentFollowUpSql(RB_Student_ViewModel demodel, out DynamicParameters parameters)
{
parameters = new DynamicParameters();
string where = " 1=1 and s.Status =0 and c.CourseId <>1";//排除内部班课程
string where = " 1=1 and s.Status =0 and c.CourseId <>1 ";//排除内部班课程
if (demodel.Group_Id > 0)
{
where += $" and s.{nameof(RB_Student_ViewModel.Group_Id)} ={demodel.Group_Id}";
......@@ -694,6 +768,52 @@ FROM rb_student s
return Get<RB_Student_ViewModel>(sql, parameters).FirstOrDefault();
}
/// <summary>
/// 获取人数统计
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public RB_Student_ViewModel GetStudentFollowUpStat_V2(RB_Student_ViewModel demodel)
{
string where = GetStudentFollowUpSql(demodel, out DynamicParameters parameters);
string joinType = "INNER JOIN";
if (demodel.QueryTpye == 3)
{
joinType = "LEFT JOIN";
}
string sql = $@"
SELECT count(0) as OrderCount,sum(case when t.RenewState = 1 then 1 else 0 end) AS RenewOrderCount,
SUM(CASE WHEN t.StuGuestState in(1,3,4,6,8,9) THEN 1 ELSE 0 END) AS StudyNum,
SUM(CASE WHEN t.StuGuestState =2 THEN 1 ELSE 0 END) AS DropOutNum,
SUM(CASE WHEN t.StuGuestState =5 THEN 1 ELSE 0 END) AS SuspendNum,
SUM(CASE WHEN t.StuGuestState =7 THEN 1 ELSE 0 END) AS GraduateNum
FROM(
SELECT s.StuId,s.StuName,s.StuTel,s.StuRealMobile,s.QQ,ec.CreateTime,c.CourseId,c.CourseName,s.JapanBaseInfo,s.StuBirth
,org.GuestState as StuGuestState,case when o.RenewOrderId >0 or org.RenewState =2 then 1 else 0 end AS RenewState
FROM rb_student s
{joinType} rb_student_orderguest og on og.Student_Id = s.StuId
{joinType} (SELECT og.Student_Id,min(og.Id) as Id FROM rb_student_orderguest og INNER JOIN rb_order o on og.OrderId = o.OrderId WHERE o.OrderState <>3 GROUP BY og.Student_Id) stu on og.Id = stu.Id and og.Student_Id = s.StuId
{joinType} rb_order_guest org on org.Id = og.GuestId
{joinType} rb_order o on og.OrderId = o.OrderId
{joinType} rb_class cl on cl.ClassId = o.ClassId
{joinType} rb_course c on o.CourseId = c.CourseId
LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId ";
if (!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime))
{
//增加跟进链表
sql += $@" LEFT JOIN rb_student_follow f on s.StuId = f.StuId and f.`Status` =0 and f.AssistType in(2,4) and f.CreateTime >='{demodel.SFTime}' and f.CreateTime <='{demodel.EFTime} 23:59:59'";
}
sql += $" where {where} ";
if ((!string.IsNullOrEmpty(demodel.SFTime) && !string.IsNullOrEmpty(demodel.EFTime)))
{
sql += $" GROUP BY s.StuId";
}
sql += $" order by s.StuId desc)t";
return Get<RB_Student_ViewModel>(sql, parameters).FirstOrDefault();
}
/// <summary>
/// 获取学员咨询分页列表
/// </summary>
......
94541b82de535cf18d27a637712047e12553e692
06d7e9a762b0ad4dcb0df09e38f6942167f188dbf481acb8b4898ac74af6bacd
......@@ -158,6 +158,269 @@ namespace Edu.WebApi.Controllers.User
return ApiResult.Success("", pmodel);
}
/// <summary>
/// 获取学员跟进分页列表 2024-02-29 add by:W
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetStudentFollowUpPageNewList()
{
ResultPageModel pmodel = JsonHelper.DeserializeObject<ResultPageModel>(base.RequestParm.Msg.ToString());
var userInfo = base.UserInfo;
RB_Student_ViewModel demodel = new RB_Student_ViewModel()
{
BelongType = base.ParmJObj.GetInt("BelongType"),
ConsultantId = base.ParmJObj.GetInt("ConsultantId"),
CourseId = base.ParmJObj.GetInt("CourseId"),
CreateType = (StuCreateTypeEnum)base.ParmJObj.GetInt("CreateType"),
EFTime = base.ParmJObj.GetStringValue("EFTime"),
IsQueryMyStu = base.ParmJObj.GetInt("IsQueryMyStu"),
QQ = base.ParmJObj.GetStringValue("QQ"),
Q_FType = base.ParmJObj.GetInt("Q_FType"),
SFTime = base.ParmJObj.GetStringValue("SFTime"),
StuChannel = base.ParmJObj.GetInt("StuChannel"),
StuGuestState = (GuestStateEnum)base.ParmJObj.GetInt("StuGuestState"),
StuName = base.ParmJObj.GetStringValue("StuName"),
StuRealMobile = base.ParmJObj.GetStringValue("StuRealMobile"),
StuSourceId = base.ParmJObj.GetInt("StuSourceId"),
StuStage = base.ParmJObj.GetInt("StuStage"),
StuType = base.ParmJObj.GetInt("StuType"),
WeChatNo = base.ParmJObj.GetStringValue("WeChatNo"),
StuPurpose = base.ParmJObj.GetInt("StuPurpose"),
HeadTeacherId = base.ParmJObj.GetInt("HeadTeacherId"),
QueryTpye = base.ParmJObj.GetInt("QueryTpye"),
AdvisorStatus = base.ParmJObj.GetInt("AdvisorStatus"),
};
string schoolId = base.ParmJObj.GetStringValue("School_Id");
if (schoolId != "-1")
{
demodel.School_Id = base.ParmJObj.GetInt("School_Id");
}
string CreateIds = base.ParmJObj.GetStringValue("CreateIds");
if (!string.IsNullOrEmpty(CreateIds))
{
demodel.CreateIds = Common.Plugin.JsonHelper.DeserializeObject<List<int>>(CreateIds);
}
demodel.Group_Id = userInfo.Group_Id;
//市场部
if (demodel.QueryTpye == 3)
{
demodel.BelongType = 1;
var markerUserList = employeeModule.GetEmployeeListModule(new Employee_ViewModel()
{
UserRole = UserRoleEnum.MarketPersion,
IsLeave = 1
});
string QCreateBys = "";
QCreateBys = string.Join(",", markerUserList?.Select(qitem => qitem.Id));
//普通市场人员
if (base.UserInfo.IsMarket == 1 && base.UserInfo.IsManager == 0)
{
demodel.CreateBy = base.UserInfo.Id;
}
int qCreateBy = base.ParmJObj.GetInt("CreateBy");
if (qCreateBy > 0)
{
QCreateBys = qCreateBy.ToString();
}
if (!string.IsNullOrEmpty(QCreateBys))
{
demodel.QCreateBys = QCreateBys.TrimStart(',').TrimEnd(',');
}
}
//课程顾问部
if (demodel.QueryTpye == 1)
{
demodel.BelongType = 0;
}
if (demodel.QueryTpye == 2)
{
}
var list = studentStatModule.GetStudentFollowUpPageModule_V2(pmodel.PageIndex, pmodel.PageSize, out long count, demodel);
pmodel.Count = count;
pmodel.PageData = list;
return ApiResult.Success("", pmodel);
}
/// <summary>
/// 下载学员跟进信息 2024-03-01 add by:w
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentFollowUpNew()
{
List<ExcelDataSource> slist = new List<ExcelDataSource>();
var userInfo = base.UserInfo;
RB_Student_ViewModel demodel = new RB_Student_ViewModel()
{
BelongType = base.ParmJObj.GetInt("BelongType"),
ConsultantId = base.ParmJObj.GetInt("ConsultantId"),
CourseId = base.ParmJObj.GetInt("CourseId"),
CreateType = (StuCreateTypeEnum)base.ParmJObj.GetInt("CreateType"),
EFTime = base.ParmJObj.GetStringValue("EFTime"),
IsQueryMyStu = base.ParmJObj.GetInt("IsQueryMyStu"),
QQ = base.ParmJObj.GetStringValue("QQ"),
Q_FType = base.ParmJObj.GetInt("Q_FType"),
SFTime = base.ParmJObj.GetStringValue("SFTime"),
StuChannel = base.ParmJObj.GetInt("StuChannel"),
StuGuestState = (GuestStateEnum)base.ParmJObj.GetInt("StuGuestState"),
StuName = base.ParmJObj.GetStringValue("StuName"),
StuRealMobile = base.ParmJObj.GetStringValue("StuRealMobile"),
StuSourceId = base.ParmJObj.GetInt("StuSourceId"),
StuStage = base.ParmJObj.GetInt("StuStage"),
StuType = base.ParmJObj.GetInt("StuType"),
WeChatNo = base.ParmJObj.GetStringValue("WeChatNo"),
StuPurpose = base.ParmJObj.GetInt("StuPurpose"),
HeadTeacherId = base.ParmJObj.GetInt("HeadTeacherId"),
QueryTpye = base.ParmJObj.GetInt("QueryTpye"),
AdvisorStatus = base.ParmJObj.GetInt("AdvisorStatus"),
};
string schoolId = base.ParmJObj.GetStringValue("School_Id");
if (schoolId != "-1")
{
demodel.School_Id = base.ParmJObj.GetInt("School_Id");
}
string CreateIds = base.ParmJObj.GetStringValue("CreateIds");
if (!string.IsNullOrEmpty(CreateIds))
{
demodel.CreateIds = Common.Plugin.JsonHelper.DeserializeObject<List<int>>(CreateIds);
}
demodel.Group_Id = userInfo.Group_Id;
//市场部
if (demodel.QueryTpye == 3)
{
demodel.BelongType = 1;
var markerUserList = employeeModule.GetEmployeeListModule(new Employee_ViewModel()
{
UserRole = UserRoleEnum.MarketPersion,
IsLeave = 1
});
string QCreateBys = "";
QCreateBys = string.Join(",", markerUserList?.Select(qitem => qitem.Id));
//普通市场人员
if (base.UserInfo.IsMarket == 1 && base.UserInfo.IsManager == 0)
{
demodel.CreateBy = base.UserInfo.Id;
}
int qCreateBy = base.ParmJObj.GetInt("CreateBy");
if (qCreateBy > 0)
{
QCreateBys = qCreateBy.ToString();
}
if (!string.IsNullOrEmpty(QCreateBys))
{
demodel.QCreateBys = QCreateBys.TrimStart(',').TrimEnd(',');
}
}
//课程顾问部
if (demodel.QueryTpye == 1)
{
demodel.BelongType = 0;
}
if (demodel.QueryTpye == 2)
{
}
var list = studentStatModule.GetStudentFollowUpPageModule_V2(1, 1000000, out long count, demodel);
var QueryTpye = base.ParmJObj.GetInt("QueryTpye");
string excelName = "学员跟进表.xls";
try
{
ExcelDataSource header = new ExcelDataSource
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn("学生"){ CellWidth=15},
new ExcelColumn("报名日期"){ CellWidth=15},
new ExcelColumn("职业"){ CellWidth=15},
new ExcelColumn("目的"){ CellWidth=10},
new ExcelColumn("班主任"){ CellWidth=15},
new ExcelColumn("课程名称"){ CellWidth=20},
new ExcelColumn("初报级别") { CellWidth = 15},
new ExcelColumn("金额") { CellWidth = 15 },
new ExcelColumn("基本情况") { CellWidth = 15 },
new ExcelColumn("续费课程") { CellWidth = 15 },
new ExcelColumn("续费级别") { CellWidth = 15 },
new ExcelColumn("续费金额") { CellWidth = 15 },
new ExcelColumn("负责人") { CellWidth = 15 }
}
};
slist.Add(header);
var rootObj = JObject.Parse(JsonHelper.Serialize(list));
var arrayList = Common.Plugin.JsonHelper.DeserializeObject<List<StudentFollowStatic>>(rootObj.GetStringValue("RList"));
if (arrayList != null && arrayList.Count > 0)
{
foreach (var item in arrayList)
{
string teacherNamager = item.AssistList?.FirstOrDefault(x => x.AssistType == AssistTypeEnum.Teacher)?.AssistName ?? "";
var columns = new List<ExcelColumn>
{
new ExcelColumn(item.StuName),
};
columns.Add(new ExcelColumn(item.CreateTime));
columns.Add(new ExcelColumn(item.StuProfession));
columns.Add(new ExcelColumn(item.StuPurposeName));
columns.Add(new ExcelColumn(teacherNamager));
columns.Add(new ExcelColumn(item.CourseName));
columns.Add(new ExcelColumn(item.CourseRateName ?? ""));
columns.Add(new ExcelColumn(item.PreferPrice.ToString("")));
string followStr = "";
if (item.FollowList != null)
{
var rootObjF = JsonHelper.Serialize(item.FollowList);
var followList = Common.Plugin.JsonHelper.DeserializeObject<List<RB_Student_Follow_Extend>>(rootObjF);
foreach (var itemF in followList)
{
followStr += (!string.IsNullOrWhiteSpace(followStr) ? ("\r\n") : "") + (HtmlHelper.StripHT(itemF.Remark) + " [" + item.CreateTime + "]");
}
}
columns.Add(new ExcelColumn(followStr));
string rCourseNameStr = "";
string rCourseLevelStr = "";
string rCoursePriceStr = "";
if (item.RenewOrderList != null)
{
var rootObjF = JsonHelper.Serialize(item.RenewOrderList);
var renewOrderList = Common.Plugin.JsonHelper.DeserializeObject<List<RB_Student_ViewModel>>(rootObjF);
foreach (var itemR in renewOrderList)
{
rCourseNameStr += (!string.IsNullOrWhiteSpace(rCourseNameStr) ? ("\r\n") : "") + (itemR.CourseName);
rCourseLevelStr += (!string.IsNullOrWhiteSpace(rCourseLevelStr) ? ("\r\n") : "") + (itemR.CourseRate > 0 ? Common.Plugin.EnumHelper.ToName((CourseRateEnum)itemR.CourseRate) : "-");
rCoursePriceStr += (!string.IsNullOrWhiteSpace(rCoursePriceStr) ? ("\r\n") : "") + (itemR.PreferPrice.ToString(""));
}
}
columns.Add(new ExcelColumn(rCourseNameStr));
columns.Add(new ExcelColumn(rCourseLevelStr));
columns.Add(new ExcelColumn(rCoursePriceStr));
columns.Add(new ExcelColumn(item.CreateByName));
var dataRow = new ExcelDataSource()
{
ExcelRows = columns
};
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>
/// 下载学员跟进信息
......
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