Commit 2becfa7e authored by 黄奎's avatar 黄奎

页面修改

parent a27c1b6f
......@@ -380,5 +380,15 @@ namespace Edu.Model.ViewModel.User
/// 同业编号
/// </summary>
public int CategoryId { get; set; }
/// <summary>
/// 课程顾问跟进状态名称
/// </summary>
public string AdvisorStatusName { get; set; }
/// <summary>
/// 课程顾问跟进信息列表
/// </summary>
public List<RB_Student_Advisor_Extend> AdvisorList { get; set; }
}
}
\ No newline at end of file
......@@ -256,6 +256,11 @@ namespace Edu.Module.User
{
QNeedsId = needIds
});
//课程顾问跟进信息
List<RB_Student_Advisor_Extend> advisorList = student_AdvisorRepository.GetStudentAdvisorListRepository(new RB_Student_Advisor_Extend() { QStuIds = stuIds });
foreach (var item in list)
{
var tempOrderList = stuOrderList?.Where(qitem => qitem.Student_Id == item.StuId)?.ToList();
......@@ -311,6 +316,7 @@ namespace Edu.Module.User
item.StuChannelName = channelList?.FirstOrDefault(qitem => qitem.Id == item.StuChannel)?.Name ?? "";
item.StuPurposeName = goalList?.FirstOrDefault(qitem => qitem.Id == item.StuPurpose)?.Name ?? "";
item.StuNeedsName = needList?.FirstOrDefault(qitem => qitem.Id == item.StuNeeds)?.Name ?? "";
item.AdvisorList = advisorList?.Where(qitem => qitem.StuId == item.StuId)?.ToList() ?? new List<RB_Student_Advisor_Extend>();
}
}
return list;
......
......@@ -62,6 +62,11 @@ namespace Edu.Module.User
/// </summary>
private readonly RB_LearningGoalsRepository learningGoalsRepository = new RB_LearningGoalsRepository();
/// <summary>
/// 课程顾问跟进仓储层对象
/// </summary>
private readonly RB_Student_AdvisorRepository student_AdvisorRepository = new RB_Student_AdvisorRepository();
#region 学员跟进
......@@ -73,10 +78,11 @@ namespace Edu.Module.User
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public object GetStudentFollowUpPageList(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
public object GetStudentFollowUpPageModule(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
{
object Robj = new object();
var slist = student_OrderGuestRepository.GetStudentFollowUpPageList(pageIndex, pageSize, out count, demodel);
var slist = student_OrderGuestRepository.GetStudentFollowUpPageRepository(pageIndex, pageSize, out count, demodel);
if (slist.Any())
{
string stuIds = string.Join(",", slist.Select(x => x.StuId));
......@@ -121,7 +127,7 @@ namespace Edu.Module.User
}
//同业录入列表
List<Model.ViewModel.Customer.RB_Customer_Extend> customerList = new List<Model.ViewModel.Customer.RB_Customer_Extend>();
List<RB_Customer_Extend> customerList = new List<Model.ViewModel.Customer.RB_Customer_Extend>();
List<int> customerIdList = Common.ConvertHelper.StringToList(string.Join(",", slist.Where(qitem => qitem.CreateType == StuCreateTypeEnum.CustomerInput).Select(qitem => qitem.StuSourceId)));
if (customerIdList != null && customerIdList.Count > 0)
{
......@@ -147,6 +153,8 @@ namespace Edu.Module.User
QChannelIds = channelIds
});
//课程顾问跟进信息
List<RB_Student_Advisor_Extend> advisorList = student_AdvisorRepository.GetStudentAdvisorListRepository(new RB_Student_Advisor_Extend() { QStuIds = stuIds });
#region 组装数据
int MaxMonth = 2;//最大月份
//数据
......@@ -220,10 +228,11 @@ namespace Edu.Module.User
{
item.StuSourceIdName = transStudentList?.FirstOrDefault(qitem => qitem.StuId == item.StuSourceId)?.StuName ?? "";
}
item.CreateByName = accountList?.FirstOrDefault(qitem => qitem.Id == item.CreateBy)?.AccountName ?? "";
item.StuChannelName = channelList?.FirstOrDefault(qitem => qitem.Id == item.StuChannel)?.Name ?? "";
item.StuPurposeName = goalList?.FirstOrDefault(qitem => qitem.Id == item.StuPurpose)?.Name ?? "";
item.AdvisorList = advisorList?.Where(qitem => qitem.StuId == item.StuId)?.ToList();
var StuObj = new
{
item.StuId,
......@@ -257,6 +266,11 @@ namespace Edu.Module.User
item.EnterpriseName,
item.StuPurpose,
item.StuPurposeName,
item.AdvisorWinRate,
item.AdvisorExpectDate,
item.AdvisorStatus,
item.AdvisorStatusName,
item.AdvisorList,
};
RList.Add(StuObj);
}
......@@ -307,7 +321,7 @@ namespace Edu.Module.User
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public object GetStudentConsultPageList(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
public List<object> GetStudentConsultPageList(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
{
List<object> RList = new List<object>();
var slist = student_OrderGuestRepository.GetStudentConsultPageList(pageIndex, pageSize, out count, demodel);
......
......@@ -240,11 +240,12 @@ WHERE 1=1
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT t.*,g.GroupName,s.SName,IFNULL(a.Account,'') AS StudentAccount ,c.CustomerName
SELECT t.*,g.GroupName,s.SName,IFNULL(a.Account,'') AS StudentAccount ,c.CustomerName,IFNULL(B.Name,'') AS AdvisorStatusName
FROM rb_student AS t LEFT JOIN rb_group AS g ON t.Group_Id=g.GId
LEFT JOIN rb_school AS s ON t.School_Id=s.SId
left join rb_customer c on c.CustomerId = t.CustomerId
LEFT JOIN rb_customer c on c.CustomerId = t.CustomerId
LEFT JOIN rb_account as a ON (t.StuId=a.AccountId AND a.AccountType=4 )
LEFT JOIN rb_student_advisorconfig AS b ON t.AdvisorStatus=B.Id
WHERE 1=1
");
if (query != null)
......
......@@ -337,7 +337,7 @@ where sog.Status =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and IFNULL(o
/// <param name="count"></param>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_Student_ViewModel> GetStudentFollowUpPageList(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
public List<RB_Student_ViewModel> GetStudentFollowUpPageRepository(int pageIndex, int pageSize, out long count, RB_Student_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = " 1=1 and s.Status =0 and c.CourseId <>1";//排除内部班课程
......@@ -456,18 +456,19 @@ where sog.Status =0 and o.Group_Id ={group_Id} and o.OrderState <>3 and IFNULL(o
}
string sql = $@"
SELECT s.StuId,s.StuName,s.StuTel,s.FirstEnrollDate,s.StuRealMobile,s.StuPurpose,s.QQ,DATE_FORMAT(ec.CreateTime,'%Y-%m-%d') as followUpTime,
c.CourseId,c.CourseName,s.JapanBaseInfo,s.StuBirth,org.GuestState as StuGuestState,s.StuChannel,s.CreateType,s.StuSourceId,s.CreateBy
SELECT s.StuId,s.StuName,s.StuTel,s.FirstEnrollDate,s.StuRealMobile,s.StuPurpose,s.QQ,DATE_FORMAT(ec.CreateTime,'%Y-%m-%d') as followUpTime
,c.CourseId,c.CourseName,s.JapanBaseInfo,s.StuBirth,org.GuestState as StuGuestState,s.StuChannel,s.CreateType,s.StuSourceId,s.CreateBy
,s.AdvisorStatus,s.AdvisorWinRate,s.AdvisorExpectDate,IFNULL(B.Name,'') AS AdvisorStatusName
FROM rb_student s
INNER JOIN rb_student_orderguest og on og.Student_Id = s.StuId
INNER JOIN (SELECT og.Student_Id,MAX(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
INNER JOIN rb_order_guest org on org.Id = og.GuestId
INNER JOIN rb_order o on og.OrderId = o.OrderId
inner join rb_class cl on cl.ClassId = o.ClassId
INNER JOIN rb_course c on o.CourseId = c.CourseId
LEFT JOIN rb_education_contract ec on ec.GuestId = og.GuestId";
INNER JOIN rb_student_orderguest og on og.Student_Id = s.StuId
INNER JOIN (SELECT og.Student_Id,MAX(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
INNER JOIN rb_order_guest org on org.Id = og.GuestId
INNER JOIN rb_order o on og.OrderId = o.OrderId
inner join rb_class cl on cl.ClassId = o.ClassId
INNER JOIN 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
";
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'";
......
......@@ -19,6 +19,7 @@ using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
namespace Edu.WebApi.Controllers.User
{
......@@ -92,7 +93,7 @@ namespace Edu.WebApi.Controllers.User
}
}
var list = studentStatModule.GetStudentFollowUpPageList(pmodel.PageIndex, pmodel.PageSize, out long count, demodel);
var list = studentStatModule.GetStudentFollowUpPageModule(pmodel.PageIndex, pmodel.PageSize, out long count, demodel);
pmodel.Count = count;
pmodel.PageData = list;
return ApiResult.Success("", pmodel);
......@@ -111,7 +112,32 @@ namespace Edu.WebApi.Controllers.User
{
var userInfo = base.UserInfo;
ResultPageModel pmodel = JsonHelper.DeserializeObject<ResultPageModel>(base.RequestParm.Msg.ToString());
RB_Student_ViewModel demodel = JsonHelper.DeserializeObject<RB_Student_ViewModel>(base.RequestParm.Msg.ToString());
RB_Student_ViewModel demodel = new RB_Student_ViewModel()
{
BelongType=base.ParmJObj.GetInt("BelongType"),
ConsultantId=base.ParmJObj.GetInt("ConsultantId"),
EFTime=base.ParmJObj.GetStringValue("EFTime"),
IsQueryMyStu=base.ParmJObj.GetInt("IsQueryMyStu"),
QQ=base.ParmJObj.GetStringValue("QQ"),
Q_EnrollState=base.ParmJObj.GetInt("Q_EnrollState"),
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"),
StuStage=base.ParmJObj.GetInt("StuStage"),
StuType=base.ParmJObj.GetInt("StuType"),
WeChatNo=base.ParmJObj.GetStringValue("WeChatNo"),
};
List<int> empIds = new List<int>();
string createIds = base.ParmJObj.GetStringValue("CreateIds");
if (!string.IsNullOrEmpty(createIds))
{
empIds = JsonHelper.DeserializeObject<List<int>>(createIds);
}
demodel.CreateIds = empIds;
demodel.Group_Id = userInfo.Group_Id;
if (demodel.IsQueryMyStu == 1)
{
......@@ -135,6 +161,102 @@ namespace Edu.WebApi.Controllers.User
return ApiResult.Success("", pmodel);
}
/// <summary>
/// 下载客人咨询信息
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult DownLoadStudentConsult()
{
List<ExcelDataSource> slist = new List<ExcelDataSource>();
RB_Student_ViewModel demodel = new RB_Student_ViewModel()
{
BelongType = base.ParmJObj.GetInt("BelongType"),
ConsultantId = base.ParmJObj.GetInt("ConsultantId"),
EFTime = base.ParmJObj.GetStringValue("EFTime"),
IsQueryMyStu = base.ParmJObj.GetInt("IsQueryMyStu"),
QQ = base.ParmJObj.GetStringValue("QQ"),
Q_EnrollState = base.ParmJObj.GetInt("Q_EnrollState"),
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"),
StuStage = base.ParmJObj.GetInt("StuStage"),
StuType = base.ParmJObj.GetInt("StuType"),
WeChatNo = base.ParmJObj.GetStringValue("WeChatNo"),
};
List<int> empIds = new List<int>();
string createIds = base.ParmJObj.GetStringValue("CreateIds");
if (!string.IsNullOrEmpty(createIds))
{
empIds = JsonHelper.DeserializeObject<List<int>>(createIds);
}
demodel.CreateIds = empIds;
demodel.Group_Id = base.UserInfo.Group_Id;
if (demodel.IsQueryMyStu == 1)
{
demodel.CreateBy = base.UserInfo.Id;
}
else
{
if (demodel.BelongType == 1)
{
demodel.BelongType = 0;//暂先查全部
}
if (demodel.BelongType > 1)
{
demodel.CreateBy = base.UserInfo.Id;
}
}
var list = studentStatModule.GetStudentConsultPageList(1, 1000000, out long count, demodel);
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=15},
new ExcelColumn("渠道来源"){ CellWidth=20},
new ExcelColumn("日语基础"){ CellWidth=20},
new ExcelColumn("规划课程及报价"){ CellWidth=20},
new ExcelColumn("客户情况分析"){ CellWidth=50},
new ExcelColumn("顾问跟进备注"){ CellWidth=50},
}
};
slist.Add(header);
foreach (var item in list)
{
JObject dObj = JObject.Parse(JsonHelper.Serialize(item));
var columns = new List<ExcelColumn>();
columns.Add(new ExcelColumn(dObj.GetStringValue("StuName"));
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);
}
}
#endregion
}
}
......@@ -762,7 +762,12 @@ namespace Edu.WebApi.Controllers.User
item.StuRealMobile,
item.OrderCount,
item.RenewOrderCount,
item.EnterpriseName
item.EnterpriseName,
item.AdvisorExpectDate,
item.AdvisorStatus,
item.AdvisorStatusName,
item.AdvisorList,
item.AdvisorWinRate,
});
}
pageModel.Count = rowsCount;
......
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