Commit a66a1443 authored by 黄奎's avatar 黄奎

页面修改

parents a9706783 9a8b6f8b
...@@ -53,6 +53,11 @@ namespace Edu.Model.ViewModel.Course ...@@ -53,6 +53,11 @@ namespace Edu.Model.ViewModel.Course
/// </summary> /// </summary>
public int CheckNum { get; set; } public int CheckNum { get; set; }
/// <summary>
/// 合同课时单价
/// </summary>
public decimal UnitPrice { get; set; }
/// <summary> /// <summary>
/// 订单id /// 订单id
/// </summary> /// </summary>
...@@ -92,11 +97,41 @@ namespace Edu.Model.ViewModel.Course ...@@ -92,11 +97,41 @@ namespace Edu.Model.ViewModel.Course
/// </summary> /// </summary>
public string ClassName { get; set; } public string ClassName { get; set; }
/// <summary>
/// 班级类型
/// </summary>
public int ClassType { get; set; }
/// <summary>
/// 课程id
/// </summary>
public int CouseId { get; set; }
/// <summary> /// <summary>
/// 课程名称 /// 课程名称
/// </summary> /// </summary>
public string CourseName { get; set; } public string CourseName { get; set; }
/// <summary>
/// 教师增加课时费
/// </summary>
public decimal BaseHourFee { get; set; }
/// <summary>
/// 合同编号
/// </summary>
public string ContractNo { get; set; }
/// <summary>
/// 业务人员
/// </summary>
public int EnterID { get; set; }
/// <summary>
/// 相关老师
/// </summary>
public int HelpEnterId { get; set; }
/// <summary> /// <summary>
/// 教室名称 /// 教室名称
/// </summary> /// </summary>
......
...@@ -30,6 +30,31 @@ namespace Edu.Model.ViewModel.Course ...@@ -30,6 +30,31 @@ namespace Edu.Model.ViewModel.Course
#region 统计相关 #region 统计相关
/// <summary>
/// 下单开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 下单结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 消费课时开始时间
/// </summary>
public string XFStartTime { get; set; }
/// <summary>
/// 消费课时结束时间
/// </summary>
public string XFEndTime { get; set; }
/// <summary>
/// 业务员id
/// </summary>
public int SaleId { get; set; }
/// <summary> /// <summary>
/// 班级名称 /// 班级名称
/// </summary> /// </summary>
......
...@@ -49,6 +49,11 @@ namespace Edu.Model.ViewModel.Course ...@@ -49,6 +49,11 @@ namespace Edu.Model.ViewModel.Course
/// </summary> /// </summary>
public string GuestName { get; set; } public string GuestName { get; set; }
/// <summary>
/// 业务员名称
/// </summary>
public string EnterName { get; set; }
/// <summary> /// <summary>
/// 订单查询状态 1正常 2取消 /// 订单查询状态 1正常 2取消
/// </summary> /// </summary>
...@@ -122,6 +127,16 @@ namespace Edu.Model.ViewModel.Course ...@@ -122,6 +127,16 @@ namespace Edu.Model.ViewModel.Course
/// </summary> /// </summary>
public int CancelNum { get; set; } public int CancelNum { get; set; }
/// <summary>
/// 结课数量
/// </summary>
public int JKNum { get; set; }
/// <summary>
/// 已上课金额(学生)
/// </summary>
public decimal YSKMoney { get; set; }
/// <summary> /// <summary>
/// 留学就业产品名称 /// 留学就业产品名称
/// </summary> /// </summary>
......
...@@ -97,6 +97,21 @@ namespace Edu.Model.ViewModel.User ...@@ -97,6 +97,21 @@ namespace Edu.Model.ViewModel.User
/// </summary> /// </summary>
public string EndBirthDate { get; set; } public string EndBirthDate { get; set; }
/// <summary>
/// 老师消耗课时统计 1是
/// </summary>
public int IsHoursStatistics { get; set; }
/// <summary>
/// 课时消费 开始时间
/// </summary>
public string HoursStartTime { get; set; }
/// <summary>
/// 课时消费 结束时间
/// </summary>
public string HoursEndTime { get; set; }
/// <summary> /// <summary>
/// 部门层级 /// 部门层级
/// </summary> /// </summary>
...@@ -171,5 +186,10 @@ namespace Edu.Model.ViewModel.User ...@@ -171,5 +186,10 @@ namespace Edu.Model.ViewModel.User
/// 直接主管ids /// 直接主管ids
/// </summary> /// </summary>
public string DirectSupervisorIds { get; set; } public string DirectSupervisorIds { get; set; }
/// <summary>
/// 基础课时费
/// </summary>
public decimal BaseHourFee { get; set; }
} }
} }
...@@ -2282,7 +2282,7 @@ namespace Edu.Module.Course ...@@ -2282,7 +2282,7 @@ namespace Edu.Module.Course
} }
} }
//查询所有学生的已上课时间 //查询所有学生的已上课时间
var stuTimeList = class_CheckRepository.GetClassGuestStudentTimeList(dmodel.Group_Id, guestIds); var stuTimeList = class_CheckRepository.GetClassGuestStudentTimeList(dmodel.Group_Id, guestIds, dmodel.XFStartTime, dmodel.XFEndTime);
//查询基础课时时长 //查询基础课时时长
//var configModel = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = dmodel.Group_Id }); //var configModel = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = dmodel.Group_Id });
//用户信息 //用户信息
......
...@@ -84,6 +84,22 @@ namespace Edu.Module.Finance ...@@ -84,6 +84,22 @@ namespace Edu.Module.Finance
/// </summary> /// </summary>
private readonly RB_ClassRepository classRepository = new RB_ClassRepository(); private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
/// <summary> /// <summary>
/// 学生签到
/// </summary>
private readonly RB_Class_CheckRepository class_CheckRepository = new RB_Class_CheckRepository();
/// <summary>
/// 班级时长
/// </summary>
private readonly RB_Class_TimeRepository class_TimeRepository = new RB_Class_TimeRepository();
/// <summary>
/// 基础配置
/// </summary>
private readonly RB_Class_ConfigRepository class_ConfigRepository = new RB_Class_ConfigRepository();
/// <summary>
/// 班级类型
/// </summary>
private readonly RB_Class_TypeRepository class_TypeRepository = new RB_Class_TypeRepository();
/// <summary>
/// 订单列表 /// 订单列表
/// </summary> /// </summary>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository(); private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
...@@ -2276,5 +2292,512 @@ namespace Edu.Module.Finance ...@@ -2276,5 +2292,512 @@ namespace Edu.Module.Finance
} }
#endregion #endregion
#region 报表统计 6.28
/// <summary>
/// 获取老师课时统计
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="teacherId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <returns></returns>
public object GetTeacherConsumptionHoursStatistics(int pageIndex, int pageSize, out long count, int teacherId, int schoolId, string startMonth, string endMonth, int groupId)
{
List<object> RList = new List<object>();
//首先查询所有的老师 + 助教
var userList = accountRepository.GetEmployeePageListRepository(pageIndex, pageSize, out count, new Model.ViewModel.User.Employee_ViewModel() { Group_Id = groupId, AccountId = teacherId, School_Id = schoolId, IsHoursStatistics = 1, AccountTypeStr = "2", HoursStartTime = startMonth, HoursEndTime = endMonth });
if (userList.Any())
{
//查询当前时间范围 这些老师的上课课时
string userIds = string.Join(",", userList.Select(x => x.AccountId));
var tTimeList = class_CheckRepository.GetTeacherHoursList(groupId, userIds, startMonth, endMonth);
List<RB_Class_ViewModel> ClassList = new List<RB_Class_ViewModel>();
if (tTimeList.Any()) {
//查询班级信息
string classIds = string.Join(",", tTimeList.Select(x => x.ClassId).Distinct());
ClassList = classRepository.GetClassListRepository(new RB_Class_ViewModel() { Group_Id = groupId, Q_ClassIds = classIds });
}
//班级类型查询
var cTypeList = class_TypeRepository.GetClassTypeListRepository(new RB_Class_Type_ViewModel() { Group_Id = groupId });
//查询期间 学生的上课总课时 + 合同课时单价
var sTimeList = class_CheckRepository.GetStudentHoursList(groupId, userIds, startMonth, endMonth);
//基础配置
var configModel = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = groupId });
if (configModel == null || configModel.BasicHourFee <= 0 || configModel.BasicMinutes <= 0) { return "未配置课时费基础设置"; }
//根据学生id
//查询课时费 (要注意 需排除每个月老师的基础课时)
foreach (var item in userList)
{
var tlist = tTimeList.Where(x => x.TeacherId == item.AccountId).ToList();//多班级
int TotalStudyNum = tlist.Sum(x => x.StudyNum);
decimal ksNum = Math.Round(Convert.ToDecimal(TotalStudyNum) / configModel.BasicMinutes, 2, MidpointRounding.AwayFromZero); // 未达到一课时时间 算不算一课时
decimal Hours = Math.Round(Convert.ToDecimal(TotalStudyNum) / 60, 2, MidpointRounding.AwayFromZero);//小时
decimal KSMoney = 0;
foreach (var qitem in tlist) {
var classModel = ClassList.Where(x => x.ClassId == qitem.ClassId).FirstOrDefault();
var typeModel = cTypeList.Where(x => x.CTypeId == classModel.ClassType).FirstOrDefault();
//课时费 需要每个班级 单独计算 因为 班级有附加费用
KSMoney += Math.Round(Convert.ToDecimal(qitem.StudyNum) / configModel.BasicMinutes * (configModel.BasicHourFee + (typeModel?.AddHourFee ?? 0) + (item?.BaseHourFee ?? 0)), 2, MidpointRounding.AwayFromZero);
}
decimal StuMoney = Math.Round(sTimeList.Where(x => x.TeacherId == item.AccountId).Sum(x => x.CurrentDeductionHours * x.UnitPrice), 2, MidpointRounding.AwayFromZero);
RList.Add(new
{
item.Id,
item.AccountId,
item.EmployeeName,
LeaveStatus = item.LeaveStatus.ToName(),
KSNum = ksNum,
Hours,
KSMoney,
StuLearnMoney = StuMoney,
item.SchoolName
});
}
}
return RList;
}
/// <summary>
/// 导出Excel
/// </summary>
/// <param name="teacherId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public List<ExcelDataSource> GetTeacherConsumptionHoursStatisticsToExcel(int teacherId, int schoolId, string startMonth, string endMonth, int groupId)
{
List<ExcelDataSource> RList = new List<ExcelDataSource>();
//首先查询所有的老师 + 助教
var userList = accountRepository.GetEmployeeListRepository(new Model.ViewModel.User.Employee_ViewModel() { Group_Id = groupId, AccountId = teacherId, School_Id = schoolId, IsHoursStatistics = 1, AccountTypeStr = "2", HoursStartTime = startMonth, HoursEndTime = endMonth });
if (userList.Any())
{
//查询当前时间范围 这些老师的上课课时
string userIds = string.Join(",", userList.Select(x => x.AccountId));
var tTimeList = class_CheckRepository.GetTeacherHoursList(groupId, userIds, startMonth, endMonth);
List<RB_Class_ViewModel> ClassList = new List<RB_Class_ViewModel>();
if (tTimeList.Any())
{
//查询班级信息
string classIds = string.Join(",", tTimeList.Select(x => x.ClassId).Distinct());
ClassList = classRepository.GetClassListRepository(new RB_Class_ViewModel() { Group_Id = groupId, Q_ClassIds = classIds });
}
//班级类型查询
var cTypeList = class_TypeRepository.GetClassTypeListRepository(new RB_Class_Type_ViewModel() { Group_Id = groupId });
//查询期间 学生的上课总课时 + 合同课时单价
var sTimeList = class_CheckRepository.GetStudentHoursList(groupId, userIds, startMonth, endMonth);
//基础配置
var configModel = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = groupId });
if (configModel == null || configModel.BasicHourFee <= 0 || configModel.BasicMinutes <= 0) { return new List<ExcelDataSource>(); }
//根据学生id
//查询课时费 (要注意 需排除每个月老师的基础课时)
int Num = 1;
decimal TKSNum = 0, TStuMoney = 0, THours = 0, TKSMoney = 0;
foreach (var item in userList)
{
var tlist = tTimeList.Where(x => x.TeacherId == item.AccountId).ToList();//多班级
int TotalStudyNum = tlist.Sum(x => x.StudyNum);
decimal ksNum = Math.Round(Convert.ToDecimal(TotalStudyNum) / configModel.BasicMinutes, 2, MidpointRounding.AwayFromZero); // 未达到一课时时间 算不算一课时
decimal Hours = Math.Round(Convert.ToDecimal(TotalStudyNum) / 60, 2, MidpointRounding.AwayFromZero);//小时
decimal KSMoney = 0;
foreach (var qitem in tlist)
{
var classModel = ClassList.Where(x => x.ClassId == qitem.ClassId).FirstOrDefault();
var typeModel = cTypeList.Where(x => x.CTypeId == classModel.ClassType).FirstOrDefault();
//课时费 需要每个班级 单独计算 因为 班级有附加费用
KSMoney += Math.Round(Convert.ToDecimal(qitem.StudyNum) / configModel.BasicMinutes * (configModel.BasicHourFee + (typeModel?.AddHourFee ?? 0) + (item?.BaseHourFee ?? 0)), 2, MidpointRounding.AwayFromZero);
}
decimal StuMoney = Math.Round(sTimeList.Where(x => x.TeacherId == item.AccountId).Sum(x => x.CurrentDeductionHours * x.UnitPrice), 2, MidpointRounding.AwayFromZero);
ExcelDataSource firstRow = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: Num.ToString()){ },
new ExcelColumn(value: item.SchoolName){ },
new ExcelColumn(value: item.LeaveStatus.ToName()){ },
new ExcelColumn(value: item.EmployeeName){ },
new ExcelColumn(value: ksNum.ToString("#0.00")){ },
new ExcelColumn(value: StuMoney.ToString("#0.00")){ },
new ExcelColumn(value: Hours.ToString("#0.00")){ },
new ExcelColumn(value: KSMoney.ToString("#0.00")){ }
}
};
RList.Add(firstRow);
Num++;
TKSNum += ksNum;
TStuMoney += StuMoney;
THours += Hours;
TKSMoney += KSMoney;
}
ExcelDataSource firstRowT = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: "合计"){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: TKSNum.ToString("#0.00")){ },
new ExcelColumn(value: TStuMoney.ToString("#0.00")){ },
new ExcelColumn(value: THours.ToString("#0.00")){ },
new ExcelColumn(value: TKSMoney.ToString("#0.00")){ }
}
};
RList.Add(firstRowT);
}
return RList;
}
/// <summary>
/// 获取老师课时统计明细列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="teacherId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="studentName"></param>
/// <param name="orderId"></param>
/// <param name="contractNo"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public object GetTeacherConsumptionHoursDetialPageList(int pageIndex, int pageSize, out long count, int teacherId, int schoolId, string startMonth, string endMonth, int groupId)
{
List<object> RList = new List<object>();
//根据学生签到表 查询
var list = class_CheckRepository.GetTeacherConsumptionHoursDetialPageList(pageIndex, pageSize, out count, teacherId, schoolId, startMonth, endMonth, groupId);
if (list.Any()) {
//班级类型查询
var cTypeList = class_TypeRepository.GetClassTypeListRepository(new RB_Class_Type_ViewModel() { Group_Id = groupId });
//基础配置
var configModel = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = groupId });
if (configModel == null || configModel.BasicHourFee <= 0 || configModel.BasicMinutes <= 0) { return "未配置课时费基础设置"; }
foreach (var item in list) {
int Minutes = (int)(Convert.ToDateTime("2021-06-29 " + item.EndDate) - Convert.ToDateTime("2021-06-29 " + item.StartDate)).TotalMinutes;
decimal Hours = Math.Round(Convert.ToDecimal(Minutes) / 60, 2, MidpointRounding.AwayFromZero);//小时
//上课课时
decimal KSNum = Math.Round(Convert.ToDecimal(Minutes) / configModel.BasicMinutes, 2, MidpointRounding.AwayFromZero); // 未达到一课时时间 算不算一课时
var typeModel = cTypeList.Where(x => x.CTypeId == item.ClassType).FirstOrDefault();
//课时费 需要每个班级 单独计算 因为 班级有附加费用
decimal KSMoney = KSNum * (configModel.BasicHourFee + (typeModel?.AddHourFee ?? 0) + item.BaseHourFee);
decimal HourMoney = Math.Round((configModel.BasicHourFee + (typeModel?.AddHourFee ?? 0) + item.BaseHourFee) / configModel.BasicMinutes * 60, 2, MidpointRounding.AwayFromZero);//没小时课时费
RList.Add(new
{
ClassDate = item.ClassDate.ToString("yyyy-MM-dd"),
TimeBucket = item.StartDate + "~" + item.EndDate,
item.TeacherId,
item.TeacherName,
item.ClassId,
item.ClassName,
item.CouseId,
item.CourseName,
KSNum,
Hours,
HourMoney,
KSMoney
});
}
}
return RList;
}
/// <summary>
/// 导出excel
/// </summary>
/// <param name="teacherId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public List<ExcelDataSource> GetTeacherConsumptionHoursDetialPageListToExcel(int teacherId, int schoolId, string startMonth, string endMonth, int groupId)
{
List<ExcelDataSource> RList = new List<ExcelDataSource>();
//根据学生签到表 查询
var list = class_CheckRepository.GetTeacherConsumptionHoursDetialList(teacherId, schoolId, startMonth, endMonth, groupId);
if (list.Any())
{
//班级类型查询
var cTypeList = class_TypeRepository.GetClassTypeListRepository(new RB_Class_Type_ViewModel() { Group_Id = groupId });
//基础配置
var configModel = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = groupId });
if (configModel == null || configModel.BasicHourFee <= 0 || configModel.BasicMinutes <= 0) { return RList; }
decimal TKSNum = 0, THourMoney = 0, THours = 0, TKSMoney = 0;
foreach (var item in list)
{
int Minutes = (int)(Convert.ToDateTime("2021-06-29 " + item.EndDate) - Convert.ToDateTime("2021-06-29 " + item.StartDate)).TotalMinutes;
decimal Hours = Math.Round(Convert.ToDecimal(Minutes) / 60, 2, MidpointRounding.AwayFromZero);//小时
//上课课时
decimal KSNum = Math.Round(Convert.ToDecimal(Minutes) / configModel.BasicMinutes, 2, MidpointRounding.AwayFromZero); // 未达到一课时时间 算不算一课时
var typeModel = cTypeList.Where(x => x.CTypeId == item.ClassType).FirstOrDefault();
//课时费 需要每个班级 单独计算 因为 班级有附加费用
decimal KSMoney = KSNum * (configModel.BasicHourFee + (typeModel?.AddHourFee ?? 0) + item.BaseHourFee);
decimal HourMoney = Math.Round((configModel.BasicHourFee + (typeModel?.AddHourFee ?? 0) + item.BaseHourFee) / configModel.BasicMinutes * 60, 2, MidpointRounding.AwayFromZero);//没小时课时费
ExcelDataSource firstRow = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: item.ClassDate.ToString("yyyy-MM-dd")){ },
new ExcelColumn(value: item.StartDate + "~" + item.EndDate){ },
new ExcelColumn(value: item.ClassName){ },
new ExcelColumn(value: item.CourseName){ },
new ExcelColumn(value: item.TeacherName){ },
new ExcelColumn(value: KSNum.ToString("#0.00")){ },
new ExcelColumn(value: Hours.ToString("#0.00")){ },
new ExcelColumn(value: HourMoney.ToString("#0.00")){ },
new ExcelColumn(value: KSMoney.ToString("#0.00")){ }
}
};
RList.Add(firstRow);
TKSNum += KSNum;
THourMoney += HourMoney;
THours += Hours;
TKSMoney += KSMoney;
}
ExcelDataSource firstRowT = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: "合计"){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: TKSNum.ToString("#0.00")){ },
new ExcelColumn(value: THours.ToString("#0.00")){ },
new ExcelColumn(value: THourMoney.ToString("#0.00")){ },
new ExcelColumn(value: TKSMoney.ToString("#0.00")){ }
}
};
RList.Add(firstRowT);
}
return RList;
}
/// <summary>
/// 获取学生课时统计明细列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="teacherId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="studentName"></param>
/// <param name="orderId"></param>
/// <param name="contractNo"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public object GetStudentConsumptionHoursDetialPageList(int pageIndex, int pageSize, out long count, int teacherId, int schoolId, string startMonth, string endMonth, string studentName, int orderId, string contractNo, int groupId)
{
List<object> RList = new List<object>();
//根据学生签到表 查询
var list = class_CheckRepository.GetStudentConsumptionHoursDetialPageList(pageIndex, pageSize, out count, teacherId, schoolId, startMonth, endMonth, studentName, orderId, contractNo, groupId);
if (list.Any())
{
//查询关联销售
string userids = string.Join(",", list.Select(x => x.EnterID).Distinct());
var ulist = accountRepository.GetEmployeeListRepository(new Model.ViewModel.User.Employee_ViewModel() { Group_Id = groupId, QIds = userids });
//查询关联老师
string teacherIds = string.Join(",", list.Where(x => x.EnterID != x.HelpEnterId && x.HelpEnterId > 0).Select(x => x.HelpEnterId).Distinct());
List<Model.ViewModel.User.Employee_ViewModel> teacherList = new List<Model.ViewModel.User.Employee_ViewModel>();
if (!string.IsNullOrEmpty(teacherIds)) {
teacherList = accountRepository.GetEmployeeListRepository(new Model.ViewModel.User.Employee_ViewModel() { Group_Id = groupId, QIds = teacherIds });
}
foreach (var item in list)
{
string SaleName = ulist.Where(x => x.Id == item.EnterID).FirstOrDefault()?.EmployeeName ?? "";
string HelpEnterName = "";
if (item.EnterID != item.HelpEnterId && item.HelpEnterId > 0) {
HelpEnterName = teacherList.Where(x => x.Id == item.HelpEnterId).FirstOrDefault()?.EmployeeName ?? "";
}
decimal UnitPrice = Math.Round(item.UnitPrice, 6, MidpointRounding.AwayFromZero);
RList.Add(new
{
ClassDate = item.ClassDate.ToString("yyyy-MM-dd"),
TimeBucket = item.StartDate + "~" + item.EndDate,
item.OrderGuestId,
item.GuestName,
item.TeacherId,
item.TeacherName,
item.ClassId,
item.ClassName,
item.CouseId,
item.CourseName,
item.OrderId,
item.ContractNo,
item.CurrentDeductionHours,
UnitPrice,
XHMoney = Math.Round(item.UnitPrice * item.CurrentDeductionHours, 6, MidpointRounding.AwayFromZero),
SaleName,
HelpEnterName
});
}
}
return RList;
}
/// <summary>
/// 导出Excel
/// </summary>
/// <param name="teacherId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="studentName"></param>
/// <param name="orderId"></param>
/// <param name="contractNo"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public List<ExcelDataSource> GetStudentConsumptionHoursDetialPageListToExcel(int teacherId, int schoolId, string startMonth, string endMonth, string studentName, int orderId, string contractNo, int groupId)
{
List<ExcelDataSource> RList = new List<ExcelDataSource>();
//根据学生签到表 查询
var list = class_CheckRepository.GetStudentConsumptionHoursDetialList(teacherId, schoolId, startMonth, endMonth, studentName, orderId, contractNo, groupId);
if (list.Any())
{
//查询关联销售
string userids = string.Join(",", list.Select(x => x.EnterID).Distinct());
var ulist = accountRepository.GetEmployeeListRepository(new Model.ViewModel.User.Employee_ViewModel() { Group_Id = groupId, QIds = userids });
//查询关联老师
string teacherIds = string.Join(",", list.Where(x => x.EnterID != x.HelpEnterId && x.HelpEnterId > 0).Select(x => x.HelpEnterId).Distinct());
List<Model.ViewModel.User.Employee_ViewModel> teacherList = new List<Model.ViewModel.User.Employee_ViewModel>();
if (!string.IsNullOrEmpty(teacherIds))
{
teacherList = accountRepository.GetEmployeeListRepository(new Model.ViewModel.User.Employee_ViewModel() { Group_Id = groupId, QIds = teacherIds });
}
decimal TcdHours = 0, TPrice = 0;
foreach (var item in list)
{
string SaleName = ulist.Where(x => x.Id == item.EnterID).FirstOrDefault()?.EmployeeName ?? "";
string HelpEnterName = "";
if (item.EnterID != item.HelpEnterId && item.HelpEnterId > 0)
{
HelpEnterName = teacherList.Where(x => x.Id == item.HelpEnterId).FirstOrDefault()?.EmployeeName ?? "";
}
decimal UnitPrice = Math.Round(item.UnitPrice, 6, MidpointRounding.AwayFromZero);
ExcelDataSource firstRow = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: item.OrderId.ToString()){ },
new ExcelColumn(value: item.ContractNo){ },
new ExcelColumn(value: item.ClassDate.ToString("yyyy-MM-dd")){ },
new ExcelColumn(value: item.StartDate + "~" + item.EndDate){ },
new ExcelColumn(value: item.GuestName){ },
new ExcelColumn(value: item.ClassName){ },
new ExcelColumn(value: item.CourseName){ },
new ExcelColumn(value: item.TeacherName){ },
new ExcelColumn(value: item.CurrentDeductionHours.ToString("#0.00")){ },
new ExcelColumn(value: UnitPrice.ToString("#0.000000")){ },
new ExcelColumn(value: Math.Round(item.UnitPrice * item.CurrentDeductionHours,6,MidpointRounding.AwayFromZero).ToString("#0.000000")){ },
new ExcelColumn(value: SaleName){ },
new ExcelColumn(value: HelpEnterName){ }
}
};
RList.Add(firstRow);
TcdHours += item.CurrentDeductionHours;
TPrice += Math.Round(item.UnitPrice * item.CurrentDeductionHours, 6, MidpointRounding.AwayFromZero);
}
ExcelDataSource firstRowT = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: "合计"){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: TcdHours.ToString("#0.00")){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: TPrice.ToString("#0.00")){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: ""){ }
}
};
RList.Add(firstRowT);
}
return RList;
}
/// <summary>
/// 获取销售业绩排名统计
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="saleId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Order_ViewModel> GetSaleAchievementsRankStatistics(int pageIndex, int pageSize, out long count, int saleId, int schoolId, string startMonth, string endMonth, int group_Id)
{
var list = orderRepository.GetSaleAchievementsRankStatistics(pageIndex, pageSize, out count, saleId, schoolId, startMonth, endMonth, group_Id);
if (list.Any()) {
string userIds = string.Join(",", list.Select(x => x.EnterID).Distinct());
var ulist = accountRepository.GetEmployeeListRepository(new Model.ViewModel.User.Employee_ViewModel() { Group_Id = group_Id, QIds = userIds });
foreach (var item in list) {
item.EnterName = ulist.Where(x => x.Id == item.EnterID).FirstOrDefault()?.EmployeeName ?? "";
}
}
return list;
}
/// <summary>
/// 获取Excel导出
/// </summary>
/// <param name="saleId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Order_ViewModel> GetSaleAchievementsRankStatisticsToExcel(int saleId, int schoolId, string startMonth, string endMonth, int group_Id)
{
var list = orderRepository.GetSaleAchievementsRankStatisticsToList(saleId, schoolId, startMonth, endMonth, group_Id);
if (list.Any())
{
string userIds = string.Join(",", list.Select(x => x.EnterID).Distinct());
var ulist = accountRepository.GetEmployeeListRepository(new Model.ViewModel.User.Employee_ViewModel() { Group_Id = group_Id, QIds = userIds });
foreach (var item in list)
{
item.EnterName = ulist.Where(x => x.Id == item.EnterID).FirstOrDefault()?.EmployeeName ?? "";
}
}
return list;
}
#endregion
} }
} }
...@@ -296,9 +296,19 @@ GROUP BY A.ClassId ...@@ -296,9 +296,19 @@ GROUP BY A.ClassId
/// <param name="groupId"></param> /// <param name="groupId"></param>
/// <param name="guestIds"></param> /// <param name="guestIds"></param>
/// <returns></returns> /// <returns></returns>
public List<RB_Class_Check_ViewModel> GetClassGuestStudentTimeList(int groupId, string guestIds) public List<RB_Class_Check_ViewModel> GetClassGuestStudentTimeList(int groupId, string guestIds, string xFStartTime, string xFEndTime)
{ {
string sql = $@"SELECT OrderGuestId, SUM(CurrentDeductionHours) as CurrentDeductionHours FROM rb_class_check where `Status`=0 and Group_Id ={groupId} and OrderGuestId in ({guestIds}) group by OrderGuestId"; string where = "";
if (!string.IsNullOrEmpty(xFStartTime))
{
where += $@" and ClassDate >= '{xFStartTime}'";
}
if (!string.IsNullOrEmpty(xFEndTime))
{
where += $@" and ClassDate <= '{xFEndTime} 23:59:59'";
}
string sql = $@"SELECT OrderGuestId, SUM(CurrentDeductionHours) as CurrentDeductionHours FROM rb_class_check where `Status`=0 and Group_Id ={groupId} and OrderGuestId in ({guestIds}) {where} group by OrderGuestId";
return Get<RB_Class_Check_ViewModel>(sql).ToList(); return Get<RB_Class_Check_ViewModel>(sql).ToList();
} }
...@@ -343,5 +353,266 @@ WHERE g.Group_Id ={groupId} and g.`Status`=0 and g.GuestState <>2 and c.`Status` ...@@ -343,5 +353,266 @@ WHERE g.Group_Id ={groupId} and g.`Status`=0 and g.GuestState <>2 and c.`Status`
group by g.OrderId,DATE_FORMAT(c.ClassDate,'%Y-%m');"; group by g.OrderId,DATE_FORMAT(c.ClassDate,'%Y-%m');";
return Get<RB_Class_Check_ViewModel>(sql).ToList(); return Get<RB_Class_Check_ViewModel>(sql).ToList();
} }
#region 报表统计
/// <summary>
/// 获取教师时间范围内 累计上课时长
/// </summary>
/// <param name="groupId"></param>
/// <param name="userIds"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
public List<RB_Class_Check_ViewModel> GetTeacherHoursList(int groupId, string userIds, string startMonth, string endMonth)
{
string sql = $@"SELECT tt.TeacherId,tt.ClassId,SUM(timestampdiff(MINUTE,CONCAT('2021-06-28 ',tt.StartTime),CONCAT('2021-06-28 ',tt.EndTime))) as StudyNum FROM(
SELECT p.TeacherId,p.ClassId,p.ClassTimeId,t.StartTime,t.EndTime FROM rb_class_check p
INNER JOIN rb_class_time t on p.ClassTimeId = t.ClassTimeId
WHERE p.`Status`=0 and p.Group_Id ={groupId} and p.TeacherId in ({userIds}) and p.ClassDate >= '{startMonth}' and p.ClassDate <='{endMonth} 23:59:59'
GROUP BY p.TeacherId,p.ClassId,p.ClassTimeId
)tt
GROUP BY tt.TeacherId,tt.ClassId;";
return Get<RB_Class_Check_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取学生时间范围内 累计上课时长 + 合同课时单价
/// </summary>
/// <param name="groupId"></param>
/// <param name="userIds"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetStudentHoursList(int groupId, string userIds, string startMonth, string endMonth)
{
string sql = $@"SELECT q.TeacherId,q.OrderGuestId,q.CurrentDeductionHours,
case when q.ClassHours>0 and q.TotalSub >0 then
(q.CourseFee - q.DiscountMoney / q.TotalSub * q.CourseFee) /q.ClassHours
else 0 END AS UnitPrice
FROM (
SELECT tt.TeacherId,tt.OrderGuestId,tt.CurrentDeductionHours
,ec.FirstCourseFee + ec.SecondCourseFee + ec.ThirdCourseFee as CourseFee
,ec.FirstDiscountMoney + ec.SecondDiscountMoney + ec.ThirdDiscountMoney as DiscountMoney
,ec.FirstCourseFee + ec.SecondCourseFee + ec.ThirdCourseFee
+ec.FirstBookFee + ec.SecondBookFee + ec.ThirdBookFee
+ec.FirstClassFee + ec.SecondClassFee + ec.ThirdClassFee as TotalSub
,ec.FirstClassHours + ec.SecondClassHours + ec.ThirdClassHours as ClassHours
FROM(
SELECT p.TeacherId,p.OrderGuestId,SUM(p.CurrentDeductionHours) as CurrentDeductionHours FROM rb_class_check p
WHERE p.`Status`=0 and p.Group_Id ={groupId} and p.TeacherId in ({userIds}) and p.ClassDate >= '{startMonth}' and p.ClassDate <='{endMonth} 23:59:59'
GROUP BY p.TeacherId,p.OrderGuestId
)tt
LEFT JOIN rb_education_contract ec on tt.OrderGuestId = ec.GuestId and ec.Status <>4
GROUP BY tt.TeacherId,tt.OrderGuestId
)q";
return Get<RB_Class_Check_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取老师课时统计明细
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="teacherId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetTeacherConsumptionHoursDetialPageList(int pageIndex, int pageSize, out long count, int teacherId, int schoolId, string startMonth, string endMonth, int group_Id)
{
string where = $@" ";
if (teacherId > 0) {
where += $@" and p.TeacherId ={teacherId}";
}
if (schoolId >= 0) {
where += $@" and t2.School_Id ={schoolId}";
}
string sql = $@"
SELECT p.TeacherId,t2.TeacherName,t2.BaseHourFee,c.ClassName,co.CourseName,p.ClassId,c.ClassType,c.CouseId,p.ClassDate,p.ClassTimeId,t.StartTime as StartDate,t.EndTime as EndDate FROM rb_class_check p
INNER JOIN rb_class_time t on p.ClassTimeId = t.ClassTimeId
LEFT JOIN rb_teacher t2 on p.TeacherId = t2.TId
LEFT JOIN rb_class c on p.ClassId = c.ClassId
LEFT JOIN rb_course co on c.CouseId = co.CourseId
WHERE p.`Status`=0 and p.Group_Id ={group_Id} {where} and p.ClassDate >= '{startMonth}' and p.ClassDate <='{endMonth} 23:59:59'
GROUP BY p.TeacherId,p.ClassId,p.ClassTimeId
ORDER BY p.ClassDate ASC
";
return GetPage<RB_Class_Check_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
/// <summary>
/// 获取老师课时统计明细
/// </summary>
/// <param name="teacherId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetTeacherConsumptionHoursDetialList(int teacherId, int schoolId, string startMonth, string endMonth, int group_Id)
{
string where = $@" ";
if (teacherId > 0)
{
where += $@" and p.TeacherId ={teacherId}";
}
if (schoolId >= 0)
{
where += $@" and t2.School_Id ={schoolId}";
}
string sql = $@"
SELECT p.TeacherId,t2.TeacherName,t2.BaseHourFee,c.ClassName,co.CourseName,p.ClassId,c.ClassType,c.CouseId,p.ClassDate,p.ClassTimeId,t.StartTime as StartDate,t.EndTime as EndDate FROM rb_class_check p
INNER JOIN rb_class_time t on p.ClassTimeId = t.ClassTimeId
LEFT JOIN rb_teacher t2 on p.TeacherId = t2.TId
LEFT JOIN rb_class c on p.ClassId = c.ClassId
LEFT JOIN rb_course co on c.CouseId = co.CourseId
WHERE p.`Status`=0 and p.Group_Id ={group_Id} {where} and p.ClassDate >= '{startMonth}' and p.ClassDate <='{endMonth} 23:59:59'
GROUP BY p.TeacherId,p.ClassId,p.ClassTimeId
ORDER BY p.ClassDate ASC
";
return Get<RB_Class_Check_ViewModel>(sql).ToList();
}
/// <summary>
/// 获取学生课时统计明细
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="teacherId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="studentName"></param>
/// <param name="orderId"></param>
/// <param name="contractNo"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetStudentConsumptionHoursDetialPageList(int pageIndex, int pageSize, out long count, int teacherId, int schoolId, string startMonth, string endMonth, string studentName, int orderId, string contractNo, int groupId)
{
string where = $@" ";
if (teacherId > 0)
{
where += $@" and p.TeacherId ={teacherId}";
}
if (schoolId >= 0)
{
where += $@" and t2.School_Id ={schoolId}";
}
if (!string.IsNullOrEmpty(studentName))
{
where += $@" and t2.GuestName like '%{studentName}%'";
}
if (orderId > 0)
{
where += $@" and t2.OrderId ={orderId}";
}
if (!string.IsNullOrEmpty(contractNo))
{
where += $@" and ec.ContractNo ='{contractNo}'";
}
string sql = $@"
SELECT tt.*,
case when tt.ClassHours>0 and tt.TotalSub >0 then
(tt.CourseFee - tt.DiscountMoney / tt.TotalSub * tt.CourseFee) /tt.ClassHours
else 0 END AS UnitPrice
FROM (
SELECT p.OrderGuestId,p.CurrentDeductionHours,t2.GuestName,p.TeacherId,t3.TeacherName,t2.OrderId,ec.ContractNo,c.ClassName,co.CourseName,p.ClassId,c.CouseId
,p.ClassDate,p.ClassTimeId,t.StartTime as StartDate,t.EndTime as EndDate,o.EnterID,o.HelpEnterId
,ec.FirstCourseFee + ec.SecondCourseFee + ec.ThirdCourseFee as CourseFee
,ec.FirstDiscountMoney + ec.SecondDiscountMoney + ec.ThirdDiscountMoney as DiscountMoney
,ec.FirstCourseFee + ec.SecondCourseFee + ec.ThirdCourseFee
+ec.FirstBookFee + ec.SecondBookFee + ec.ThirdBookFee
+ec.FirstClassFee + ec.SecondClassFee + ec.ThirdClassFee as TotalSub
,ec.FirstClassHours + ec.SecondClassHours + ec.ThirdClassHours as ClassHours
FROM rb_class_check p
INNER JOIN rb_class_time t on p.ClassTimeId = t.ClassTimeId
LEFT JOIN rb_order_guest t2 on p.OrderGuestId = t2.Id
LEFT JOIN rb_order o on o.OrderId = t2.OrderId
LEFT JOIN rb_teacher t3 on p.TeacherId = t3.TId
LEFT JOIN rb_class c on p.ClassId = c.ClassId
LEFT JOIN rb_course co on c.CouseId = co.CourseId
LEFT JOIN rb_education_contract ec on ec.GuestId = p.OrderGuestId
WHERE p.`Status`=0 and p.Group_Id ={groupId} {where} and p.ClassDate >= '{startMonth}' and p.ClassDate <='{endMonth} 23:59:59'
) tt
ORDER BY tt.ClassDate ASC
";
return GetPage<RB_Class_Check_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
/// <summary>
/// 获取学生课时统计明细
/// </summary>
/// <param name="teacherId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="studentName"></param>
/// <param name="orderId"></param>
/// <param name="contractNo"></param>
/// <param name="groupId"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetStudentConsumptionHoursDetialList(int teacherId, int schoolId, string startMonth, string endMonth, string studentName, int orderId, string contractNo, int groupId)
{
string where = $@" ";
if (teacherId > 0)
{
where += $@" and p.TeacherId ={teacherId}";
}
if (schoolId >= 0)
{
where += $@" and t2.School_Id ={schoolId}";
}
if (!string.IsNullOrEmpty(studentName))
{
where += $@" and t2.GuestName like '%{studentName}%'";
}
if (orderId > 0)
{
where += $@" and t2.OrderId ={orderId}";
}
if (!string.IsNullOrEmpty(contractNo))
{
where += $@" and ec.ContractNo ='{contractNo}'";
}
string sql = $@"
SELECT tt.*,
case when tt.ClassHours>0 and tt.TotalSub >0 then
(tt.CourseFee - tt.DiscountMoney / tt.TotalSub * tt.CourseFee) /tt.ClassHours
else 0 END AS UnitPrice
FROM (
SELECT p.OrderGuestId,p.CurrentDeductionHours,t2.GuestName,p.TeacherId,t3.TeacherName,t2.OrderId,ec.ContractNo,c.ClassName,co.CourseName,p.ClassId,c.CouseId
,p.ClassDate,p.ClassTimeId,t.StartTime as StartDate,t.EndTime as EndDate,o.EnterID,o.HelpEnterId
,ec.FirstCourseFee + ec.SecondCourseFee + ec.ThirdCourseFee as CourseFee
,ec.FirstDiscountMoney + ec.SecondDiscountMoney + ec.ThirdDiscountMoney as DiscountMoney
,ec.FirstCourseFee + ec.SecondCourseFee + ec.ThirdCourseFee
+ec.FirstBookFee + ec.SecondBookFee + ec.ThirdBookFee
+ec.FirstClassFee + ec.SecondClassFee + ec.ThirdClassFee as TotalSub
,ec.FirstClassHours + ec.SecondClassHours + ec.ThirdClassHours as ClassHours
FROM rb_class_check p
INNER JOIN rb_class_time t on p.ClassTimeId = t.ClassTimeId
LEFT JOIN rb_order_guest t2 on p.OrderGuestId = t2.Id
LEFT JOIN rb_order o on o.OrderId = t2.OrderId
LEFT JOIN rb_teacher t3 on p.TeacherId = t3.TId
LEFT JOIN rb_class c on p.ClassId = c.ClassId
LEFT JOIN rb_course co on c.CouseId = co.CourseId
LEFT JOIN rb_education_contract ec on ec.GuestId = p.OrderGuestId
WHERE p.`Status`=0 and p.Group_Id ={groupId} {where} and p.ClassDate >= '{startMonth}' and p.ClassDate <='{endMonth} 23:59:59'
) tt
ORDER BY tt.ClassDate ASC
";
return Get<RB_Class_Check_ViewModel>(sql).ToList();
}
#endregion
} }
} }
...@@ -224,6 +224,19 @@ namespace Edu.Repository.Course ...@@ -224,6 +224,19 @@ namespace Edu.Repository.Course
{ {
where += $@" AND t.AccountId ={demodel.AccountId}"; where += $@" AND t.AccountId ={demodel.AccountId}";
} }
if (demodel.SaleId > 0)
{
where += $@" AND o.EnterID ={demodel.SaleId}";
}
if (!string.IsNullOrEmpty(demodel.StartTime))
{
where += $@" AND o.CreateTime >={demodel.StartTime}";
}
if (!string.IsNullOrEmpty(demodel.EndTime))
{
where += $@" AND o.CreateTime <={demodel.EndTime} 23:59:59";
}
string sql = $@" SELECT c.*,c1.ClassName,ca.AdjustPrice FROM RB_Education_Contract c string sql = $@" SELECT c.*,c1.ClassName,ca.AdjustPrice FROM RB_Education_Contract c
left join RB_Education_ContractAdjust ca on c.Id = ca.ContractId left join RB_Education_ContractAdjust ca on c.Id = ca.ContractId
left join rb_order o on c.OrderId = o.OrderId left join rb_order o on c.OrderId = o.OrderId
......
...@@ -581,6 +581,108 @@ WHERE o.Group_Id ={group_Id} and o.OrderState =1 and o.EffectStatus in(1,2) and ...@@ -581,6 +581,108 @@ WHERE o.Group_Id ={group_Id} and o.OrderState =1 and o.EffectStatus in(1,2) and
var obj = ExecuteScalar(sql); var obj = ExecuteScalar(sql);
return obj != null ? Convert.ToInt32(obj) : 0; return obj != null ? Convert.ToInt32(obj) : 0;
} }
#endregion
#region 销售业绩统计
/// <summary>
/// 销售业绩统计
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="count"></param>
/// <param name="saleId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Order_ViewModel> GetSaleAchievementsRankStatistics(int pageIndex, int pageSize, out long count, int saleId, int schoolId, string startMonth, string endMonth, int group_Id)
{
string where = "";
if (saleId > 0) {
where += $@" and o.EnterID ={saleId}";
}
if (schoolId >= 0) {
where += $@" and o.School_Id ={schoolId}";
}
string sql = $@"SELECT o.EnterID,SUM(o.PreferPrice) as PreferPrice,SUM(o.Income) AS Income,sum(o.PlatformTax) as PlatformTax,SUM(o.Refund) AS Refund,SUM(o.GuestNum) AS GuestNum,
SUM(CASE WHEN c.ClassStatus =3 then o.GuestNum else 0 END) AS JKNum,COUNT(0) AS CancelNum, SUM(IFNULL(ttt.XFMoney,0)) AS YSKMoney
FROM rb_order o
LEFT JOIN rb_class c on o.ClassId = c.ClassId
LEFT JOIN (SELECT q.OrderId,
SUM((case when q.ClassHours>0 and q.TotalSub >0 then
(q.CourseFee - q.DiscountMoney / q.TotalSub * q.CourseFee) /q.ClassHours
else 0 END) * IFNULL(q.CurrentDeductionHours,0)) AS XFMoney
FROM(
SELECT g.Id,g.OrderId
,ec.FirstCourseFee + ec.SecondCourseFee + ec.ThirdCourseFee as CourseFee
,ec.FirstDiscountMoney + ec.SecondDiscountMoney + ec.ThirdDiscountMoney as DiscountMoney
,ec.FirstCourseFee + ec.SecondCourseFee + ec.ThirdCourseFee
+ec.FirstBookFee + ec.SecondBookFee + ec.ThirdBookFee
+ec.FirstClassFee + ec.SecondClassFee + ec.ThirdClassFee as TotalSub
,ec.FirstClassHours + ec.SecondClassHours + ec.ThirdClassHours as ClassHours
,cc.CurrentDeductionHours
FROM rb_order_guest g
INNER JOIN rb_education_contract ec on g.Id = ec.GuestId
LEFT JOIN (SELECT ch.OrderGuestId, SUM(ch.CurrentDeductionHours) AS CurrentDeductionHours FROM rb_class_check ch WHERE `Status` =0 GROUP BY ch.OrderGuestId) cc on cc.OrderGuestId = g.Id
)q GROUP BY q.OrderId) ttt on ttt.OrderId = o.OrderId
WHERE o.Group_Id={group_Id} and o.OrderState <> 3 and o.EnterID >0 {where} and o.CreateTime >='{startMonth}' and o.CreateTime <='{endMonth}'
GROUP BY o.EnterID ORDER BY SUM(o.Income + o.PlatformTax - o.Refund) DESC
";
return GetPage<RB_Order_ViewModel>(pageIndex, pageSize, out count, sql).ToList();
}
/// <summary>
/// 获取销售业绩统计
/// </summary>
/// <param name="saleId"></param>
/// <param name="schoolId"></param>
/// <param name="startMonth"></param>
/// <param name="endMonth"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public List<RB_Order_ViewModel> GetSaleAchievementsRankStatisticsToList(int saleId, int schoolId, string startMonth, string endMonth, int group_Id)
{
string where = "";
if (saleId > 0)
{
where += $@" and o.EnterID ={saleId}";
}
if (schoolId >= 0)
{
where += $@" and o.School_Id ={schoolId}";
}
string sql = $@"SELECT o.EnterID,SUM(o.PreferPrice) as PreferPrice,SUM(o.Income) AS Income,sum(o.PlatformTax) as PlatformTax,SUM(o.Refund) AS Refund,SUM(o.GuestNum) AS GuestNum,
SUM(CASE WHEN c.ClassStatus =3 then o.GuestNum else 0 END) AS JKNum,COUNT(0) AS CancelNum, SUM(IFNULL(ttt.XFMoney,0)) AS YSKMoney
FROM rb_order o
LEFT JOIN rb_class c on o.ClassId = c.ClassId
LEFT JOIN (SELECT q.OrderId,
SUM((case when q.ClassHours>0 and q.TotalSub >0 then
(q.CourseFee - q.DiscountMoney / q.TotalSub * q.CourseFee) /q.ClassHours
else 0 END) * IFNULL(q.CurrentDeductionHours,0)) AS XFMoney
FROM(
SELECT g.Id,g.OrderId
,ec.FirstCourseFee + ec.SecondCourseFee + ec.ThirdCourseFee as CourseFee
,ec.FirstDiscountMoney + ec.SecondDiscountMoney + ec.ThirdDiscountMoney as DiscountMoney
,ec.FirstCourseFee + ec.SecondCourseFee + ec.ThirdCourseFee
+ec.FirstBookFee + ec.SecondBookFee + ec.ThirdBookFee
+ec.FirstClassFee + ec.SecondClassFee + ec.ThirdClassFee as TotalSub
,ec.FirstClassHours + ec.SecondClassHours + ec.ThirdClassHours as ClassHours
,cc.CurrentDeductionHours
FROM rb_order_guest g
INNER JOIN rb_education_contract ec on g.Id = ec.GuestId
LEFT JOIN (SELECT ch.OrderGuestId, SUM(ch.CurrentDeductionHours) AS CurrentDeductionHours FROM rb_class_check ch WHERE `Status` =0 GROUP BY ch.OrderGuestId) cc on cc.OrderGuestId = g.Id
)q GROUP BY q.OrderId) ttt on ttt.OrderId = o.OrderId
WHERE o.Group_Id={group_Id} and o.OrderState <> 3 and o.EnterID >0 {where} and o.CreateTime >='{startMonth}' and o.CreateTime <='{endMonth}'
GROUP BY o.EnterID ORDER BY SUM(o.Income + o.PlatformTax - o.Refund) DESC
";
return Get<RB_Order_ViewModel>(sql).ToList();
}
#endregion #endregion
} }
} }
...@@ -439,12 +439,17 @@ FROM ...@@ -439,12 +439,17 @@ FROM
{ {
where.AppendFormat($@" AND STR_TO_DATE( CONCAT(DATE_FORMAT(now(),'%Y'),'-',DATE_FORMAT(b.BirthDate,'%m-%d')), '%Y-%m-%d') <= DATE_FORMAT('{query.EndBirthDate}' , '%Y-%m-%d') "); where.AppendFormat($@" AND STR_TO_DATE( CONCAT(DATE_FORMAT(now(),'%Y'),'-',DATE_FORMAT(b.BirthDate,'%m-%d')), '%Y-%m-%d') <= DATE_FORMAT('{query.EndBirthDate}' , '%Y-%m-%d') ");
} }
if (query.IsHoursStatistics == 1)
{
where.AppendFormat(" AND ((B.LeaveStatus=4 AND b.{0}>='{1}') or ", nameof(Employee_ViewModel.LeaveTime), query.HoursStartTime);
where.AppendFormat(" (B.LeaveStatus<>4 and b.{0}<='{1} 23:59:59')) ", nameof(Employee_ViewModel.EntryTime), query.HoursEndTime);
}
} }
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT ar.AccountRemark,A.Id,A.Account,A.AccountId,A.Group_Id,A.School_Id,A.EmployeeName,A.UserIcon,A.IDCard,A.Sex,A.Education,A.EntryTime,A.Address,A.BirthDate SELECT ar.AccountRemark,A.Id,A.Account,A.AccountId,A.Group_Id,A.School_Id,A.EmployeeName,A.UserIcon,A.IDCard,A.Sex,A.Education,A.EntryTime,A.Address,A.BirthDate
,A.LeaveStatus,A.LeaveTime,A.EmployeeTel,A.AccountType,A.Email,IFNULL(A.DirectSupervisor,0) AS DirectSupervisor ,A.LeaveStatus,A.LeaveTime,A.EmployeeTel,A.AccountType,A.Email,A.BaseHourFee,IFNULL(A.DirectSupervisor,0) AS DirectSupervisor
,IFNULL(G.GroupName,'') AS GroupName,IFNULL(s.SName,'') AS SchoolName ,IFNULL(G.GroupName,'') AS GroupName,IFNULL(s.SName,'') AS SchoolName
,IFNULL(d.DeptId,0) AS Dept_Id,IFNULL(d.DeptName,'') AS DeptName,IFNULL(p.PostId,0) AS Post_Id, IFNULL(p.PostName,'') AS PostName ,IFNULL(d.DeptId,0) AS Dept_Id,IFNULL(d.DeptName,'') AS DeptName,IFNULL(p.PostId,0) AS Post_Id, IFNULL(p.PostName,'') AS PostName
,(CASE WHEN CONCAT(DATE_FORMAT(now(),'%Y'),'-',DATE_FORMAT(BirthDate,'%m-%d')) >= DATE_FORMAT(now(),'%Y-%m-%d') ,(CASE WHEN CONCAT(DATE_FORMAT(now(),'%Y'),'-',DATE_FORMAT(BirthDate,'%m-%d')) >= DATE_FORMAT(now(),'%Y-%m-%d')
...@@ -458,6 +463,7 @@ FROM ...@@ -458,6 +463,7 @@ FROM
,b.School_Id,IFNULL(B.MName,'') AS EmployeeName,B.MHead AS UserIcon,B.Dept_Id,B.Post_Id,B.IDCard ,b.School_Id,IFNULL(B.MName,'') AS EmployeeName,B.MHead AS UserIcon,B.Dept_Id,B.Post_Id,B.IDCard
,B.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate ,B.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate
,B.LeaveStatus,B.LeaveTime,B.MTel AS EmployeeTel,IFNULL(B.Email,'') AS Email ,B.LeaveStatus,B.LeaveTime,B.MTel AS EmployeeTel,IFNULL(B.Email,'') AS Email
,0 as BaseHourFee
FROM rb_manager AS B LEFT JOIN rb_account AS A ON A.AccountId=B.MId AND A.AccountType=1 FROM rb_manager AS B LEFT JOIN rb_account AS A ON A.AccountId=B.MId AND A.AccountType=1
WHERE 1=1 {0} {1} WHERE 1=1 {0} {1}
UNION ALL UNION ALL
...@@ -466,6 +472,7 @@ FROM ...@@ -466,6 +472,7 @@ FROM
,b.School_Id,IFNULL(B.TeacherName,'') AS EmployeeName,B.TeacherIcon AS UserIcon,B.Dept_Id,B.Post_Id,B.IDCard ,b.School_Id,IFNULL(B.TeacherName,'') AS EmployeeName,B.TeacherIcon AS UserIcon,B.Dept_Id,B.Post_Id,B.IDCard
,B.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate ,B.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate
,B.LeaveStatus,B.LeaveTime,B.TeacherTel AS EmployeeTel,IFNULL(B.Email,'') AS Email ,B.LeaveStatus,B.LeaveTime,B.TeacherTel AS EmployeeTel,IFNULL(B.Email,'') AS Email
,B.BaseHourFee
FROM rb_teacher AS B LEFT JOIN rb_account AS A ON A.AccountId=B.TId AND A.AccountType=2 FROM rb_teacher AS B LEFT JOIN rb_account AS A ON A.AccountId=B.TId AND A.AccountType=2
WHERE 1=1 {0} {2} WHERE 1=1 {0} {2}
UNION ALL UNION ALL
...@@ -474,6 +481,7 @@ FROM ...@@ -474,6 +481,7 @@ FROM
,b.School_Id,IFNULL(B.AssistName,'') AS EmployeeName,B.AssistIcon AS UserIcon,B.Dept_Id,B.Post_Id,B.IDCard ,b.School_Id,IFNULL(B.AssistName,'') AS EmployeeName,B.AssistIcon AS UserIcon,B.Dept_Id,B.Post_Id,B.IDCard
,B.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate ,B.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate
,B.LeaveStatus,B.LeaveTime,B.AssistTel AS EmployeeTel,IFNULL(B.Email,'') AS Email ,B.LeaveStatus,B.LeaveTime,B.AssistTel AS EmployeeTel,IFNULL(B.Email,'') AS Email
,0 as BaseHourFee
FROM rb_assist AS B LEFT JOIN rb_account AS A ON A.AccountId=B.AId AND A.AccountType=3 FROM rb_assist AS B LEFT JOIN rb_account AS A ON A.AccountId=B.AId AND A.AccountType=3
WHERE 1=1 {0} {3} WHERE 1=1 {0} {3}
) AS A LEFT JOIN rb_group AS g ON A.Group_Id=g.GId ) AS A LEFT JOIN rb_group AS g ON A.Group_Id=g.GId
......
{ {
"version": 1, "version": 1,
"dgSpecHash": "LgL2Kme2KdvBDmiwLBiZSHZQIhSbftVOYLF3cgdRTqmOIupjnzmMAo8WGNm0w11fwaLgctzrNYHOF9O2LJ0Izw==", "dgSpecHash": "bcBFqC0lSOf2P/OcaIHptdi94ZP7u8NeMXGMUcFUhol4ZQWk+2PSkX9H+JuS9rgjAK7d95C5EAseRQkcK41O9Q==",
"success": true "success": true
} }
\ No newline at end of file
...@@ -1208,7 +1208,7 @@ namespace Edu.WebApi.Controllers.Finance ...@@ -1208,7 +1208,7 @@ namespace Edu.WebApi.Controllers.Finance
new ExcelColumn(value: item.StudentName){ Rowspan = Count }, new ExcelColumn(value: item.StudentName){ Rowspan = Count },
new ExcelColumn(value: item.CreateByName){ Rowspan = Count }, new ExcelColumn(value: item.CreateByName){ Rowspan = Count },
new ExcelColumn(value: item.TotalClassHours.ToString()){ Rowspan = Count }, new ExcelColumn(value: item.TotalClassHours.ToString()){ Rowspan = Count },
new ExcelColumn(value: Math.Round(item.TotalCourseFee / item.TotalClassHours, 2, MidpointRounding.AwayFromZero).ToString()){ Rowspan = Count }, new ExcelColumn(value: (item.TotalClassHours > 0 ? Math.Round(item.TotalCourseFee / item.TotalClassHours, 2, MidpointRounding.AwayFromZero) : 0).ToString()){ Rowspan = Count },
new ExcelColumn(value: item.TotalCourseFee.ToString()){ Rowspan = Count }, new ExcelColumn(value: item.TotalCourseFee.ToString()){ Rowspan = Count },
new ExcelColumn(value: item.TotalBookFee.ToString()){ Rowspan = Count }, new ExcelColumn(value: item.TotalBookFee.ToString()){ Rowspan = Count },
new ExcelColumn(value: item.TotalClassFee.ToString()){ Rowspan = Count }, new ExcelColumn(value: item.TotalClassFee.ToString()){ Rowspan = Count },
...@@ -1426,5 +1426,507 @@ namespace Edu.WebApi.Controllers.Finance ...@@ -1426,5 +1426,507 @@ namespace Edu.WebApi.Controllers.Finance
} }
#endregion #endregion
#region 报表统计 6.28
/// <summary>
/// 获取老师课时统计
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetTeacherConsumptionHoursStatistics() {
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
int TeacherId = base.ParmJObj.GetInt("TeacherId", 0);
int SchoolId = base.ParmJObj.GetInt("SchoolId", 0);
string StartMonth = base.ParmJObj.GetStringValue("StartMonth");
string EndMonth = base.ParmJObj.GetStringValue("EndMonth");
if (string.IsNullOrEmpty(StartMonth)) {
return ApiResult.ParamIsNull("请选择开始月份");
}
if (string.IsNullOrEmpty(EndMonth)) {
return ApiResult.ParamIsNull("请选择结束月份");
}
try
{
StartMonth = Convert.ToDateTime(StartMonth + "-01").ToString("yyyy-MM-dd");
EndMonth = Convert.ToDateTime(EndMonth + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
}
catch (Exception)
{
return ApiResult.Failed("日期格式有误");
}
var list = financeModule.GetTeacherConsumptionHoursStatistics(pageModel.PageIndex, pageModel.PageSize, out long count, TeacherId, SchoolId, StartMonth, EndMonth, userInfo.Group_Id);
pageModel.Count = Convert.ToInt32(count);
pageModel.PageData = list;
return ApiResult.Success("", pageModel);
}
/// <summary>
/// 获取老师课时统计 Excel导出
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult GetTeacherConsumptionHoursStatisticsToExcel()
{
List<ExcelDataSource> slist = new List<ExcelDataSource>();
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value:"序号"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"校区"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"专职/兼职"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"老师姓名"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"上课课时"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"上课金额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"课时转换/小时"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"课时费"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER }
}
};
slist.Add(header);
string ExcelName = "课耗统计汇总表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
var userInfo = base.UserInfo;
int TeacherId = base.ParmJObj.GetInt("TeacherId", 0);
int SchoolId = base.ParmJObj.GetInt("SchoolId", 0);
string StartMonth = base.ParmJObj.GetStringValue("StartMonth");
string EndMonth = base.ParmJObj.GetStringValue("EndMonth");
if (string.IsNullOrEmpty(StartMonth))
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
if (string.IsNullOrEmpty(EndMonth))
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
try
{
StartMonth = Convert.ToDateTime(StartMonth + "-01").ToString("yyyy-MM-dd");
EndMonth = Convert.ToDateTime(EndMonth + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
}
catch (Exception)
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
var list = financeModule.GetTeacherConsumptionHoursStatisticsToExcel(TeacherId, SchoolId, StartMonth, EndMonth, userInfo.Group_Id);
try
{
slist.AddRange(list);
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>
/// <returns></returns>
public ApiResult GetTeacherConsumptionHoursDetialPageList() {
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
int TeacherId = base.ParmJObj.GetInt("TeacherId", 0);
int SchoolId = base.ParmJObj.GetInt("SchoolId", 0);
string StartMonth = base.ParmJObj.GetStringValue("StartMonth");
string EndMonth = base.ParmJObj.GetStringValue("EndMonth");
if (string.IsNullOrEmpty(StartMonth))
{
return ApiResult.ParamIsNull("请选择开始月份");
}
if (string.IsNullOrEmpty(EndMonth))
{
return ApiResult.ParamIsNull("请选择结束月份");
}
try
{
StartMonth = Convert.ToDateTime(StartMonth + "-01").ToString("yyyy-MM-dd");
EndMonth = Convert.ToDateTime(EndMonth + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
}
catch (Exception)
{
return ApiResult.Failed("日期格式有误");
}
var list = financeModule.GetTeacherConsumptionHoursDetialPageList(pageModel.PageIndex, pageModel.PageSize, out long count, TeacherId, SchoolId, StartMonth, EndMonth, userInfo.Group_Id);
pageModel.Count = Convert.ToInt32(count);
pageModel.PageData = list;
return ApiResult.Success("", pageModel);
}
/// <summary>
/// 获取老师课时统计明细列表 Excel导出
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult GetTeacherConsumptionHoursDetialPageListToExcel()
{
List<ExcelDataSource> slist = new List<ExcelDataSource>();
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value:"上课日期"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"上课时间段"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"班级"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"课程"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"老师名称"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"上课课时"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"课时转换/小时"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"课时费单价元/小时"){CellWidth=25,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"老师课时费"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
}
};
slist.Add(header);
string ExcelName = "课耗老师明细表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
int TeacherId = base.ParmJObj.GetInt("TeacherId", 0);
int SchoolId = base.ParmJObj.GetInt("SchoolId", 0);
string StartMonth = base.ParmJObj.GetStringValue("StartMonth");
string EndMonth = base.ParmJObj.GetStringValue("EndMonth");
if (string.IsNullOrEmpty(StartMonth))
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
if (string.IsNullOrEmpty(EndMonth))
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
try
{
StartMonth = Convert.ToDateTime(StartMonth + "-01").ToString("yyyy-MM-dd");
EndMonth = Convert.ToDateTime(EndMonth + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
}
catch (Exception)
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
var list = financeModule.GetTeacherConsumptionHoursDetialPageListToExcel(TeacherId, SchoolId, StartMonth, EndMonth, userInfo.Group_Id);
try
{
slist.AddRange(list);
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>
/// <returns></returns>
public ApiResult GetStudentConsumptionHoursDetialPageList()
{
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
int TeacherId = base.ParmJObj.GetInt("TeacherId", 0);
int SchoolId = base.ParmJObj.GetInt("SchoolId", 0);
string StartMonth = base.ParmJObj.GetStringValue("StartMonth");
string EndMonth = base.ParmJObj.GetStringValue("EndMonth");
string StudentName = base.ParmJObj.GetStringValue("StudentName");//学生名称
int OrderId = base.ParmJObj.GetInt("OrderId", 0);//订单
string ContractNo = base.ParmJObj.GetStringValue("ContractNo");//合同编号
if (string.IsNullOrEmpty(StartMonth))
{
return ApiResult.ParamIsNull("请选择开始月份");
}
if (string.IsNullOrEmpty(EndMonth))
{
return ApiResult.ParamIsNull("请选择结束月份");
}
try
{
StartMonth = Convert.ToDateTime(StartMonth + "-01").ToString("yyyy-MM-dd");
EndMonth = Convert.ToDateTime(EndMonth + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
}
catch (Exception)
{
return ApiResult.Failed("日期格式有误");
}
var list = financeModule.GetStudentConsumptionHoursDetialPageList(pageModel.PageIndex, pageModel.PageSize, out long count, TeacherId, SchoolId, StartMonth, EndMonth, StudentName, OrderId, ContractNo, userInfo.Group_Id);
pageModel.Count = Convert.ToInt32(count);
pageModel.PageData = list;
return ApiResult.Success("", pageModel);
}
/// <summary>
/// 获取学生课时统计明细列表 Excel导出
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult GetStudentConsumptionHoursDetialPageListToExcel()
{
List<ExcelDataSource> slist = new List<ExcelDataSource>();
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value:"订单号"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"合同号"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"上课日期"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"上课时间段"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"学生名字"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"班级"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"课程"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"老师名称"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"上课课时"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"合同单价(元/课时)"){CellWidth=25,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"课耗(消耗合同金额)"){CellWidth=25,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"提成销售"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"提成老师"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
}
};
slist.Add(header);
string ExcelName = "课耗学生明细表" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
int TeacherId = base.ParmJObj.GetInt("TeacherId", 0);
int SchoolId = base.ParmJObj.GetInt("SchoolId", 0);
string StartMonth = base.ParmJObj.GetStringValue("StartMonth");
string EndMonth = base.ParmJObj.GetStringValue("EndMonth");
string StudentName = base.ParmJObj.GetStringValue("StudentName");//学生名称
int OrderId = base.ParmJObj.GetInt("OrderId", 0);//订单
string ContractNo = base.ParmJObj.GetStringValue("ContractNo");//合同编号
if (string.IsNullOrEmpty(StartMonth))
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
if (string.IsNullOrEmpty(EndMonth))
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
try
{
StartMonth = Convert.ToDateTime(StartMonth + "-01").ToString("yyyy-MM-dd");
EndMonth = Convert.ToDateTime(EndMonth + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
}
catch (Exception)
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
var list = financeModule.GetStudentConsumptionHoursDetialPageListToExcel(TeacherId, SchoolId, StartMonth, EndMonth, StudentName, OrderId, ContractNo, userInfo.Group_Id);
try
{
slist.AddRange(list);
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>
/// <returns></returns>
[HttpPost]
public ApiResult GetSaleAchievementsRankStatistics()
{
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
int SaleId = base.ParmJObj.GetInt("SaleId", 0);
int SchoolId = base.ParmJObj.GetInt("SchoolId", 0);
string StartMonth = base.ParmJObj.GetStringValue("StartMonth");
string EndMonth = base.ParmJObj.GetStringValue("EndMonth");
if (string.IsNullOrEmpty(StartMonth))
{
return ApiResult.ParamIsNull("请选择开始月份");
}
if (string.IsNullOrEmpty(EndMonth))
{
return ApiResult.ParamIsNull("请选择结束月份");
}
try
{
StartMonth = Convert.ToDateTime(StartMonth + "-01").ToString("yyyy-MM-dd");
EndMonth = Convert.ToDateTime(EndMonth + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
}
catch (Exception)
{
return ApiResult.Failed("日期格式有误");
}
var list = financeModule.GetSaleAchievementsRankStatistics(pageModel.PageIndex, pageModel.PageSize, out long count, SaleId, SchoolId, StartMonth, EndMonth, userInfo.Group_Id);
pageModel.Count = Convert.ToInt32(count);
pageModel.PageData = list.Select(x => new
{
x.EnterID,
x.EnterName,
x.PreferPrice,
x.Income,
x.PlatformTax,
x.Refund,
RIncome = x.Income - x.Refund,
YSKMoney = Math.Round(x.YSKMoney, 6, MidpointRounding.AwayFromZero),
x.GuestNum,
x.JKNum,
OrderNum = x.CancelNum
});
return ApiResult.Success("", pageModel);
}
/// <summary>
/// 获取销售业绩统计
/// </summary>
/// <returns></returns>
[HttpPost]
[Obsolete]
public FileContentResult GetSaleAchievementsRankStatisticsToExcel()
{
List<ExcelDataSource> slist = new List<ExcelDataSource>();
ExcelDataSource header = new ExcelDataSource()
{
ExcelRows = new List<ExcelColumn>(30) {
new ExcelColumn(value:"序号"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"业务员"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"业绩(应收金额)"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"实收金额"){CellWidth=20,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"退费金额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"退后实收金额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"平台税金"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"上课金额"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"报名人数"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"结课人数"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
new ExcelColumn(value:"订单数量"){CellWidth=15,HAlignmentEnum= HAlignmentEnum.CENTER,VAlignmentEnum= VAlignmentEnum.CENTER },
}
};
slist.Add(header);
string ExcelName = "销售业绩统计" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
var userInfo = base.UserInfo;
var pageModel = JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
int SaleId = base.ParmJObj.GetInt("SaleId", 0);
int SchoolId = base.ParmJObj.GetInt("SchoolId", 0);
string StartMonth = base.ParmJObj.GetStringValue("StartMonth");
string EndMonth = base.ParmJObj.GetStringValue("EndMonth");
if (string.IsNullOrEmpty(StartMonth))
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
if (string.IsNullOrEmpty(EndMonth))
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
try
{
StartMonth = Convert.ToDateTime(StartMonth + "-01").ToString("yyyy-MM-dd");
EndMonth = Convert.ToDateTime(EndMonth + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
}
catch (Exception)
{
var byteData1 = ExcelTempLateHelper.ToExcelExtend(slist);
return File(byteData1, "application/octet-stream", ExcelName);
}
var list = financeModule.GetSaleAchievementsRankStatisticsToExcel(SaleId, SchoolId, StartMonth, EndMonth, userInfo.Group_Id);
try
{
int Num = 1;
foreach (var item in list) {
item.YSKMoney = Math.Round(item.YSKMoney, 6, MidpointRounding.AwayFromZero);
ExcelDataSource firstRow = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: Num.ToString()){ },
new ExcelColumn(value: item.EnterName){ },
new ExcelColumn(value: item.PreferPrice.ToString("#0.00")){ },
new ExcelColumn(value: item.Income.ToString("#0.00")){ },
new ExcelColumn(value: item.Refund.ToString("#0.00")){ },
new ExcelColumn(value: (item.Income - item.Refund).ToString("#0.00")){ },
new ExcelColumn(value: item.PlatformTax.ToString("#0.00")){ },
new ExcelColumn(value: item.YSKMoney.ToString("#0.000000")){ },
new ExcelColumn(value: item.GuestNum.ToString()){ },
new ExcelColumn(value: item.JKNum.ToString()){ },
new ExcelColumn(value: item.CancelNum.ToString()){ },
}
};
slist.Add(firstRow);
Num++;
}
ExcelDataSource firstRowT = new ExcelDataSource(30)
{
ExcelRows = new List<ExcelColumn>()
{
new ExcelColumn(value: "合计"){ },
new ExcelColumn(value: ""){ },
new ExcelColumn(value: list.Sum(x=>x.PreferPrice).ToString("#0.00")){ },
new ExcelColumn(value: list.Sum(x=>x.Income).ToString("#0.00")){ },
new ExcelColumn(value: list.Sum(x=>x.Refund).ToString("#0.00")){ },
new ExcelColumn(value: list.Sum(x=>x.Income - x.Refund).ToString("#0.00")){ },
new ExcelColumn(value: list.Sum(x=>x.PlatformTax).ToString("#0.00")){ },
new ExcelColumn(value: list.Sum(x=>x.YSKMoney).ToString("#0.000000")){ },
new ExcelColumn(value: list.Sum(x=>x.GuestNum).ToString()){ },
new ExcelColumn(value: list.Sum(x=>x.JKNum).ToString()){ },
new ExcelColumn(value: list.Sum(x=>x.CancelNum).ToString()){ },
}
};
slist.Add(firstRowT);
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
} }
} }
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