Commit 71240059 authored by 吴春's avatar 吴春

Merge branch 'master' of http://gitlab.oytour.com/Kui2/education

parents 46997536 d53034ca
using System;
using System.Collections.Generic;
using System.Text;
using VT.FW.DB;
namespace Edu.Model.Entity.Course
{
/// <summary>
/// 学员补课表实体类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_Student_Makeup
{
/// <summary>
/// 主键
/// </summary>
public int Id { get; set; }
/// <summary>
/// 学员编号
/// </summary>
public int OrderGuestId { get; set; }
/// <summary>
/// 班级编号
/// </summary>
public int ClassId { get; set; }
/// <summary>
/// 上课日期
/// </summary>
public DateTime ClassDate { get; set; }
/// <summary>
/// 补课状态(1-正常,2-已处理,3-未处理)
/// </summary>
public int MakeUpStatus { get; set; }
/// <summary>
/// 签到编号
/// </summary>
public int ClassCheckId { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 处理人
/// </summary>
public int DealBy { get; set; }
/// <summary>
/// 处理时间
/// </summary>
public DateTime DealTime { get; set; }
}
}
......@@ -23,5 +23,10 @@ namespace Edu.Model.ViewModel.Course
/// 完成分钟数
/// </summary>
public decimal FinishMinutes { get; set; }
/// <summary>
/// 完成课时数
/// </summary>
public decimal FinishClassHours { get; set; }
}
}
......@@ -53,6 +53,11 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public int CheckNum { get; set; }
/// <summary>
/// 合同课时单价
/// </summary>
public decimal UnitPrice { get; set; }
/// <summary>
/// 订单id
/// </summary>
......@@ -92,11 +97,41 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public string ClassName { get; set; }
/// <summary>
/// 班级类型
/// </summary>
public int ClassType { get; set; }
/// <summary>
/// 课程id
/// </summary>
public int CouseId { get; set; }
/// <summary>
/// 课程名称
/// </summary>
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>
......
......@@ -30,6 +30,31 @@ namespace Edu.Model.ViewModel.Course
#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>
......
......@@ -49,6 +49,11 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public string GuestName { get; set; }
/// <summary>
/// 业务员名称
/// </summary>
public string EnterName { get; set; }
/// <summary>
/// 订单查询状态 1正常 2取消
/// </summary>
......@@ -122,6 +127,16 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public int CancelNum { get; set; }
/// <summary>
/// 结课数量
/// </summary>
public int JKNum { get; set; }
/// <summary>
/// 已上课金额(学生)
/// </summary>
public decimal YSKMoney { get; set; }
/// <summary>
/// 留学就业产品名称
/// </summary>
......
using Edu.Model.Entity.Course;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Model.ViewModel.Course
{
/// <summary>
/// 学员补课表扩展实体类
/// </summary>
public class RB_Student_Makeup_ViewModel: RB_Student_Makeup
{
/// <summary>
/// 学员状态
/// </summary>
public int GuestState { get; set; }
/// <summary>
/// 处理状态字符串
/// </summary>
public string MakeUpStatusStr
{
get
{
string str = "";
switch (this.MakeUpStatus)
{
case 1: str = "正常"; break;
case 2: str = "已处理"; break;
case 3: str = "未处理"; break;
}
return str;
}
}
/// <summary>
/// 学员状态
/// </summary>
public string GuestStateStr
{
get
{
string str = "";
switch (this.GuestState)
{
case 1: str = "正常"; break;
case 2: str = "退学"; break;
case 3: str = "申请退学中"; break;
case 4: str = "驳回申请"; break;
case 5: str = "停课"; break;
}
return str;
}
}
/// <summary>
/// 学员姓名
/// </summary>
public string GuestName { get; set; }
/// <summary>
/// 班级名称
/// </summary>
public string ClassName { get; set; }
/// <summary>
/// 课程名称
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 教师名称
/// </summary>
public string TeacherName { get; set; }
/// <summary>
/// 教室名称
/// </summary>
public string RoomName { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string StartDate { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndDate { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
}
}
......@@ -97,6 +97,21 @@ namespace Edu.Model.ViewModel.User
/// </summary>
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>
......@@ -171,5 +186,10 @@ namespace Edu.Model.ViewModel.User
/// 直接主管ids
/// </summary>
public string DirectSupervisorIds { get; set; }
/// <summary>
/// 基础课时费
/// </summary>
public decimal BaseHourFee { get; set; }
}
}
......@@ -132,6 +132,11 @@ namespace Edu.Module.Course
/// </summary>
private readonly RB_Class_RoomUseLogRepository class_RoomUseLogRepository = new RB_Class_RoomUseLogRepository();
/// <summary>
/// 学员补课记录表仓储层对象
/// </summary>
private readonly RB_Student_MakeupRepository student_MakeupRepository = new RB_Student_MakeupRepository();
/// <summary>
/// 获取班级列表
/// </summary>
......@@ -1234,16 +1239,16 @@ namespace Edu.Module.Course
}
/// <summary>
/// 获取签到记录分页列表
/// 获取补课记录分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetClassCheckPageModule(int pageIndex, int pageSize, out long rowsCount, RB_Class_Check_ViewModel query)
public List<RB_Student_Makeup_ViewModel> GetStudentMakeupPageModule(int pageIndex, int pageSize, out long rowsCount, RB_Student_Makeup_ViewModel query)
{
return classCheckRepository.GetClassCheckPageRepository(pageIndex, pageSize, out rowsCount, query);
return student_MakeupRepository.GetStudentMakeupPageRepository(pageIndex, pageSize, out rowsCount, query);
}
/// <summary>
......@@ -1270,14 +1275,7 @@ namespace Edu.Module.Course
if (flag)
{
var guestModel = order_GuestRepository.GetEntity(item.OrderGuestId);
if (!(guestModel.GuestState == 1 || guestModel.GuestState == 3))
{
item.CurrentDeductionHours = 0;
}
else
{
item.CurrentDeductionHours = totalMinutes / BasicMinutes;
}
item.CurrentDeductionHours = totalMinutes / BasicMinutes;
if (item.ClassCheckId > 0)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
......@@ -1299,9 +1297,25 @@ namespace Edu.Module.Course
item.ClassCheckId = newId;
flag = newId > 0;
}
if (flag && item.CheckStatus == 1)
var oldModel= classCheckRepository.GetGuestFinishMinutesRepository(item.OrderGuestId.ToString(), ClassCheckId:item.ClassCheckId)?.FirstOrDefault();
if (flag )
{
flag = CalcGuestHoursModule(guestModel, item);
//缺勤
if (item.CheckStatus == 1)
{
flag = CalcGuestHoursModule(guestModel, item);
}
//出勤
else
{
//更新学员完成课时
var completeHours = (oldModel?.FinishClassHours ?? 0) + item.CurrentDeductionHours;
Dictionary<string, object> orderFileds = new Dictionary<string, object>()
{
{nameof(RB_Order_Guest_ViewModel.CompleteHours),completeHours }
};
flag = order_GuestRepository.Update(orderFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), item.OrderGuestId));
}
}
}
}
......@@ -1318,40 +1332,17 @@ namespace Edu.Module.Course
{
List<RB_Class_Check_ViewModel> list = new List<RB_Class_Check_ViewModel>();
bool flag = false;
var checkList = classCheckRepository.GetClassCheckListRepository(new RB_Class_Check_ViewModel());
var basic = class_ConfigRepository.GetBasicMinutesRepository(100000);
var checkList = classCheckRepository.GetGuestFinishMinutesRepository("");
if (checkList != null && checkList.Count > 0)
{
classCheckRepository.ClearCheck();
string classIds = string.Join(",", checkList.Select(qitem => qitem.ClassId));
var planList = class_PlanRepository.GetClassPlanListExtRepository(new RB_Class_Plan_ViewModel() { QClassIds = classIds });
foreach (var item in checkList)
{
var tempPlanList = planList.Where(qitem => qitem.ClassId == item.ClassId && qitem.ClassDate == item.ClassDate).ToList();
foreach (var subItem in tempPlanList)
Dictionary<string, object> guestFileds = new Dictionary<string, object>()
{
RB_Class_Check_ViewModel model = new RB_Class_Check_ViewModel()
{
ClassCheckId = 0,
ClassId = item.ClassId,
ClassDate = item.ClassDate,
Status = item.Status,
ClassRoomId = item.ClassRoomId,
Group_Id = item.Group_Id,
School_Id = item.School_Id,
TeacherId = item.TeacherId,
OrderGuestId = item.OrderGuestId,
CheckStatus = item.CheckStatus,
CreateBy = item.CreateBy,
CreateTime = item.CreateTime,
StudyNum = subItem.ClassMinutes,
MakeUpStatus = item.MakeUpStatus,
CurrentDeductionHours = subItem.ClassMinutes / basic,
IsAbsentHours = item.IsAbsentHours,
ClassTimeId = subItem.ClassTimeId
};
flag = classCheckRepository.Insert(model) > 0;
}
{ nameof(RB_Order_Guest_ViewModel.CompleteHours),item.FinishClassHours }
};
flag = order_GuestRepository.Update(guestFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), item.GuestId));
}
}
return flag;
......@@ -1409,6 +1400,22 @@ namespace Edu.Module.Course
};
flag = classCheckRepository.Update(checkFileds, checkWheres);
}
if (flag)
{
flag = student_MakeupRepository.Insert(new RB_Student_Makeup()
{
Id = 0,
ClassCheckId = checkModel.ClassCheckId,
ClassDate = checkModel.ClassDate,
ClassId = checkModel.ClassId,
CreateBy = checkModel.CreateBy,
CreateTime = checkModel.CreateTime,
Group_Id = checkModel.Group_Id,
MakeUpStatus = 3,
OrderGuestId = checkModel.OrderGuestId
}) > 0;
}
}
return flag;
}
......@@ -1420,30 +1427,43 @@ namespace Edu.Module.Course
/// <param name="ClassCheckId"></param>
/// <param name="GuestId"></param>
/// <returns></returns>
public virtual bool SetMakeUpStatusModule(int MakeUpStatus, int ClassCheckId, int GuestId)
[TransactionCallHandler]
public virtual bool SetMakeUpStatusModule(int Id,int MakeUpStatus, int ClassCheckId, int GuestId,UserInfo userinfo)
{
bool flag = true;
if (MakeUpStatus == 2)
{
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Class_Check_ViewModel.MakeUpStatus), MakeUpStatus }
};
List<WhereHelper> checkWheres = new List<WhereHelper>()
Dictionary<string, object> makeUpFileds = new Dictionary<string, object>()
{
new WhereHelper (nameof(RB_Class_Check_ViewModel.ClassCheckId),ClassCheckId),
{nameof(RB_Student_Makeup_ViewModel.MakeUpStatus), MakeUpStatus },
{nameof(RB_Student_Makeup_ViewModel.DealBy),userinfo.Id},
{nameof(RB_Student_Makeup_ViewModel.DealTime),DateTime.Now},
};
flag = classCheckRepository.Update(fileds, checkWheres);
Dictionary<string, object> guestFileds = new Dictionary<string, object>()
//更新补课表状态
flag = student_MakeupRepository.Update(makeUpFileds, new WhereHelper(nameof(RB_Student_Makeup_ViewModel.Id), Id));
if (flag)
{
{ nameof(RB_Order_Guest_ViewModel.GuestState), 1 }
};
List<WhereHelper> wheres = new List<WhereHelper>()
Dictionary<string, object> fileds = new Dictionary<string, object>()
{
{nameof(RB_Class_Check_ViewModel.MakeUpStatus), MakeUpStatus }
};
//更新签到表状态
flag = classCheckRepository.Update(fileds, new WhereHelper(nameof(RB_Class_Check_ViewModel.ClassCheckId), ClassCheckId));
}
if (flag)
{
new WhereHelper (nameof(RB_Order_Guest_ViewModel.Id),GuestId),
};
flag = order_GuestRepository.Update(guestFileds, wheres);
//更新学员状态和已补课时
var guestModel= order_GuestRepository.GetEntity(GuestId);
var checkModel = classCheckRepository.GetEntity(ClassCheckId);
var makeUpHours = (guestModel?.MakeUpHours ?? 0) + (checkModel?.CurrentDeductionHours??0);
Dictionary<string, object> guestFileds = new Dictionary<string, object>()
{
{ nameof(RB_Order_Guest_ViewModel.GuestState), 1 },
{ nameof(RB_Order_Guest_ViewModel.MakeUpHours),makeUpHours }
};
flag = order_GuestRepository.Update(guestFileds, new WhereHelper(nameof(RB_Order_Guest_ViewModel.Id), GuestId));
}
}
return flag;
}
......
......@@ -2287,7 +2287,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 });
//用户信息
......
......@@ -84,6 +84,22 @@ namespace Edu.Module.Finance
/// </summary>
private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
/// <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>
private readonly RB_OrderRepository orderRepository = new RB_OrderRepository();
......@@ -2276,5 +2292,512 @@ namespace Edu.Module.Finance
}
#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
}
}
......@@ -64,100 +64,6 @@ WHERE 1=1 AND A.Status=0 ");
return Get<RB_Class_Check_ViewModel>(builder.ToString()).ToList();
}
/// <summary>
/// 获取签到记录分页列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Class_Check_ViewModel> GetClassCheckPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Class_Check_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,IFNULL(B.GuestName,'') AS GuestName,IFNULL(B.GuestState,0) AS GuestState,IFNULL(C.ClassName,'') AS ClassName
,IFNULL(D.CourseName,'') AS CourseName,IFNULL(E.RoomName,'') AS RoomName,IFNULL(F.TeacherName,'') AS TeacherName
FROM RB_Class_Check AS A LEFT JOIN rb_order_guest AS B ON A.OrderGuestId=B.Id
LEFT JOIN rb_class AS C ON A.ClassId=C.ClassId
LEFT JOIN rb_course AS D ON C.CouseId=D.CourseId
LEFT JOIN rb_class_room AS E ON A.ClassRoomId=E.RoomId
LEFT JOIN rb_teacher AS F ON A.TeacherId=F.TId
WHERE 1=1 AND A.Status=0 ");
builder.AppendFormat(" AND A.{0} IN(2,3) ", nameof(RB_Class_Check_ViewModel.MakeUpStatus));
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.Group_Id), query.Group_Id);
}
if (query.School_Id > 0)
{
//builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.School_Id), query.School_Id);
}
if (query.ClassId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.ClassId), query.ClassId);
}
if (!string.IsNullOrEmpty(query.Q_ClassIds))
{
builder.AppendFormat(" AND A.{0} in({1}) ", nameof(RB_Class_Check_ViewModel.ClassId), query.Q_ClassIds);
}
if (query.OrderGuestId > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.OrderGuestId), query.OrderGuestId);
}
if (!string.IsNullOrWhiteSpace(query.StartDate))
{
builder.AppendFormat(" AND DATE_FORMAT(A.{0},'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d') ", nameof(RB_Class_Check_ViewModel.ClassDate), query.StartDate);
}
if (!string.IsNullOrWhiteSpace(query.EndDate))
{
builder.AppendFormat(" AND DATE_FORMAT(A.{0},'%Y-%m-%d')<=DATE_FORMAT('{1}','%Y-%m-%d') ", nameof(RB_Class_Check_ViewModel.ClassDate), query.EndDate);
}
if (query.CheckStatus > -1)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.CheckStatus), query.CheckStatus);
}
if (query.IsAbsentHours > -1)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.IsAbsentHours), query.IsAbsentHours);
}
if (query.MakeUpStatus > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Check_ViewModel.MakeUpStatus), query.MakeUpStatus);
}
if (!string.IsNullOrEmpty(query.GuestName))
{
builder.AppendFormat(" AND B.{0} LIKE @GuestName ", nameof(RB_Order_Guest.GuestName));
parameters.Add("GuestName", "%" + query.GuestName.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.ClassName))
{
builder.AppendFormat(" AND C.{0} LIKE @ClassName ", nameof(RB_Class.ClassName));
parameters.Add("ClassName", "%" + query.ClassName.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.CourseName))
{
builder.AppendFormat(" AND D.{0} LIKE @CourseName ", nameof(RB_Course.CourseName));
parameters.Add("CourseName", "%" + query.CourseName.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.TeacherName))
{
builder.AppendFormat(" AND F.{0} LIKE @TeacherName ", nameof(RB_Teacher.TeacherName));
parameters.Add("TeacherName", "%" + query.TeacherName.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.RoomName))
{
builder.AppendFormat(" AND E.{0} LIKE @RoomName ", nameof(RB_Class_Room.RoomName));
parameters.Add("RoomName", "%" + query.RoomName.Trim() + "%");
}
}
builder.AppendFormat(" ORDER BY A.{0} DESC ", nameof(RB_Class_Check_ViewModel.ClassDate));
return GetPage<RB_Class_Check_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
/// <summary>
/// 获取签到列表
/// </summary>
......@@ -166,7 +72,10 @@ WHERE 1=1 AND A.Status=0 ");
public List<RB_Class_Check_ViewModel> GetClassCheckStatistics(RB_Class_Check_ViewModel query)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" SELECT A.ClassId,A.ClassDate,COUNT(0) AS CheckNum FROM RB_Class_Check AS A WHERE 1=1 AND `Status` =0 and CheckStatus =0 ");
builder.AppendFormat(@"
SELECT A.ClassId,A.ClassDate,COUNT(0) AS CheckNum
FROM RB_Class_Check AS A
WHERE 1=1 AND `Status` =0 and CheckStatus =0 ");
if (query != null)
{
if (query.Group_Id > 0)
......@@ -240,19 +149,22 @@ WHERE 1=1 AND A.Status=0 ");
/// </summary>
/// <param name="guestIds">学员编号</param>
/// <returns></returns>
public List<GuestFinishMinute_ViewModel> GetGuestFinishMinutesRepository(string guestIds)
public List<GuestFinishMinute_ViewModel> GetGuestFinishMinutesRepository(string guestIds,int ClassCheckId=0)
{
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT B.OrderGuestId AS GuestId,SUM(IFNULL(B.FinishMinutes,0)) AS FinishMinutes
FROM
(
SELECT A.OrderGuestId, SUM(A.StudyNum) AS FinishMinutes
FROM rb_class_check AS A
WHERE A.CheckStatus=0 AND A.OrderGuestId IN({0})
) AS B
GROUP BY B.OrderGuestId
", guestIds);
SELECT A.OrderGuestId AS GuestId,SUM(A.StudyNum) AS FinishMinutes,SUM(A.CurrentDeductionHours) AS FinishClassHours
FROM rb_class_check AS A
WHERE A.CheckStatus=0 ");
if (!string.IsNullOrEmpty(guestIds))
{
builder.AppendFormat(" AND A.OrderGuestId IN({0})", guestIds);
}
if (ClassCheckId > 0)
{
builder.AppendFormat(" AND A.ClassCheckId<>{0} ", ClassCheckId);
}
builder.AppendFormat(" GROUP BY A.OrderGuestId ");
return Get<GuestFinishMinute_ViewModel>(builder.ToString()).ToList();
}
......@@ -384,9 +296,19 @@ GROUP BY A.ClassId
/// <param name="groupId"></param>
/// <param name="guestIds"></param>
/// <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();
}
......@@ -432,11 +354,265 @@ group by g.OrderId,DATE_FORMAT(c.ClassDate,'%Y-%m');";
return Get<RB_Class_Check_ViewModel>(sql).ToList();
}
public bool ClearCheck()
#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 sql = " TRUNCATE TABLE rb_class_check ";
base.ExecuteScalar(sql);
return true;
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
{
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
left join RB_Education_ContractAdjust ca on c.Id = ca.ContractId
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
var obj = ExecuteScalar(sql);
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
......
using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.Course
{
/// <summary>
/// 学员补课仓储层
/// </summary>
public class RB_Student_MakeupRepository:BaseRepository<RB_Student_Makeup>
{
/// <summary>
/// 获取学员补课列表
/// </summary>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="rowsCount"></param>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Student_Makeup_ViewModel> GetStudentMakeupPageRepository(int pageIndex, int pageSize, out long rowsCount, RB_Student_Makeup_ViewModel query)
{
var parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.*,C.GuestName, D.ClassName,E.CourseName,F.TeacherName,G.RoomName,C.GuestState,H.StartTime,H.EndTime
FROM RB_Student_Makeup AS A LEFT JOIN rb_class_check AS B ON A.ClassCheckId=B.ClassCheckId
LEFT JOIN rb_order_guest AS C ON A.OrderGuestId=C.Id
LEFT JOIN rb_class AS D ON A.ClassId=D.ClassId
LEFT JOIN rb_course AS E ON D.CouseId=E.CourseId
LEFT JOIN rb_teacher AS F ON B.TeacherId=F.TId
LEFT JOIN rb_class_room AS G ON B.ClassRoomId=G.RoomId
LEFT JOIN rb_class_time AS H ON B.ClassTimeId=H.ClassTimeId
WHERE 1=1
");
if (query != null)
{
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Makeup_ViewModel.Group_Id), query.Group_Id);
}
if (!string.IsNullOrEmpty(query.GuestName))
{
builder.AppendFormat(" AND C.{0} LIKE @GuestName ", nameof(RB_Student_Makeup_ViewModel.GuestName));
parameters.Add("GuestName", "%" + query.GuestName.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.ClassName))
{
builder.AppendFormat(" AND D.{0} LIKE @ClassName ", nameof(RB_Student_Makeup_ViewModel.ClassName));
parameters.Add("ClassName", "%" + query.ClassName.Trim() + "%");
}
if (!string.IsNullOrEmpty(query.CourseName))
{
builder.AppendFormat(" AND E.{0} LIKE @CourseName ", nameof(RB_Student_Makeup_ViewModel.CourseName));
parameters.Add("CourseName", "%" + query.CourseName.Trim() + "%");
}
if (query.MakeUpStatus>0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Student_Makeup_ViewModel.MakeUpStatus),query.MakeUpStatus);
}
if (!string.IsNullOrEmpty(query.StartDate))
{
builder.AppendFormat(" AND A.{0}>='{1}' ", nameof(RB_Student_Makeup_ViewModel.ClassDate), query.StartDate);
}
if (!string.IsNullOrEmpty(query.EndDate))
{
builder.AppendFormat(" AND A.{0}<='{1} 23:59:59' ", nameof(RB_Student_Makeup_ViewModel.ClassDate), query.EndDate);
}
}
builder.Append(" ORDER BY A.ClassId,A.ClassDate,A.OrderGuestId ");
return GetPage<RB_Student_Makeup_ViewModel>(pageIndex, pageSize, out rowsCount, builder.ToString(), parameters).ToList();
}
}
}
......@@ -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') ");
}
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();
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
,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(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')
......@@ -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.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate
,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
WHERE 1=1 {0} {1}
UNION ALL
......@@ -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.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate
,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
WHERE 1=1 {0} {2}
UNION ALL
......@@ -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.Sex,B.Education,B.EntryTime,B.Address,B.BirthDate
,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
WHERE 1=1 {0} {3}
) AS A LEFT JOIN rb_group AS g ON A.Group_Id=g.GId
......
{
"version": 1,
"dgSpecHash": "LgL2Kme2KdvBDmiwLBiZSHZQIhSbftVOYLF3cgdRTqmOIupjnzmMAo8WGNm0w11fwaLgctzrNYHOF9O2LJ0Izw==",
"dgSpecHash": "bcBFqC0lSOf2P/OcaIHptdi94ZP7u8NeMXGMUcFUhol4ZQWk+2PSkX9H+JuS9rgjAK7d95C5EAseRQkcK41O9Q==",
"success": true
}
\ No newline at end of file
......@@ -7,8 +7,8 @@ namespace Edu.Test
{
static void Main(string[] args)
{
string filePath = "";
filePath = @"C:/Users/qiaoyajun/Desktop/EduWordTemplate.doc";
//string filePath = "";
//filePath = @"C:/Users/qiaoyajun/Desktop/EduWordTemplate.doc";
//filePath = @"C:/Users/qiaoyajun/Desktop/EduWordTemplate.doc";
//var data = Common.Data.QuestionHelper.GetWordQuestionData(filePath);
}
......
......@@ -122,7 +122,7 @@ namespace Edu.WebApi.Controllers.Course
var query = new RB_Class_ViewModel()
{
CouseId = base.ParmJObj.GetInt("CourseId"),
IsQuerySurplus=base.ParmJObj.GetInt("IsQuerySurplus"),
IsQuerySurplus = base.ParmJObj.GetInt("IsQuerySurplus"),
};
query.Group_Id = base.UserInfo.Group_Id;
query.School_Id = base.UserInfo.School_Id;
......@@ -425,7 +425,7 @@ namespace Edu.WebApi.Controllers.Course
CommissionType = extModel?.CommissionType ?? 1,
CommissionValue = extModel?.CommissionValue ?? 0,
CouseId = extModel?.CouseId ?? 0,
CourseName = extModel?.CourseName??"",
CourseName = extModel?.CourseName ?? "",
DateJson = extModel?.DateJson ?? "",
DefaultTimeJson = extModel?.DefaultTimeJson ?? "",
DefaultPlanTimeList = extModel?.DefaultTimeList ?? new List<ClassTimeItem>(),
......@@ -443,7 +443,7 @@ namespace Edu.WebApi.Controllers.Course
OutRemark = extModel?.OutRemark ?? "",
SellPrice = extModel?.SellPrice ?? 0,
Teacher_Id = extModel?.Teacher_Id ?? 0,
TeacherName= extModel?.TeacherName??"",
TeacherName = extModel?.TeacherName ?? "",
School_Id = extModel?.School_Id ?? 0,
ClassStepPriceList = extModel?.ClassStepPriceList ?? new List<RB_Class_StepPrice_ViewModel>(),
WeekDayList = extModel?.WeekDayList ?? new List<string>(),
......@@ -715,7 +715,7 @@ namespace Edu.WebApi.Controllers.Course
var schoolId = 0;
int QEffectStatus = base.ParmJObj.GetInt("QEffectStatus");
//var schoolId = base.ParmJObj.GetInt("School_Id");
var data = classModule.GetClassStudentListModule(classId, schoolId, base.UserInfo.Group_Id, 0,QEffectStatus: QEffectStatus);
var data = classModule.GetClassStudentListModule(classId, schoolId, base.UserInfo.Group_Id, 0, QEffectStatus: QEffectStatus);
return ApiResult.Success(data: data);
}
......@@ -747,7 +747,7 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Failed("数据不存在");
}
double totalMinutes = 0;
var planTimeList = classModule.GetClassTimeListRepository(new RB_Class_Time_ViewModel { ClassId = classId, ClassPlanId = classPlanId, Group_Id = base.UserInfo.Group_Id, School_Id = schoolId ,ClassTimeId= ClassTimeId });
var planTimeList = classModule.GetClassTimeListRepository(new RB_Class_Time_ViewModel { ClassId = classId, ClassPlanId = classPlanId, Group_Id = base.UserInfo.Group_Id, School_Id = schoolId, ClassTimeId = ClassTimeId });
if (planTimeList != null && planTimeList.Any())
{
foreach (var item in planTimeList)
......@@ -759,7 +759,7 @@ namespace Edu.WebApi.Controllers.Course
}
}
}
var orderGuestList = classModule.GetOrderGuestListModule(new RB_Order_Guest_ViewModel { Group_Id = base.UserInfo.Group_Id, School_Id = 0, ClassId = data.ClassId,QEffectStatus=1 });
var orderGuestList = classModule.GetOrderGuestListModule(new RB_Order_Guest_ViewModel { Group_Id = base.UserInfo.Group_Id, School_Id = 0, ClassId = data.ClassId, QEffectStatus = 1 });
var checkLogList = classModule.GetClassCheckList(new RB_Class_Check_ViewModel
{
Group_Id = data.Group_Id,
......@@ -767,12 +767,12 @@ namespace Edu.WebApi.Controllers.Course
ClassId = data.ClassId,
StartDate = data.ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
EndDate = data.ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
ClassTimeId= ClassTimeId,
ClassTimeId = ClassTimeId,
});
List<object> guestList = new List<object>();
foreach (var item in orderGuestList.Where(x => x.GuestState == 1))
{
if (item.IsChaBan == 0 || (item.IsChaBan == 1 && data.ClassDate >= Convert.ToDateTime(Common.ConvertHelper.FormatDate(item.EffectTime))))
if (item.IsChaBan == 0 || (item.IsChaBan == 1 && data.ClassDate >= Convert.ToDateTime(Common.ConvertHelper.FormatDate(item.EffectTime))))
{
guestList.Add(new
{
......@@ -873,7 +873,7 @@ namespace Edu.WebApi.Controllers.Course
TeacherId = base.ParmJObj.GetInt("TeacherId")
};
var list = classModule.GetClassPlanLogPageListModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
pageModel.Count = rowsCount;
pageModel.PageData = list;
return ApiResult.Success(data: pageModel);
......@@ -903,19 +903,19 @@ namespace Edu.WebApi.Controllers.Course
StudyNum = obj.GetInt("StudyNum"),
TeacherId = obj.GetInt("TeacherId"),
ClassId = obj.GetInt("classId"),
ClassTimeId=obj.GetInt("ClassTimeId"),
ClassTimeId = obj.GetInt("ClassTimeId"),
});
}
}
if (list == null || !list.Any())
{
return ApiResult.ParamIsNull(message:"请选择签到学员!");
return ApiResult.ParamIsNull(message: "请选择签到学员!");
}
//获取班级的学员信息
var orderGuestList = classModule.GetOrderGuestListModule(new RB_Order_Guest_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = list.FirstOrDefault().ClassId ,QEffectStatus=1});
var orderGuestList = classModule.GetOrderGuestListModule(new RB_Order_Guest_ViewModel { Group_Id = base.UserInfo.Group_Id, ClassId = list.FirstOrDefault().ClassId, QEffectStatus = 1 });
if (list.Count() != orderGuestList.Where(x => x.GuestState == 1).Count())
{
// return ApiResult.Failed("签到总人数错误,请先检查信息");
// return ApiResult.Failed("签到总人数错误,请先检查信息");
}
//判断今天有课没有
......@@ -937,7 +937,7 @@ namespace Edu.WebApi.Controllers.Course
ClassId = list.FirstOrDefault().ClassId,
StartDate = list.FirstOrDefault().ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
EndDate = list.FirstOrDefault().ClassDate.ToString("yyyy-MM-dd HH:mm:ss"),
ClassTimeId= list.FirstOrDefault().ClassTimeId,
ClassTimeId = list.FirstOrDefault().ClassTimeId,
});
foreach (var item in list)
......@@ -973,9 +973,9 @@ namespace Edu.WebApi.Controllers.Course
/// <returns></returns>
public ApiResult InitClassCheck()
{
//bool result = classModule.InitClassCheckModule();
//return result ? ApiResult.Success("初始化成功!") : ApiResult.Failed("初始化失败!");
return ApiResult.Failed("初始化失败!");
bool result = classModule.InitClassCheckModule();
return result ? ApiResult.Success("初始化成功!") : ApiResult.Failed("初始化失败!");
//return ApiResult.Failed("初始化失败!");
}
/// <summary>
......@@ -1064,10 +1064,8 @@ namespace Edu.WebApi.Controllers.Course
public ApiResult GetAbsentPage()
{
var pageModel = Common.Plugin.JsonHelper.DeserializeObject<ResultPageModel>(RequestParm.Msg.ToString());
var query = new RB_Class_Check_ViewModel()
var query = new RB_Student_Makeup_ViewModel()
{
CheckStatus = 1,
IsAbsentHours = 1,
MakeUpStatus = base.ParmJObj.GetInt("MakeUpStatus"),
GuestName = base.ParmJObj.GetStringValue("GuestName"),
ClassName = base.ParmJObj.GetStringValue("ClassName"),
......@@ -1079,11 +1077,12 @@ namespace Edu.WebApi.Controllers.Course
};
query.Group_Id = base.UserInfo.Group_Id;
List<object> result = new List<object>();
var list = classModule.GetClassCheckPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
var list = classModule.GetStudentMakeupPageModule(pageModel.PageIndex, pageModel.PageSize, out long rowsCount, query);
foreach (var item in list)
{
result.Add(new
{
item.Id,
item.ClassCheckId,
item.OrderGuestId,
item.GuestName,
......@@ -1092,14 +1091,15 @@ namespace Edu.WebApi.Controllers.Course
item.ClassId,
item.ClassName,
item.CourseName,
item.School_Id,
item.TeacherId,
item.TeacherName,
item.ClassRoomId,
item.RoomName,
ClassDate = Common.ConvertHelper.FormatDate(item.ClassDate),
item.MakeUpStatus,
item.MakeUpStatusStr
item.MakeUpStatusStr,
item.StartTime,
item.EndTime,
DealByName = UserReidsCache.GetUserLoginInfo(item.DealBy)?.AccountName,
DealTime = Common.ConvertHelper.FormatTime(item.DealTime)
});
}
pageModel.Count = rowsCount;
......@@ -1113,10 +1113,11 @@ namespace Edu.WebApi.Controllers.Course
/// <returns></returns>
public ApiResult SetMakeUpStatus()
{
int Id = base.ParmJObj.GetInt("Id");
int MakeUpStatus = base.ParmJObj.GetInt("MakeUpStatus");
int ClassCheckId = base.ParmJObj.GetInt("ClassCheckId");
int GuestId = base.ParmJObj.GetInt("GuestId");
bool flag = classModule.SetMakeUpStatusModule(MakeUpStatus, ClassCheckId, GuestId);
bool flag = classModule.SetMakeUpStatusModule(Id, MakeUpStatus, ClassCheckId, GuestId, base.UserInfo);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
......@@ -1954,7 +1955,7 @@ namespace Edu.WebApi.Controllers.Course
};
//课程类型(0-全部,1-正常,2-试听课)
int ClassType = base.ParmJObj.GetInt("ClassType");
var obj = classModule.GetClassPlanStatisticalModule(query,ClassType: ClassType);
var obj = classModule.GetClassPlanStatisticalModule(query, ClassType: ClassType);
return ApiResult.Success(data: obj);
}
......
......@@ -1208,7 +1208,7 @@ namespace Edu.WebApi.Controllers.Finance
new ExcelColumn(value: item.StudentName){ Rowspan = Count },
new ExcelColumn(value: item.CreateByName){ 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.TotalBookFee.ToString()){ Rowspan = Count },
new ExcelColumn(value: item.TotalClassFee.ToString()){ Rowspan = Count },
......@@ -1426,5 +1426,507 @@ namespace Edu.WebApi.Controllers.Finance
}
#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