Commit 8871d8de authored by liudong1993's avatar liudong1993

修改 课耗统计 支持多月查询

parent 0ae3b8b0
...@@ -53,6 +53,11 @@ namespace Edu.Model.ViewModel.Course ...@@ -53,6 +53,11 @@ namespace Edu.Model.ViewModel.Course
/// </summary> /// </summary>
public int ClassType { get; set; } public int ClassType { get; set; }
/// <summary>
/// 班级课时分钟数
/// </summary>
public int ClassHourMinute { get; set; }
/// <summary> /// <summary>
/// 老师头像 /// 老师头像
/// </summary> /// </summary>
......
...@@ -536,7 +536,9 @@ namespace Edu.Module.Course ...@@ -536,7 +536,9 @@ namespace Edu.Module.Course
var ts = Convert.ToDateTime(nowTime + " " + qitem.EndTime) - Convert.ToDateTime(nowTime + " " + qitem.StartTime); var ts = Convert.ToDateTime(nowTime + " " + qitem.EndTime) - Convert.ToDateTime(nowTime + " " + qitem.StartTime);
minute += (int)ts.TotalMinutes; minute += (int)ts.TotalMinutes;
} }
int ksNum = minute / configModel.BasicMinutes; // 未达到一课时时间 算不算一课时 int ClassHourMinute = configModel.BasicMinutes;//课时分钟数
if (item.ClassHourMinute > 0) { ClassHourMinute = item.ClassHourMinute; }
int ksNum = minute / ClassHourMinute; // 未达到一课时时间 算不算一课时
//查询课单价 //查询课单价
var typeModel = typeList.Where(x => x.CTypeId == item.ClassType).FirstOrDefault(); var typeModel = typeList.Where(x => x.CTypeId == item.ClassType).FirstOrDefault();
var teacherModel = teacherList.Where(x => x.TId == item.TeacherId).FirstOrDefault(); var teacherModel = teacherList.Where(x => x.TId == item.TeacherId).FirstOrDefault();
...@@ -1215,7 +1217,9 @@ namespace Edu.Module.Course ...@@ -1215,7 +1217,9 @@ namespace Edu.Module.Course
//班级课时总分钟数 //班级课时总分钟数
int TotalClassMin = class_PlanRepository.GetClassTotalMinute(classId, classModel.Group_Id); int TotalClassMin = class_PlanRepository.GetClassTotalMinute(classId, classModel.Group_Id);
//总课时 //总课时
int ksNum = TotalClassMin / configModel.BasicMinutes; // 未达到一课时时间 不算一课时 int ClassHourMinute = configModel.BasicMinutes;//课时分钟数
if (classModel.ClassHourMinute > 0) { ClassHourMinute = classModel.ClassHourMinute; }
int ksNum = TotalClassMin / ClassHourMinute; // 未达到一课时时间 不算一课时
//满班率 //满班率
decimal FullClassRate = 0; decimal FullClassRate = 0;
......
...@@ -2759,44 +2759,57 @@ namespace Edu.Module.Finance ...@@ -2759,44 +2759,57 @@ namespace Edu.Module.Finance
Money = KSMoney Money = KSMoney
}); });
} }
#region 基础课时处理 //初始化 基础课时
decimal DeductionMoney = 0; DateTime STime = Convert.ToDateTime(startMonth);
if (configModel.BasicHours > 0) while (true)
{ {
//遍历所有老师 DateTime ETime = STime.AddMonths(1).AddDays(-1);
List<int> TeacherIdList = RList.Select(x => x.TeacherId).Distinct().ToList(); var mlist = RList.Where(x => x.Date >= STime && x.Date <= ETime).ToList();
foreach (var item in TeacherIdList) #region 基础课时处理
decimal DeductionMoney = 0;
if (configModel.BasicHours > 0)
{ {
var qblist = RList.Where(x => x.TeacherId == item).OrderBy(x => x.UnitPrice).ThenBy(x => x.Date).ToList(); //遍历所有老师
decimal BasicHours = (decimal)configModel.BasicHours; List<int> TeacherIdList = mlist.Select(x => x.TeacherId).Distinct().ToList();
foreach (var qitem in qblist) foreach (var item in TeacherIdList)
{ {
decimal CourseHour = 0, DeductionHour = 0; var qblist = mlist.Where(x => x.TeacherId == item).OrderBy(x => x.Date).ThenBy(x => x.UnitPrice).ToList();
if (BasicHours > qitem.KSNum) decimal BasicHours = (decimal)configModel.BasicHours;
{ foreach (var qitem in qblist)
DeductionHour = qitem.KSNum;
BasicHours -= qitem.KSNum;
DeductionMoney += qitem.KSNum * qitem.UnitPrice;
}
else
{ {
DeductionHour = BasicHours; decimal CourseHour = 0, DeductionHour = 0;
CourseHour = qitem.KSNum - BasicHours; if (BasicHours > qitem.KSNum)
DeductionMoney += BasicHours * qitem.UnitPrice; {
BasicHours = 0; DeductionHour = qitem.KSNum;
} BasicHours -= qitem.KSNum;
qitem.KSNum = CourseHour; DeductionMoney += qitem.KSNum * qitem.UnitPrice;
qitem.DKNum = DeductionHour; }
qitem.Money = CourseHour * qitem.UnitPrice; else
if (BasicHours <= 0) {
{ DeductionHour = BasicHours;
break; CourseHour = qitem.KSNum - BasicHours;
DeductionMoney += BasicHours * qitem.UnitPrice;
BasicHours = 0;
}
qitem.KSNum = CourseHour;
qitem.DKNum = DeductionHour;
qitem.Money = CourseHour * qitem.UnitPrice;
if (BasicHours <= 0)
{
break;
}
} }
} }
} }
#endregion
if (STime.Month == Convert.ToDateTime(endMonth).Month)
{
break;
}
STime = STime.AddMonths(1);
} }
#endregion
} }
return RList; return RList;
} }
...@@ -2859,43 +2872,57 @@ namespace Edu.Module.Finance ...@@ -2859,43 +2872,57 @@ namespace Edu.Module.Finance
}); });
} }
#region 基础课时处理 //初始化 基础课时
decimal DeductionMoney = 0; DateTime STime = Convert.ToDateTime(startMonth);
if (configModel.BasicHours > 0) while (true)
{ {
//遍历所有老师 DateTime ETime = STime.AddMonths(1).AddDays(-1);
List<int> TeacherIdList = RList.Select(x => x.TeacherId).Distinct().ToList(); var mlist = RList.Where(x => x.Date >= STime && x.Date <= ETime).ToList();
foreach (var item in TeacherIdList)
#region 基础课时处理
decimal DeductionMoney = 0;
if (configModel.BasicHours > 0)
{ {
var qblist = RList.Where(x => x.TeacherId == item).OrderBy(x => x.UnitPrice).ThenBy(x => x.Date).ToList(); //遍历所有老师
decimal BasicHours = (decimal)configModel.BasicHours; List<int> TeacherIdList = mlist.Select(x => x.TeacherId).Distinct().ToList();
foreach (var qitem in qblist) foreach (var item in TeacherIdList)
{ {
decimal CourseHour = 0, DeductionHour = 0; var qblist = mlist.Where(x => x.TeacherId == item).OrderBy(x => x.Date).ThenBy(x => x.UnitPrice).ToList();
if (BasicHours > qitem.KSNum) decimal BasicHours = (decimal)configModel.BasicHours;
foreach (var qitem in qblist)
{ {
DeductionHour = qitem.KSNum; decimal CourseHour = 0, DeductionHour = 0;
BasicHours -= qitem.KSNum; if (BasicHours > qitem.KSNum)
DeductionMoney += qitem.KSNum * qitem.UnitPrice; {
} DeductionHour = qitem.KSNum;
else BasicHours -= qitem.KSNum;
{ DeductionMoney += qitem.KSNum * qitem.UnitPrice;
DeductionHour = BasicHours; }
CourseHour = qitem.KSNum - BasicHours; else
DeductionMoney += BasicHours * qitem.UnitPrice; {
BasicHours = 0; DeductionHour = BasicHours;
} CourseHour = qitem.KSNum - BasicHours;
qitem.KSNum = CourseHour; DeductionMoney += BasicHours * qitem.UnitPrice;
qitem.DKNum = DeductionHour; BasicHours = 0;
qitem.Money = CourseHour * qitem.UnitPrice; }
if (BasicHours <= 0) qitem.KSNum = CourseHour;
{ qitem.DKNum = DeductionHour;
break; qitem.Money = CourseHour * qitem.UnitPrice;
if (BasicHours <= 0)
{
break;
}
} }
} }
} }
#endregion
if (STime.Month == Convert.ToDateTime(endMonth).Month)
{
break;
}
STime = STime.AddMonths(1);
} }
#endregion
foreach (var item in RList) { foreach (var item in RList) {
ExcelDataSource firstRow = new ExcelDataSource(30) ExcelDataSource firstRow = new ExcelDataSource(30)
......
...@@ -240,7 +240,7 @@ WHERE ClassId={1} AND ClassDate>'{2}' ...@@ -240,7 +240,7 @@ WHERE ClassId={1} AND ClassDate>'{2}'
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT a.*,c.Teacher_Id,c.ClassName,c.ClassType,T.TeacherName ,cou.CourseName SELECT a.*,c.Teacher_Id,c.ClassName,c.ClassType,c.ClassHourMinute,T.TeacherName ,cou.CourseName
FROM rb_class_plan as a FROM rb_class_plan as a
LEFT JOIN rb_class c on a.ClassId = c.ClassId LEFT JOIN rb_class c on a.ClassId = c.ClassId
LEFT JOIN rb_teacher AS T ON a.TeacherId=T.TId LEFT JOIN rb_teacher AS T ON a.TeacherId=T.TId
......
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