Commit b1cf3f50 authored by 吴春's avatar 吴春

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

parents eab7a8d6 1d4fc2d1
......@@ -44,6 +44,11 @@ namespace Edu.Model.ViewModel.Course
/// </summary>
public string ClassName { get; set; }
/// <summary>
/// 课程名称
/// </summary>
public string CourseName { get; set; }
/// <summary>
/// 班级类型
/// </summary>
......
......@@ -465,7 +465,7 @@ namespace Edu.Module.Course
if (FinishMinutes > 0)
{
//基础课时分钟数
var BasicMinutes = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = classModel.Group_Id })?.BasicMinutes ?? 45;
var BasicMinutes = class_ConfigRepository.GetBasicMinutesRepository(classModel.Group_Id);
//完成课时数
var finishHours = FinishMinutes / BasicMinutes;
if (classModel.ClassHours > 0)
......@@ -783,13 +783,20 @@ namespace Edu.Module.Course
{
timeList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel() { QClassPlanIds = Ids });
}
var minDate = planList.Min(qitem => qitem.ClassDate);
var maxDate = planList.Max(qitem => qitem.ClassDate);
var checkList= classCheckRepository.GetClassCheckListRepository(new RB_Class_Check_ViewModel() { ClassId = classId ,StartDate=Common.ConvertHelper.FormatDate(minDate),EndDate=Common.ConvertHelper.FormatDate(maxDate)});
DateTime today = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
foreach (var item in planList)
{
item.PlanTimeList = timeList?.Where(qitem => qitem.ClassPlanId == item.ClassPlanId)?.ToList();
var tempCheckList = checkList?.Where(qitem => qitem.ClassId == item.ClassId && qitem.ClassDate == item.ClassDate)?.ToList() ?? new List<RB_Class_Check_ViewModel>();
list.Add(new
{
IsEndDate = item.ClassDate <= today,
TotalNum= tempCheckList?.Count(),
CheckNum = tempCheckList?.Where(qitem=>qitem.CheckStatus==0)?.Count(),
NoCheckNum= tempCheckList?.Where(qitem => qitem.CheckStatus == 1)?.Count(),
item.ClassPlanId,
item.ClassId,
item.ClassDate,
......@@ -1198,7 +1205,7 @@ namespace Edu.Module.Course
public virtual bool AddClassCheckModule(List<RB_Class_Check_ViewModel> list)
{
//基础课时分钟数
var BasicMinutes = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = list[0].Group_Id })?.BasicMinutes ?? 45;
var BasicMinutes = class_ConfigRepository.GetBasicMinutesRepository(list[0].Group_Id );
var totalMinutes = classCheckRepository.CalcPlanMinutesRepository(new RB_Class_Plan_ViewModel()
{
ClassId = list[0].ClassId,
......@@ -1830,7 +1837,7 @@ namespace Edu.Module.Course
//班级完成的总分钟数
var FinishMinutes = classCheckRepository.GetClassFinishMinutesRepository(model.ClassId.ToString())?.FirstOrDefault()?.FinishMinutes ?? 0;
//基础课时分钟数
var BasicMinutes = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = model.Group_Id })?.BasicMinutes ?? 45;
var BasicMinutes = class_ConfigRepository.GetBasicMinutesRepository(model.Group_Id);
var nowHours = model.NewEndPlanDateTime.Value.Subtract(model.NewPlanDateTime.Value).TotalSeconds;
if (FinishMinutes > 0)
{
......@@ -1878,14 +1885,14 @@ namespace Edu.Module.Course
fileds = new Dictionary<string, object>()
{
{ nameof(RB_Class_Time_ViewModel.ClassStatus),classStatus},
{ nameof(RB_Class_Time_ViewModel.InClassTime),System.DateTime.Now},
{ nameof(RB_Class_Time_ViewModel.InClassTime),System.DateTime.Now},
};
}
else if (classStatus == 2)
{
fileds = new Dictionary<string, object>()
{
{ nameof(RB_Class_Time_ViewModel.ClassOverTime),System.DateTime.Now},
{ nameof(RB_Class_Time_ViewModel.ClassOverTime),System.DateTime.Now},
{ nameof(RB_Class_Time_ViewModel.ClassStatus),classStatus},
};
}
......@@ -2000,5 +2007,83 @@ namespace Edu.Module.Course
return flag;
}
#endregion
/// <summary>
/// 上课计划统计
/// </summary>
/// <returns></returns>
public object GetClassPlanStatisticalModule(RB_Class_Plan_ViewModel query)
{
List<object> result = new List<object>();
var startTime = Convert.ToDateTime(query.StartTime);
var endTime = Convert.ToDateTime(query.EndTime);
TimeSpan sp = endTime.Subtract(startTime);
var days = sp.Days+1;
var list = class_PlanRepository.GetClassPlanStatisticalRepository(query);
if (list != null)
{
string classIds = string.Join(",", list.Select(qitem => qitem.ClassId));
string planIds = string.Join(",", list.Select(qitem => qitem.ClassPlanId));
var timeList= class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel() { QClassIds = classIds ,QClassPlanIds=planIds});
var guestList = order_GuestRepository.GetList(new RB_Order_Guest_ViewModel() { ClassIds = classIds });
for (var i = 0; i < days; i++)
{
var ClassDate = startTime.AddDays(i);
List<object> subList = new List<object>();
var tempList = list.Where(qitem => qitem.ClassDate == ClassDate);
foreach (var subItem in tempList)
{
var tempTimeList = timeList?.Where(qitem => qitem.ClassPlanId == subItem.ClassPlanId)?.ToList()?.OrderBy(qitem => qitem.StartTime);
subList.Add(new
{
subItem.ClassId,
subItem.ClassName,
subItem.CourseName,
subItem.RoomName,
subItem.TeacherName,
StartTime = tempTimeList?.FirstOrDefault()?.StartTime ?? "",
EndTime = tempTimeList?.LastOrDefault()?.EndTime ?? "",
GuestList = guestList.Where(qitem => qitem.ClassId == subItem.ClassId)?.Select(qitem => new { qitem.GuestName })
});
}
var obj = new
{
ClassDate = Common.ConvertHelper.FormatDate(ClassDate),
WeekStr = Common.ConvertHelper.GetWeekDay(ClassDate),
SubList = subList
};
result.Add(obj);
}
}
return result;
}
/// <summary>
/// 获取教师课时统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public object GetTeacherClassHoursStatisticalModule(RB_Class_Plan_ViewModel query)
{
List<object> result = new List<object>();
var BasicMinutes = class_ConfigRepository.GetBasicMinutesRepository(query.Group_Id);
var list = class_PlanRepository.GetClassPlanStatisticalRepository(query);
if (list != null)
{
var groupList = list.GroupBy(qitem => new { qitem.Teacher_Id, qitem.TeacherName }).Select(qitem => new { qitem.Key.Teacher_Id, qitem.Key.TeacherName });
foreach (var item in groupList)
{
var totalClassMinutes = list.Where(qitem => qitem.Teacher_Id == item.Teacher_Id)?.Sum(qitem => qitem.ClassMinutes) ?? 0;
var obj = new
{
item.TeacherName,
TeacherId=item.Teacher_Id,
ClassHours = totalClassMinutes / BasicMinutes
};
result.Add(obj);
}
}
return result;
}
}
}
......@@ -232,8 +232,8 @@ namespace Edu.Module.Course
var planList = class_PlanRepository.GetClassPlanListExtRepository(new RB_Class_Plan_ViewModel() { ClassId = classId, EndTime = Common.ConvertHelper.FormatDate(DateTime.Now) });
var totalMinutes = planList?.Sum(qitem => qitem.ClassMinutes) ?? 0;
//查询基础课时时长
var configModel = class_ConfigRepository.GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = Group_Id });
var finishHours = totalMinutes / (configModel?.BasicMinutes ?? 45.0);
var BasicMinutes = class_ConfigRepository.GetBasicMinutesRepository( Group_Id);
var finishHours = totalMinutes / BasicMinutes;
fileds.Add("finishHours", finishHours);
var classModel = classRepository.GetEntity(classId);
var courseModel = courseRepository.GetEntity(classModel.CouseId);
......@@ -350,7 +350,7 @@ namespace Edu.Module.Course
}
else
{
coursePrice = coursePrice - coursePreferentialModel.PriceMoney;
coursePrice -= coursePreferentialModel.PriceMoney;
}
}
if (demodel.IsLessPrice == 1 && demodel.LessPrice > 0)
......
......@@ -36,5 +36,16 @@ WHERE 1=1
}
return Get<RB_Class_Config_ViewModel>(builder.ToString()).FirstOrDefault();
}
/// <summary>
/// 获取基础课时分钟数
/// </summary>
/// <param name="Group_Id"></param>
/// <returns></returns>
public int GetBasicMinutesRepository(int Group_Id)
{
var BasicMinutes = GetClassConfigRepository(new RB_Class_Config_ViewModel() { Group_Id = Group_Id })?.BasicMinutes ?? 45;
return BasicMinutes;
}
}
}
......@@ -461,5 +461,59 @@ where sog.Account_Id={query.StuId} and c.ClassStatus in(1,2) and c.`Status`=0 an
}
return Get<RB_Class_Plan_ViewModel>(builder.ToString()).ToList();
}
/// <summary>
/// 老师上课计划统计
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
public List<RB_Class_Plan_ViewModel> GetClassPlanStatisticalRepository(RB_Class_Plan_ViewModel query)
{
StringBuilder where = new StringBuilder();
if (query != null)
{
if (query.Group_Id > 0)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.Group_Id), query.Group_Id);
}
if (!string.IsNullOrEmpty(query.StartTime))
{
where.AppendFormat(" AND DATE_FORMAT(A.{0},'%y-%m-%d')>=DATE_FORMAT('{1}','%y-%m-%d') ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.StartTime);
}
if (!string.IsNullOrEmpty(query.EndTime))
{
where.AppendFormat(" AND DATE_FORMAT(A.{0},'%y-%m-%d')<=DATE_FORMAT('{1}','%y-%m-%d') ", nameof(RB_Class_Plan_ViewModel.ClassDate), query.EndTime);
}
if (query.TeacherId > 0)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.TeacherId), query.TeacherId);
}
if (query.ClassRoomId > 0)
{
where.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Plan_ViewModel.ClassRoomId), query.ClassRoomId);
}
}
StringBuilder builder = new StringBuilder();
builder.AppendFormat(@"
SELECT A.ClassPlanId,A.ClassId,A.ClassDate,A.ClassRoomId,A.ClassName,A.CourseName,A.Teacher_Id,A.TeacherName,A.RoomName
,SUM(A.minNum) AS ClassMinutes,MIN(A.StartTime) AS StartTime,MAX(A.EndTime) AS EndTime
FROM
(
SELECT A.ClassPlanId, A.ClassId,A.ClassDate,A.ClassRoomId,B.ClassName,C.CourseName,B.Teacher_Id,IFNULL(D.TeacherName,'') AS TeacherName,E.RoomName
,TIMESTAMPDIFF(MINUTE, CONCAT('2020-12-16',' ',F.StartTime), CONCAT('2020-12-16',' ',F.EndTime)) AS minNum,F.StartTime,F.EndTime
FROM rb_class_plan AS A LEFT JOIN rb_class AS B ON A.ClassId=B.ClassId
LEFT JOIN rb_course AS C ON B.CouseId=C.CourseId
LEFT JOIN rb_teacher AS D ON B.Teacher_Id=D.TId
LEFT JOIN rb_class_room AS E ON A.ClassRoomId=E.RoomId
LEFT JOIN rb_class_time F on A.ClassPlanId = F.ClassPlanId
WHERE 1=1 AND A.`Status`=0 {0}
) AS A
GROUP BY A.ClassPlanId,A.ClassId ,A.ClassDate,A.ClassRoomId
", where.ToString());
builder.AppendFormat(" ");
return Get<RB_Class_Plan_ViewModel>(builder.ToString()).ToList();
}
}
}
......@@ -1842,5 +1842,59 @@ namespace Edu.WebApi.Controllers.Course
return ApiResult.Success(data: data);
}
#endregion
#region 老师上课统计
/// <summary>
/// 老师上课计划统计
/// </summary>
/// <returns></returns>
public ApiResult GetClassPlanStatistical()
{
var startDate = base.ParmJObj.GetStringValue("StartTime");
var endDate = base.ParmJObj.GetStringValue("EndTime");
RB_Class_Plan_ViewModel query = new RB_Class_Plan_ViewModel()
{
StartTime = startDate,
EndTime = endDate,
TeacherId = base.ParmJObj.GetInt("TeacherId"),
ClassRoomId = base.ParmJObj.GetInt("ClassRoomId"),
Group_Id=base.UserInfo.Group_Id,
};
var obj = classModule.GetClassPlanStatisticalModule(query);
return ApiResult.Success(data:obj);
}
/// <summary>
/// 老师课时统计
/// </summary>
/// <returns></returns>
public ApiResult GetTeacherClassHoursStatistical()
{
var startDate = base.ParmJObj.GetStringValue("StartTime");
var endDate = base.ParmJObj.GetStringValue("EndTime");
if (!string.IsNullOrEmpty(endDate))
{
endDate = Common.ConvertHelper.FormatDate(DateTime.Now);
}
else
{
if (Convert.ToDateTime(endDate) > Convert.ToDateTime(Common.ConvertHelper.FormatDate(DateTime.Now)))
{
endDate = Common.ConvertHelper.FormatDate(DateTime.Now);
}
}
RB_Class_Plan_ViewModel query = new RB_Class_Plan_ViewModel()
{
StartTime = startDate,
EndTime = endDate,
TeacherId = base.ParmJObj.GetInt("TeacherId"),
ClassRoomId = base.ParmJObj.GetInt("ClassRoomId"),
Group_Id = base.UserInfo.Group_Id,
};
var obj = classModule.GetTeacherClassHoursStatisticalModule(query);
return ApiResult.Success(data: obj);
}
#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