Commit e8889ae9 authored by 黄奎's avatar 黄奎

页面修改

parent 8859e844
......@@ -36,7 +36,7 @@ namespace Edu.Model.Entity.User
public decimal AttendClassHourScore { get; set; }
/// <summary>
/// 线上与学生互动
/// 微信互动次
/// </summary>
public decimal OnLineInteractive { get; set; }
......
......@@ -10,6 +10,11 @@ namespace Edu.Model.ViewModel.Customer
/// </summary>
public class RB_Student_Follow_Extend : RB_Student_Follow
{
/// <summary>
/// 学员姓名
/// </summary>
public string StuName { get; set; }
/// <summary>
/// 学员编号【查询使用】
/// </summary>
......@@ -49,5 +54,10 @@ namespace Edu.Model.ViewModel.Customer
/// 单资源回访平均数~~~就是一条资源跟进了几次 【平均】
/// </summary>
public decimal AgFollow { get; set; }
/// <summary>
/// 查询指定日期跟进记录
/// </summary>
public string QueryDate { get; set; }
}
}
......@@ -235,5 +235,13 @@ namespace Edu.Model.ViewModel.Sell
/// 学员数量
/// </summary>
public int StudentNum { get; set; }
/// <summary>
/// 是否查询快毕业的学生
/// </summary>
public int IsImmediatelyGraduate
{
get; set;
}
}
}
......@@ -142,6 +142,7 @@ namespace Edu.Module.Course
/// 合同
/// </summary>
private readonly RB_Education_ContractRepository education_ContractRepository = new RB_Education_ContractRepository();
/// <summary>
/// 合同协调金额
/// </summary>
......
......@@ -95,11 +95,6 @@ namespace Edu.Module.Course
/// </summary>
private readonly ClassModule classModule = new ClassModule();
/// <summary>
/// 账号处理类
/// </summary>
private readonly User.AccountModule accountModule = new User.AccountModule();
/// <summary>
/// 课程优惠信息
/// </summary>
......@@ -115,24 +110,6 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_Education_ReceiptRepository education_ReceiptRepository = new RB_Education_ReceiptRepository();
/// <summary>
/// 学员协助
/// </summary>
private readonly RB_Student_AssistRepository student_AssistRepository = new RB_Student_AssistRepository();
/// <summary>
/// 同业
/// </summary>
private readonly RB_CustomerRepository customerRepository = new RB_CustomerRepository();
/// <summary>
/// 学生仓储层对象
/// </summary>
private readonly RB_StudentRepository studentRepository = new RB_StudentRepository();
/// <summary>
/// 约课记录
/// </summary>
private readonly RB_Scroll_AppointmentRepository scroll_AppointmentRepository = new RB_Scroll_AppointmentRepository();
/// <summary>
/// 计算学员退课金额
/// </summary>
......@@ -460,93 +437,6 @@ namespace Edu.Module.Course
public List<RB_Order_Guest_Extend> GetAllStudentPageModule(int pageIndex, int pageSize, out long rowsCount, RB_Order_Guest_Extend demodel)
{
var orderstudentList = order_GuestRepository.GetAllStudentPageRepository(pageIndex, pageSize, out rowsCount, demodel);
if (orderstudentList.Any())
{
//课程顾问 协助老师 负责人; 客户来源 来源关联人
string stuIds = string.Join(",", orderstudentList.Select(x => x.StuId).Distinct().ToList());
//协助人员列表
var assistList = student_AssistRepository.GetStudentAssistListRepository(new Model.ViewModel.Customer.RB_Student_Assist_Extend()
{
QStuIds = stuIds
});
//内部介绍人
List<int> empIdList = Common.ConvertHelper.StringToList(string.Join(",", orderstudentList.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);
}
if (empIdList != null && empIdList.Count > 0)
{
accountList = accountModule.GetAccountListExtModule(new RB_Account_ViewModel() { QIds = string.Join(",", empIdList) });
}
//同业录入列表
List<Model.ViewModel.Customer.RB_Customer_Extend> customerList = new List<Model.ViewModel.Customer.RB_Customer_Extend>();
List<int> customerIdList = Common.ConvertHelper.StringToList(string.Join(",", orderstudentList.Where(qitem => qitem.CreateType == StuCreateTypeEnum.CustomerInput).Select(qitem => qitem.StuSourceId)));
if (customerIdList != null && customerIdList.Count > 0)
{
customerList = customerRepository.GetCustomerListRepository(new Model.ViewModel.Customer.RB_Customer_Extend()
{
CustomerIds = string.Join(",", customerIdList)
});
}
List<RB_Student_ViewModel> transStudentList = new List<RB_Student_ViewModel>();
//转介人列表
List<int> transIdList = Common.ConvertHelper.StringToList(string.Join(",", orderstudentList.Where(qitem => qitem.CreateType == StuCreateTypeEnum.TransIntroduction).Select(qitem => qitem.StuSourceId)));
if (transIdList != null && transIdList.Count > 0)
{
transStudentList = studentRepository.GetStudentListRepository(new RB_Student_ViewModel()
{
StuIds = string.Join(",", transIdList)
});
}
string GuestIds = string.Join(",", orderstudentList.Select(x => x.Id));
var appointList = scroll_AppointmentRepository.GetAppointList(new Model.ViewModel.Scroll.RB_Scroll_Appointment_ViewModel() { Group_Id = demodel.Group_Id, GuestIds = GuestIds, State = CourseAppointStateEnum.WaitCourse });
foreach (var item in orderstudentList)
{
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;
if (item.CreateType == StuCreateTypeEnum.InternalIntroduction)
{
item.StuSourceIdName = accountList?.FirstOrDefault(qitem => qitem.Id == item.StuSourceId)?.AccountName ?? "";
}
else if (item.CreateType == StuCreateTypeEnum.CustomerInput)
{
var tempCustomer = customerList?.FirstOrDefault(qitem => qitem.CustomerId == item.StuSourceId);
item.StuSourceIdName = tempCustomer?.CustomerName ?? "";
if (tempCustomer != null)
{
if (tempCustomer.CustomerType == Common.Enum.Customer.CatetoryTypeEnum.Other)
{
item.EnterpriseName = tempCustomer?.EnterpriseName ?? "";
}
else
{
item.EnterpriseName = tempCustomer?.CategoryName ?? "";
}
}
else
{
item.EnterpriseName = "";
}
}
else if (item.CreateType == StuCreateTypeEnum.TransIntroduction)
{
item.StuSourceIdName = transStudentList?.FirstOrDefault(qitem => qitem.StuId == item.StuSourceId)?.StuName ?? "";
}
item.AppointNum = appointList.Where(x => x.GuestId == item.Id)?.Count() ?? 0;
}
}
return orderstudentList;
}
......
......@@ -4,12 +4,16 @@ using Edu.Common.Enum.System;
using Edu.Common.Enum.User;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.ViewModel.Contract;
using Edu.Model.ViewModel.Customer;
using Edu.Model.ViewModel.Mall;
using Edu.Model.ViewModel.Sell;
using Edu.Model.ViewModel.User;
using Edu.Repository.Contract;
using Edu.Repository.Customer;
using Edu.Repository.Mall;
using Edu.Repository.Reserve;
using Edu.Repository.Sell;
using Edu.Repository.System;
using Edu.Repository.User;
using System;
......@@ -118,6 +122,42 @@ namespace Edu.Module.User
/// </summary>
private readonly RB_Student_AdvisorRepository student_AdvisorRepository = new RB_Student_AdvisorRepository();
/// <summary>
/// 订单客人仓储层
/// </summary>
private readonly RB_Order_GuestRepository order_GuestRepository = new RB_Order_GuestRepository();
/// <summary>
/// 订单仓储层对象
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 订单拆分仓储层对象
/// </summary>
private readonly RB_Order_SplitDetailsRepository splitDetailsRepository = new RB_Order_SplitDetailsRepository();
/// <summary>
/// 订单备注
/// </summary>
private readonly RB_Order_RemarkRepository order_RemarkRepository = new RB_Order_RemarkRepository();
/// <summary>
/// 合同
/// </summary>
private readonly RB_Education_ContractRepository education_ContractRepository = new RB_Education_ContractRepository();
/// <summary>
/// 业绩提成
/// </summary>
private readonly RB_Sell_Achievements_EmpRepository sell_Achievements_EmpRepository = new RB_Sell_Achievements_EmpRepository();
/// <summary>
/// 订单返佣仓储层对象
/// </summary>
private readonly RB_Order_ReturnComissionRepository returnComissionRepository = new RB_Order_ReturnComissionRepository();
/// <summary>
/// 获取学生列表
/// </summary>
......@@ -185,8 +225,8 @@ namespace Edu.Module.User
var visitList = student_VisitRepository.GetStudentVisitStatic_V2Repository(new RB_Student_Visit_Extend()
{
QStuIds = stuIds,
StartDate=query.StartTime,
EndDate=query.EndTime,
StartDate = query.StartTime,
EndDate = query.EndTime,
});
//学员试听统计
var stuReserveList = visitor_ReserveRepository.GetStuReserveStaticsListRepository(new Model.ViewModel.Reserve.RB_Visitor_Reserve_Extend()
......@@ -260,7 +300,7 @@ namespace Edu.Module.User
QNeedsId = needIds
});
//课程顾问跟进信息
List<RB_Student_Advisor_Extend> advisorList = student_AdvisorRepository.GetStudentAdvisorListRepository(new RB_Student_Advisor_Extend() { QStuIds = stuIds });
......@@ -477,7 +517,7 @@ namespace Edu.Module.User
{
QStudentIds = extModel.StuId.ToString()
});
extModel.OrderCount = stuOrderList?.Count() ?? 0;
extModel.AssistList = assistList;
extModel.StuStageName = stageRepository.GetEntity(extModel.StuStage)?.StageName ?? "";
......@@ -653,11 +693,13 @@ namespace Edu.Module.User
public List<RB_Student_ViewModel> GetStudentInfoModule(int Student_Id, int Group_Id)
{
var list = studentRepository.GetStudentInfoRepository(Student_Id, Group_Id);
if (list.Where(x => x.ClassScrollType == 2).Any()) {
if (list.Where(x => x.ClassScrollType == 2).Any())
{
//有滚动开班的
string GuestIds = string.Join(",", list.Where(x => x.ClassScrollType == 2).Select(x => x.GuestId));
var glist = studentRepository.GetStudentClassNumber(GuestIds, Group_Id);
foreach (var item in list) {
foreach (var item in list)
{
item.CompleteHours = glist.Where(x => x.GuestId == item.GuestId).FirstOrDefault()?.CompleteHours ?? item.CompleteHours;
item.SuspendNum = Convert.ToInt32(item.TotalHours - item.CompleteHours);
......@@ -1234,13 +1276,276 @@ namespace Edu.Module.User
item.StuId,
item.StuName,
item.CreateBy,
EmployeeName= tempEmp?.AccountName,
CreateTime=Common.ConvertHelper.FormatTime(item.CreateTime),
EmployeeName = tempEmp?.AccountName,
CreateTime = Common.ConvertHelper.FormatTime(item.CreateTime),
item.Feedback,
});
}
}
return result;
}
/// <summary>
/// 获取马上要毕业的学生
/// </summary>
/// <returns></returns>
public List<object> GetStraightwayGraduateStudentModule(int pageIndex, int pageSize, out long rowsCount, int UserId)
{
List<object> result = new List<object>();
var list = order_GuestRepository.GetAllStudentPageRepository(pageIndex, pageSize, out rowsCount, new Model.ViewModel.Sell.RB_Order_Guest_Extend()
{
IsImmediatelyGraduate = 1,
CreateBy = UserId
});
if (list != null && list.Count > 0)
{
foreach (var item in list)
{
result.Add(new
{
item.Id,
item.GuestName,
Mobile = item.StuRealMobile,
item.ContractId,
item.ContractNo,
item.ClassId,
item.ClassName,
item.CourseId,
item.CourseName,
item.Teacher_Id,
item.TeacherName,
item.OrderId,
OrderTime = Common.ConvertHelper.FormatTime(item.OrderTime),
item.EnterID,
item.EnterName,
item.PreferPrice,
item.Income,
item.Refund,
item.TotalHours,
item.ValidClassHours,
item.CompleteHours,
item.SurplusHours,
item.MakeUpHours,
item.AbsenceNum,
item.LeaveNum,
item.EventlogNum,
item.GuestState,
item.GuestStateStr,
GraduationTime = Common.ConvertHelper.FormatDate(item.GraduationTime),
item.School_Id,
item.JoinType,
item.JoinTypeStr,
item.Student_Id,
item.CourseRate,
CourseRateName = item.CourseRate.ToName().Replace("课程", ""),
item.StuCreateBy,
item.StuCreateByName,
AssistList = item.AssistList.Select(qitem => new
{
qitem.Id,
qitem.StuId,
qitem.AssistId,
qitem.AssistName,
qitem.AssistType,
AssistTypeName = qitem.AssistType.ToName()
}),
item.StuChannelId,
item.StuChannelName,
item.CreateType,
CreateTypeName = item.CreateType.ToName(),
item.StuSourceId,
item.StuSourceIdName,
item.EnterpriseName,
item.CourseChapterNo,
item.AppointNum
});
}
}
return result;
}
/// <summary>
/// 今日被跟进学员(被跟进的学员所有协助人可见)
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <returns></returns>
public List<object> GetTodayFollowStudentModule(int pageIndex, int pageSize, out long rowsCount, int UserId)
{
List<object> result = new List<object>();
var query = new RB_Student_Follow_Extend()
{
QueryDate = Common.ConvertHelper.FormatDate(DateTime.Now),
CreateBy = UserId
};
var list = followRepository.GetStudentFollowPageRepository(pageIndex, pageSize, out rowsCount, query);
if (list != null)
{
string createIds = string.Join(",", list.Select(qitem => qitem.CreateBy));
var empList = new List<RB_Account_ViewModel>();
if (!string.IsNullOrEmpty(createIds))
{
empList = accountModule.GetAccountListExtModule(new RB_Account_ViewModel() { QIds = createIds });
}
foreach (var item in list)
{
var tempEmp = empList?.FirstOrDefault(qitem => qitem.Id == item.CreateBy)?.AccountName ?? "";
result.Add(new
{
item.Id,
item.StuId,
item.StuName,
item.Remark,
CreateByName = tempEmp,
CreateTime = Common.ConvertHelper.FormatTime(item.CreateTime)
});
}
}
return result;
}
/// <summary>
/// 获取未完成的订单
/// </summary>
/// <returns></returns>
public List<RB_Order_ViewModel> GetOrderNotModule(int pageIndex, int pageSize, out long rowsCount,int UserId)
{
var query = new RB_Order_ViewModel()
{
Q_OrderState=1,
Q_NotCollect=1,
CreateBy=UserId
};
//获取订单列表
var orderList = orderRepository.GetOrderPageRepository(pageIndex, pageSize, out rowsCount, query);
if (orderList.Any())
{
string orderIds = string.Join(",", orderList.Select(x => x.OrderId));
//学员信息
List<RB_Student_ViewModel> stuList = studentRepository.GetStudentListRepository(new RB_Student_ViewModel() { QOrderIds = orderIds }, isQueryCreateType: true);
List<int> idList = new List<int>();
List<RB_Order_ViewModel> sourceTargetList = new List<RB_Order_ViewModel>();
var sourceOrderIdList = Common.ConvertHelper.StringToList(string.Join(",", orderList.Select(x => x.SourceOrderId)));
if (sourceOrderIdList != null && sourceOrderIdList.Count > 0)
{
idList.AddRange(sourceOrderIdList);
}
var targetOrderIdList = Common.ConvertHelper.StringToList(string.Join(",", orderList.Select(x => x.TargetOrderId)));
if (targetOrderIdList != null && targetOrderIdList.Count > 0)
{
idList.AddRange(targetOrderIdList);
}
List<RB_Order_SplitDetails_ViewModel> splitList = new List<RB_Order_SplitDetails_ViewModel>();
var firstOrderList = Common.ConvertHelper.StringToList(string.Join(",", orderList.Where(qitem => qitem.FirstOrderId > 0).Select(x => x.FirstOrderId)));
if (firstOrderList != null && firstOrderList.Count > 0)
{
splitList = splitDetailsRepository.GetOrderSplitDetailsListRepository(new RB_Order_SplitDetails_ViewModel()
{
Q_OldOrderIds = string.Join(",", firstOrderList)
});
}
if (idList != null && idList.Count > 0)
{
string ids = string.Join(",", idList);
sourceTargetList = orderRepository.GetOrderListRepository(new RB_Order_ViewModel { QOrderIds = ids });
}
//获取备注列表
var remarkList = order_RemarkRepository.GetOrderRemarkListRepository(new RB_Order_Remark_ViewModel() { QOrderIds = orderIds });
//获取名单列表
var guestList = order_GuestRepository.GetOrderGuestListRepository(new RB_Order_Guest_ViewModel() { OrderIds = orderIds });
//获取合同列表
var clist = education_ContractRepository.GetList(new RB_Education_Contract_ViewModel() { OrderIds = orderIds, Status = -1 }).Where(x => x.Status != 4).ToList();
//获取新的业绩提成
var achList = sell_Achievements_EmpRepository.GetList(new RB_Sell_Achievements_Emp_ViewModel() { OrderIds = orderIds });
//获取订单的返佣
var rclist = returnComissionRepository.GetOrderReturnComissionListRepositpry(new RB_Order_ReturnComission_ViewModel() { QOrderIds = orderIds });
foreach (var item in orderList)
{
if (item.SourceOrderId > 0)
{
item.SourceClassName = sourceTargetList?.Where(qitem => qitem.OrderId == item.SourceOrderId)?.FirstOrDefault()?.ClassName;
}
if (item.TargetOrderId > 0)
{
item.TargetClassName = sourceTargetList?.Where(qitem => qitem.OrderId == item.TargetOrderId)?.FirstOrDefault()?.ClassName;
}
item.SplitDetailsList = splitList.Where(qitem => qitem.OldOrderId == item.OrderId || qitem.OldOrderId == item.FirstOrderId)?.ToList() ?? new List<RB_Order_SplitDetails_ViewModel>();
item.SaleRemarkList = remarkList.Where(x => x.OrderId == item.OrderId && x.Type == 1).ToList();
item.TeacherRemarkList = remarkList.Where(x => x.OrderId == item.OrderId && x.Type == 2).ToList();
item.RectorRemarkList = remarkList.Where(x => x.OrderId == item.OrderId && x.Type == 3).ToList();
item.DirectorRemarkList = remarkList.Where(x => x.OrderId == item.OrderId && x.Type == 4).ToList();
item.GuestList = guestList.Where(x => x.OrderId == item.OrderId).ToList();
item.ContractList = clist.Where(x => x.OrderId == item.OrderId).ToList();
if (item.GuestList != null && item.GuestList.Count > 0)
{
foreach (var subItem in item.GuestList)
{
var contractModel = clist.Where(x => x.OrderId == item.OrderId && x.GuestId == subItem.Id)?.FirstOrDefault();
subItem.ContractId = contractModel?.Id ?? 0;
subItem.ContractNo = contractModel?.ContractNo ?? "";
subItem.ContractStatus = contractModel?.Status ?? -1;
string ContractStatusStr = "";
if (subItem.ContractStatus == 0)
{
ContractStatusStr = "草稿";
}
else if (subItem.ContractStatus == 1)
{
ContractStatusStr = "提交审核";
}
else if (subItem.ContractStatus == 2)
{
ContractStatusStr = "审核通过";
}
else if (subItem.ContractStatus == 3)
{
ContractStatusStr = "驳回";
}
else if (subItem.ContractStatus == 4)
{
ContractStatusStr = "取消";
}
subItem.ContractStatusStr = ContractStatusStr;
}
}
var achievementList = achList.Where(x => x.OrderId == item.OrderId).ToList();
if (achievementList.Any())
{
item.CommissionMoney = achievementList.Sum(x => x.GiveOutMoney);
item.YFCommission = achievementList.Sum(x => x.PushMoney);
}
var tempStu = stuList?.FirstOrDefault(qitem => qitem.OrderId == item.OrderId);
item.CreateType = tempStu?.CreateType ?? StuCreateTypeEnum.EmployeeInput;
item.StuSourceIdName = tempStu?.StuSourceIdName ?? "";
item.BrokerageMoney = rclist.Where(x => x.OrderId == item.OrderId).Sum(x => x.CommissionMoeny);
}
}
return orderList;
}
/// <summary>
/// 获取未领取合同的订单
/// </summary>
public List<object> GetContractNotModule(int pageIndex, int pageSize, out long rowsCount, int UserId)
{
var query = new RB_Order_ViewModel()
{
};
List<object> result = new List<object>();
rowsCount = 0;
var list = orderRepository.GetNotContractPageRepository(pageIndex, pageSize, out rowsCount, query);
return result;
}
}
}
......@@ -2926,7 +2926,7 @@ namespace Edu.Module.User
//获取老师迟到早退信息
checkList = Edu.ThirdCore.QYWinXin.QYWeiXinHelper.GetWeChatCheckList(workUserIds, newDate);
//获取老师与学员沟通次数
//messageList = Edu.ThirdCore.QYWinXin.QYWeiXinHelper.GetWechatStudentStatic(workUserIds, newDate);
messageList = Edu.ThirdCore.QYWinXin.QYWeiXinHelper.GetWechatStudentStatic(workUserIds, newDate);
int times = 1;
int newDay = newDate.Day;
//本月最后一天
......@@ -2971,8 +2971,8 @@ namespace Edu.Module.User
FinishFollow= procModel?.FinishFollow??0,
TotalFollow = procModel?.TotalFollow ?? 0,
};
newModel.OnLineInteractive = GetTeacherAndStudentScore(newModel.FinishFollow, newModel.TotalFollow);
newModel.OnLineInteractive = newModel.OnLineInteractiveScore;
newModel.OnLineInteractive = messageList?.FirstOrDefault(qitem => qitem.Acctid == item.WorkUserId)?.MessageCount ?? 0;
newModel.OnLineInteractiveScore = GetTeacherAndStudentScore(newModel.FinishFollow, newModel.TotalFollow); ;
//newModel.N5ClassHours = procModel?.N5ClassHours ?? 0;
//newModel.N5ClassHoursScore = procModel?.N5ClassHoursScore ?? 0;
//newModel.N4ClassHours = procModel?.N4ClassHours ?? 0;
......@@ -3345,8 +3345,8 @@ namespace Edu.Module.User
MonthStr = newDate.Month,
TeacherId = 0,
};
newModel2.OnLineInteractive = GetTeacherAndStudentScore(newModel2.FinishFollow, newModel2.TotalFollow);
newModel2.OnLineInteractiveScore = newModel2.OnLineInteractive;
newModel2.OnLineInteractive = messageList?.Sum(qitem => qitem.MessageCount) ?? 0;
newModel2.OnLineInteractiveScore = GetTeacherAndStudentScore(newModel2.FinishFollow, newModel2.TotalFollow);
newModel2.TeacherBeLate = checkList?.Where(qitem => qitem.ExceptionCount > 0)?.Count() ?? 0;
newModel2.TeacherBeLateScore = newModel2.TeacherBeLate;
......
......@@ -338,28 +338,7 @@ left join {datebaseStr}.rb_tradeway t on f.FrID = t.FinanceId
{
where += $@" AND {nameof(RB_Education_Contract_ViewModel.Status)} NOT IN(0,4) ";
}
//if (demodel.IsAduit == 0)
//{
// if (demodel.Status >= 0)
// {
// where += $@" AND {nameof(RB_Education_Contract_ViewModel.Status)} ={demodel.Status}";
// }
// else
// {
// where += $@" AND {nameof(RB_Education_Contract_ViewModel.Status)} NOT IN(0,4) ";
// }
//}
//else
//{
// if (demodel.CreateBy > 0)
// {
// where += $@" AND {nameof(RB_Education_Contract_ViewModel.CreateBy)} ={demodel.CreateBy}";
// }
// if (demodel.Status >= 0)
// {
// where += $@" AND {nameof(RB_Education_Contract_ViewModel.Status)} ={demodel.Status}";
// }
//}
string sql = $@" SELECT * FROM RB_Education_Contract WHERE {where} ORDER BY Id DESC ";
return GetPage<RB_Education_Contract_ViewModel>(pageIndex, pageSize, out rowsCount, sql, parameters).ToList();
}
......
......@@ -25,8 +25,8 @@ namespace Edu.Repository.Customer
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM RB_Student_Follow AS A
SELECT A.*,stu.StuName
FROM RB_Student_Follow AS A LEFT JOIN rb_student AS stu ON A.StuId=stu.StuId
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Follow_Extend.Status), (int)DateStateEnum.Normal);
......@@ -48,6 +48,14 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0} <='{1} 23:59:59' ", nameof(RB_Student_Follow_Extend.CreateTime), query.ETime);
}
if (!string.IsNullOrEmpty(query.QueryDate))
{
builder.AppendFormat(" AND date_format(A.CreateTime,'%Y-%m-%d')=date_format('{0}','%Y-%m-%d') ", query.QueryDate);
if (query.CreateBy > 0)
{
builder.AppendFormat(" AND (stu.CreateBy={0} OR EXISTS(SELECT 1 FROM rb_student_assist WHERE StuId=A.StuId AND AssistId={0}) ) ", query.CreateBy);
}
}
}
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Student_Follow_Extend.Id));
return GetPage<RB_Student_Follow_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
......
......@@ -1375,5 +1375,26 @@ WHERE 1=1 AND A.OrderState IN(1,2) {0}
dicList.Add("lastMonth", lastMonthList);
return dicList;
}
/// <summary>
/// 获取未领取合同的订单
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Order_ViewModel> GetNotContractPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Order_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*
FROM rb_order AS A
WHERE 1=1
");
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Order_ViewModel.OrderState), (int)OrderStateEnum.Normal);
builder.AppendFormat(" ");
return GetPage<RB_Order_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
}
}
}
using Edu.Common.Enum.Course;
using Edu.Common.Enum.User;
using Edu.Model.Entity.Sell;
using Edu.Model.ViewModel.Grade;
using Edu.Model.ViewModel.Sell;
using Edu.Model.ViewModel.User;
using Edu.Repository.Customer;
using Edu.Repository.Scroll;
using Edu.Repository.User;
using System;
using System.Collections.Generic;
using System.Linq;
......@@ -20,6 +25,28 @@ namespace Edu.Repository.Sell
/// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
/// <summary>
/// 学员协助
/// </summary>
private readonly RB_Student_AssistRepository student_AssistRepository = new RB_Student_AssistRepository();
/// <summary>
/// 同业
/// </summary>
private readonly RB_CustomerRepository customerRepository = new RB_CustomerRepository();
/// <summary>
/// 学生仓储层对象
/// </summary>
private readonly RB_StudentRepository studentRepository = new RB_StudentRepository();
/// <summary>
/// 约课记录
/// </summary>
private readonly RB_Scroll_AppointmentRepository scroll_AppointmentRepository = new RB_Scroll_AppointmentRepository();
/// <summary>
/// 账号管理处理类对象
/// </summary>
private readonly RB_AccountRepository accountRepository = new RB_AccountRepository();
/// <summary>
/// 获取列表
/// </summary>
......@@ -845,7 +872,6 @@ WHERE 1=1 AND A.Status=0 AND class.Status=0 AND class.ClassStatus <>4 AND b.Or
}
else
{
// builder.AppendFormat($@" AND B.{nameof(RB_Order_Guest_Extend.EffectStatus)} >0");
builder.AppendFormat($@" AND A.{nameof(RB_Order_Guest_Extend.GuestState)} ={demodel.EffectStatus.Value}");
}
}
......@@ -882,9 +908,132 @@ WHERE 1=1 AND A.Status=0 AND class.Status=0 AND class.ClassStatus <>4 AND b.Or
{
builder.AppendFormat($@" AND st.StuSourceId ={demodel.StuSourceId}");
}
//查询快毕业的学生 HK 2022-05-09新增
if (demodel.IsImmediatelyGraduate == 1)
{
builder.AppendFormat(" AND A.GuestState<>7 AND (A.TotalHours-A.CompleteHours)<=100 ");
builder.AppendFormat(" AND(st.CreateBy = {0} OR EXISTS(SELECT 1 FROM rb_student_assist WHERE StuId = st.StuId AND AssistId = {0})) ", demodel.CreateBy);
}
builder.AppendFormat($@" order by A.{nameof(RB_Order_Guest_Extend.Id)} desc");
return GetPage<RB_Order_Guest_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
var list= GetPage<RB_Order_Guest_Extend>(pageIndex, pageSize, out rowsCount, builder.ToString()).ToList();
if (list.Any())
{
//课程顾问 协助老师 负责人; 客户来源 来源关联人
string stuIds = string.Join(",", list.Select(x => x.StuId).Distinct().ToList());
//协助人员列表
var assistList = student_AssistRepository.GetStudentAssistListRepository(new Model.ViewModel.Customer.RB_Student_Assist_Extend()
{
QStuIds = stuIds
});
//内部介绍人
List<int> empIdList = Common.ConvertHelper.StringToList(string.Join(",", list.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> EnterIDList = Common.ConvertHelper.StringToList(string.Join(",", list.Select(qitem => qitem.EnterID)));
if (EnterIDList != null && EnterIDList.Count > 0)
{
empIdList.AddRange(EnterIDList);
}
List<int> CreateByList = Common.ConvertHelper.StringToList(string.Join(",", list.Select(qitem => qitem.CreateBy)));
if (CreateByList != null && CreateByList.Count > 0)
{
empIdList.AddRange(CreateByList);
}
List<int> StuCreateByList = Common.ConvertHelper.StringToList(string.Join(",", list.Select(qitem => qitem.StuCreateBy)));
if (StuCreateByList != null && StuCreateByList.Count > 0)
{
empIdList.AddRange(StuCreateByList);
}
if (empIdList != null && empIdList.Count > 0)
{
accountList = accountRepository.GetAccountListExtRepository(new RB_Account_ViewModel() { QIds = string.Join(",", empIdList) });
}
//同业录入列表
List<Model.ViewModel.Customer.RB_Customer_Extend> customerList = new List<Model.ViewModel.Customer.RB_Customer_Extend>();
List<int> customerIdList = Common.ConvertHelper.StringToList(string.Join(",", list.Where(qitem => qitem.CreateType == StuCreateTypeEnum.CustomerInput).Select(qitem => qitem.StuSourceId)));
if (customerIdList != null && customerIdList.Count > 0)
{
customerList = customerRepository.GetCustomerListRepository(new Model.ViewModel.Customer.RB_Customer_Extend()
{
CustomerIds = string.Join(",", customerIdList)
});
}
List<RB_Student_ViewModel> transStudentList = new List<RB_Student_ViewModel>();
//转介人列表
List<int> transIdList = Common.ConvertHelper.StringToList(string.Join(",", list.Where(qitem => qitem.CreateType == StuCreateTypeEnum.TransIntroduction).Select(qitem => qitem.StuSourceId)));
if (transIdList != null && transIdList.Count > 0)
{
transStudentList = studentRepository.GetStudentListRepository(new RB_Student_ViewModel()
{
StuIds = string.Join(",", transIdList)
});
}
string GuestIds = string.Join(",", list.Select(x => x.Id));
var appointList = scroll_AppointmentRepository.GetAppointList(new Model.ViewModel.Scroll.RB_Scroll_Appointment_ViewModel() { Group_Id = demodel.Group_Id, GuestIds = GuestIds, State = CourseAppointStateEnum.WaitCourse });
foreach (var item in list)
{
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;
if (item.CreateType == StuCreateTypeEnum.InternalIntroduction)
{
item.StuSourceIdName = accountList?.FirstOrDefault(qitem => qitem.Id == item.StuSourceId)?.AccountName ?? "";
}
else if (item.CreateType == StuCreateTypeEnum.CustomerInput)
{
var tempCustomer = customerList?.FirstOrDefault(qitem => qitem.CustomerId == item.StuSourceId);
item.StuSourceIdName = tempCustomer?.CustomerName ?? "";
if (tempCustomer != null)
{
if (tempCustomer.CustomerType == Common.Enum.Customer.CatetoryTypeEnum.Other)
{
item.EnterpriseName = tempCustomer?.EnterpriseName ?? "";
}
else
{
item.EnterpriseName = tempCustomer?.CategoryName ?? "";
}
}
else
{
item.EnterpriseName = "";
}
}
else if (item.CreateType == StuCreateTypeEnum.TransIntroduction)
{
item.StuSourceIdName = transStudentList?.FirstOrDefault(qitem => qitem.StuId == item.StuSourceId)?.StuName ?? "";
}
item.AppointNum = appointList.Where(x => x.GuestId == item.Id)?.Count() ?? 0;
if (item.EnterID > 0)
{
item.EnterName = accountList?.FirstOrDefault(qitem=>qitem.Id==item.EnterID)?.AccountName ?? "";
}
if (item.EnterID <= 0 && item.CreateBy > 0)
{
item.EnterName = accountList?.FirstOrDefault(qitem => qitem.Id == item.CreateBy)?.AccountName ?? "";
}
if (item.StuCreateBy > 0)
{
item.StuCreateByName = accountList?.FirstOrDefault(qitem => qitem.Id == item.StuCreateBy)?.AccountName ?? "";
}
}
}
return list;
}
/// <summary>
......
......@@ -138,6 +138,7 @@ SELECT A.*,IFNULL(B.ClassName,'') AS ClassName,IFNULL(B.ClassNo,'') AS ClassNo,I
,IFNULL(D.GuestName,'') AS GuestName,IFNULL(E.CourseName,'') AS CourseName,IFNULL(C.OrderType,0) AS OrderType,IFNULL(C.SourceId,0) AS SourceId,B.ClassScrollType
FROM RB_Student_OrderGuest AS A INNER JOIN rb_order AS C ON A.OrderId=C.OrderId
INNER JOIN rb_order_guest AS D ON A.GuestId=D.Id
LEFT JOIN RB_student AS stu ON A.Student_Id=stu.StuId
LEFT JOIN rb_course AS E ON c.CourseId=E.CourseId
LEFT JOIN rb_class AS B ON A.ClassId=B.ClassId
WHERE 1=1 AND C.OrderState<>3 AND D.Status=0
......
......@@ -76,6 +76,7 @@ namespace Edu.WebApi.Controllers.User
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},
......@@ -111,6 +112,7 @@ namespace Edu.WebApi.Controllers.User
};
columns.Add(new ExcelColumn(dObj.GetStringValue("FinishFollow") +"/"+ dObj.GetStringValue("TotalFollow")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OnLineInteractiveScore")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OnLineInteractive")));
columns.Add(new ExcelColumn(dObj.GetStringValue("AttendClassHourScore")));
columns.Add(new ExcelColumn(dObj.GetStringValue("RenewScore")));
columns.Add(new ExcelColumn(dObj.GetStringValue("UpgradeScore")));
......@@ -197,6 +199,7 @@ namespace Edu.WebApi.Controllers.User
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},
......@@ -234,6 +237,7 @@ namespace Edu.WebApi.Controllers.User
columns.Add(new ExcelColumn(dObj.GetStringValue("FinishFollow") + "/" + dObj.GetStringValue("TotalFollow")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OnLineInteractiveScore")));
columns.Add(new ExcelColumn(dObj.GetStringValue("OnLineInteractive")));
columns.Add(new ExcelColumn(dObj.GetStringValue("AttendClassHourScore")));
columns.Add(new ExcelColumn(dObj.GetStringValue("RenewScore")));
columns.Add(new ExcelColumn(dObj.GetStringValue("UpgradeScore")));
......
......@@ -8,15 +8,18 @@ using Edu.AOP;
using Edu.Cache.User;
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Enum.Course;
using Edu.Common.Enum.System;
using Edu.Common.Enum.User;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.Public;
using Edu.Model.ViewModel.DataStatistics;
using Edu.Model.ViewModel.EduTask;
using Edu.Model.ViewModel.User;
using Edu.Module.Course;
using Edu.Module.Customer;
using Edu.Module.EduTask;
using Edu.Module.User;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Authorization;
......@@ -75,6 +78,11 @@ namespace Edu.WebApi.Controllers.User
/// </summary>
private readonly MarketConsultantModule marketConsultantModule = new MarketConsultantModule();
/// <summary>
/// 教务单据处理类对象
/// </summary>
private readonly EducationReceiptModule educationReceiptModule = AOP.AOPHelper.CreateAOPObject<EducationReceiptModule>();
#region 字典管理
/// <summary>
......@@ -3320,6 +3328,117 @@ namespace Edu.WebApi.Controllers.User
return ApiResult.Success(data: list);
}
/// <summary>
/// 今日需联系学员(之前预约的跟进学员或本周期内需要跟进的学员)
/// </summary>
public ApiResult Get()
{
return ApiResult.Failed();
}
/// <summary>
/// 分配给我的线索 (分配给我,但是没有跟进的线索)
/// </summary>
/// <returns></returns>
public ApiResult MyClue()
{
return ApiResult.Failed();
}
/// <summary>
/// 分配给我的学员 (分配给我,但是没有跟进的学员)
/// </summary>
/// <returns></returns>
public ApiResult MyStudent()
{
return ApiResult.Failed();
}
/// <summary>
/// 待申领合同(正常订单,没有领取电子合同)
/// </summary>
/// <returns></returns>
public ApiResult MyContract()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var list = studentModule.GetContractNotModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, base.UserInfo.Id);
pageModel.PageData = list;
pageModel.Count = rowsCount;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 待收款提醒(正常订单,收支款未平衡的订单)
/// </summary>
/// <returns></returns>
public ApiResult MyPay()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var list = studentModule.GetOrderNotModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, base.UserInfo.Id);
pageModel.PageData = list;
pageModel.Count = rowsCount;
return ApiResult.Success(data: pageModel);
}
/// <summary>
///今日被跟进学员(被跟进的学员所有协助人可见)
/// </summary>
/// <returns></returns>
public ApiResult TodayFollow()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var list = studentModule.GetTodayFollowStudentModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, base.UserInfo.Id);
pageModel.PageData = list;
pageModel.Count = rowsCount;
return ApiResult.Success(data: pageModel);
}
/// <summary>
///即将毕业学员 (学员所有协助人可见)
/// </summary>
/// <returns></returns>
public ApiResult GraduateStudent()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var list= studentModule.GetStraightwayGraduateStudentModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, base.UserInfo.Id);
pageModel.PageData = list;
pageModel.Count = rowsCount;
return ApiResult.Success(data: pageModel);
}
/// <summary>
/// 待审核业务单据
/// </summary>
/// <returns></returns>
public ApiResult NotBusinessBill()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new EducationReceiptQuery()
{
Group_Id = base.UserInfo.Group_Id,
StartTime = base.ParmJObj.GetStringValue("StartTime"),
EndTime = base.ParmJObj.GetStringValue("EndTime"),
Conditon = (EduReceiptConditionEnum)base.ParmJObj.GetInt("Conditon"),
ReceiptType = base.ParmJObj.GetInt("ReceiptType"),
Title = base.ParmJObj.GetStringValue("Title"),
RelationId = base.ParmJObj.GetInt("RelationId")
};
if (!string.IsNullOrEmpty(base.ParmJObj.GetStringValue("VerifyStatus")))
{
query.VerifyStatus = base.ParmJObj.GetInt("VerifyStatus", -1);
}
var id = base.ParmJObj.GetInt("Id");
if (id > 0)
{
query.QIds = id.ToString();
}
query.CreateBy = base.UserInfo.Id;
var list = educationReceiptModule.GetEducationReceiptPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.PageData = list;
pageModel.Count = rowsCount;
return ApiResult.Success(data: pageModel);
}
#endregion
}
}
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.32210.238
# Visual Studio Version 16
VisualStudioVersion = 16.0.31729.503
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Edu.Aop", "Edu.Aop\Edu.Aop.csproj", "{4AB3D35D-FC1D-4CB4-BB7B-0695E239C65B}"
EndProject
......
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