Commit 82707095 authored by 吴春's avatar 吴春

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

parents 2da3c2c5 fd3c08dd
using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.Course;
using System;
using System.Collections.Generic;
using System.Text;
......@@ -133,7 +134,6 @@ namespace Edu.Model.ViewModel.EduTask
/// </summary>
public class AllChangePlanItem
{
/// <summary>
/// 总课时
/// </summary>
......@@ -178,49 +178,9 @@ namespace Edu.Model.ViewModel.EduTask
/// </summary>
public List<ClassTimeItem> DefaultTimeList { get; set; }
/// <summary>
/// 排课方式(1-周,2-月,3-固定日期,4-约课)
/// </summary>
public Common.Enum.Course.ClassStyleEnum ClassStyle { get; set; }
}
///<summary>
/// 上课时间配置项
/// </summary>
public class ClassTimeItem
{
/// <summary>
/// 上课日期【ClassStyle:1-周(1,2...);2和3(具体日期);4(暂无)】
/// </summary>
public List<string> DateList { get; set; }
/// <summary>
/// 具体上课时间
/// </summary>
public List<TimeItem> TimeList { get; set; }
}
/// <summary>
/// 上课时间对象
/// </summary>
public class TimeItem
{
/// <summary>
/// 开始时间
/// </summary>
public string StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public string EndTime { get; set; }
/// <summary>
/// 消耗课时
/// </summary>
public decimal TimeHour { get; set; }
}
}
......@@ -1056,214 +1056,10 @@ namespace Edu.Module.Course
});
//已经完成的上课计划
var finishClassHours = oldPlanList?.Sum(qitem => qitem.TimeHour) ?? 0;
List<RB_Class_Plan_ViewModel> classPlanList = new List<RB_Class_Plan_ViewModel>();
if (model.ClassHours > 0 && defaultPlanTimeList != null && defaultPlanTimeList.Count > 0)
{
var srartDate = model.OpenTime;
if (model.OpenTime < DateTime.Now)
{
srartDate = DateTime.Now;
}
//按周排课和按月排课
if (model.ClassStyle == ClassStyleEnum.Week || model.ClassStyle == ClassStyleEnum.Month)
{
int i = 0;
double totalHours = Convert.ToDouble(finishClassHours);
while (model.ClassHours > totalHours)
{
var newDate = srartDate.AddDays(i);
foreach (var item in model.WeekDayList)
{
var planModel = new RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
ClassPlanId = 0,
ClassRoomId = model.ClassRoomId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
PlanTimeList = new List<RB_Class_Time_ViewModel>(),
TeacherId = model.Teacher_Id,
ClassDate = newDate
};
if (model.ClassStyle == ClassStyleEnum.Week)
{
switch (item)
{
case "1":
if (newDate.DayOfWeek == DayOfWeek.Monday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "2":
if (newDate.DayOfWeek == DayOfWeek.Tuesday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "3":
if (newDate.DayOfWeek == DayOfWeek.Wednesday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "4":
if (newDate.DayOfWeek == DayOfWeek.Thursday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "5":
if (newDate.DayOfWeek == DayOfWeek.Friday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "6":
if (newDate.DayOfWeek == DayOfWeek.Saturday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "7":
if (newDate.DayOfWeek == DayOfWeek.Sunday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
}
}
else if (model.ClassStyle == ClassStyleEnum.Month)
{
if (newDate.Day == Convert.ToInt32(item))
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
}
}
i++;
}
}
//固定日期
else if (model.ClassStyle == ClassStyleEnum.FixedDate)
{
foreach (var item in model.WeekDayList)
{
var planModel = new RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
ClassPlanId = 0,
ClassRoomId = model.ClassRoomId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
PlanTimeList = new List<RB_Class_Time_ViewModel>(),
TeacherId = model.Teacher_Id,
ClassDate = Convert.ToDateTime(item)
};
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
CalcDayClassHoursModule(timeList, planModel.PlanTimeList, model, BasicMinutes);
classPlanList.Add(planModel);
}
}
}
//约课
else
{
}
}
List<RB_Class_Plan_ViewModel> classPlanList = class_PlanRepository.CreateClassPlanRepository(model, defaultPlanTimeList, finishClassHours, BasicMinutes);
return classPlanList;
}
/// <summary>
/// 计算每天课时
/// </summary>
/// <param name="timeList"></param>
/// <param name="classTimeList"></param>
/// <param name="model"></param>
/// <returns></returns>
private double CalcDayClassHoursModule(List<TimeItem> timeList, List<RB_Class_Time_ViewModel> classTimeList, RB_Class_ViewModel model, int BasicMinutes)
{
double dayClassHours = 0;
double dayMinutes = 0;
foreach (var sItem in timeList)
{
var timeModel = new RB_Class_Time_ViewModel()
{
StartTime = sItem.StartTime,
EndTime = sItem.EndTime,
TimeHour = sItem.TimeHour,
};
classTimeList.Add(timeModel);
var startDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + sItem.StartTime + ":00");
var endDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + sItem.EndTime + ":00");
TimeSpan span = endDate.Subtract(startDate);
if (span.TotalMinutes > 0)
{
dayMinutes += span.TotalMinutes;
}
}
if (model.ClassHourMinute > 0)
{
dayClassHours = dayMinutes / model.ClassHourMinute;
}
else
{
dayClassHours = dayMinutes / BasicMinutes;
}
return dayClassHours;
}
/// <summary>
/// 根据班级编号获取班级详细信息
/// </summary>
......
using Edu.Model.Entity.EduTask;
using Edu.Model.CacheModel;
using Edu.Model.Entity.EduTask;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.EduTask;
using Edu.Model.ViewModel.User;
using Edu.Repository.Course;
using Edu.Repository.EduTask;
using Edu.Repository.User;
using System.Collections.Generic;
using System.Linq;
using VT.FW.AOP.CustomerAttribute;
using VT.FW.DB;
......@@ -22,6 +28,350 @@ namespace Edu.Module.EduTask
/// </summary>
private readonly RB_Change_ClassPlanRepository change_ClassPlanRepository = new RB_Change_ClassPlanRepository();
/// <summary>
/// 班级上课计划仓储层对象
/// </summary>
private readonly RB_Class_PlanRepository class_PlanRepository = new RB_Class_PlanRepository();
/// <summary>
/// 班级上课计划上课时间仓储层对象
/// </summary>
private readonly RB_Class_TimeRepository class_TimeRepository = new RB_Class_TimeRepository();
/// <summary>
/// 教室仓储层对象
/// </summary>
private readonly RB_Class_RoomRepository class_RoomRepository = new RB_Class_RoomRepository();
/// <summary>
/// 老师仓储层对象
/// </summary>
private readonly RB_TeacherRepository teacherRepository = new RB_TeacherRepository();
/// <summary>
/// 课程基础配置
/// </summary>
private readonly RB_Class_ConfigRepository class_ConfigRepository = new RB_Class_ConfigRepository();
/// <summary>
/// 班级仓储层对象
/// </summary>
private readonly RB_ClassRepository classRepository = new RB_ClassRepository();
/// <summary>
/// 检查是否重复【固定日期】
/// </summary>
/// <param name="ClassId"></param>
/// <param name="changeList"></param>
/// <param name="timeList"></param>
/// <returns></returns>
public List<object> GetRepeatListModule(int ClassId, List<ChangePlanItem> changeList, List<TimeItem> timeList)
{
List<object> list = new List<object>();
var planList = new List<RB_Class_Plan_ViewModel>();
if (changeList != null && changeList.Count > 0)
{
foreach (var item in changeList)
{
var planModel = new RB_Class_Plan_ViewModel()
{
ClassPlanId=0,
ClassId=ClassId,
ClassDate=item.ClassDate,
ClassRoomId=item.ClassRoomId,
TeacherId=item.TeacherId,
PlanTimeList=new List<RB_Class_Time_ViewModel> (),
};
if (timeList != null && timeList.Count > 0)
{
foreach (var subItem in timeList)
{
planModel.PlanTimeList.Add(new RB_Class_Time_ViewModel
{
StartTime = subItem.StartTime,
EndTime = subItem.EndTime,
TimeHour = subItem.TimeHour,
});
}
}
planList.Add(planModel);
}
}
if (timeList != null && timeList.Count > 0 && planList!=null && planList.Count>0)
{
list = GetRepeatDataModule(planList, 2);
}
return list;
}
/// <summary>
/// 全局老师、教室调整
/// </summary>
/// <param name="ClassId"></param>
/// <param name="changeList"></param>
/// <param name="timeList"></param>
/// <returns></returns>
public List<object> GetAllRepeatListModule(int ClassId, string TakeEffectTime, int TeacherId = 0, int ClassRoomId = 0)
{
List<object> list = new List<object>();
var classPlanList = class_PlanRepository.GetClassPlanListRepository(new RB_Class_Plan_ViewModel()
{
ClassId = ClassId,
StartTime = TakeEffectTime,
});
list = GetRepeatDataModule(classPlanList, 1, TeacherId: TeacherId, ClassRoomId: ClassRoomId);
return list;
}
/// <summary>
/// 全局验证上课日期和时间
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public List<object> GetAllDateAndTimeRepeatListModule(int ClassId, AllChangePlanItem model, UserInfo user)
{
List<object> list = new List<object>();
var oldClass = classRepository.GetEntity(ClassId);
var oldPlanList = class_PlanRepository.GetClassPlanListExtRepository(new RB_Class_Plan_ViewModel()
{
ClassId = ClassId,
EndTime = Common.ConvertHelper.FormatDate(model.OpenTimeStr)
});
//已经完成的上课计划
var finishClassHours = oldPlanList?.Sum(qitem => qitem.TimeHour) ?? 0;
var BasicMinutes = class_ConfigRepository.GetBasicMinutesRepository(user.Group_Id);
RB_Class_ViewModel classModel = new RB_Class_ViewModel()
{
ClassHours = oldClass.ClassHours,
ClassStyle = model.ClassStyle,
WeekDayList = new List<string>(),
Teacher_Id = model.TeacherId,
ClassRoomId = model.ClassRoomId,
};
if (model.DefaultTimeList != null && model.DefaultTimeList.Count > 0)
{
foreach (var item in model.DefaultTimeList)
{
if (item.DateList != null && item.DateList.Count > 0)
{
classModel.WeekDayList.AddRange(item.DateList);
}
}
}
var planList = class_PlanRepository.CreateClassPlanRepository(classModel, model.DefaultTimeList, finishClassHours, BasicMinutes, defaultOpenTime: model.OpenTimeStr);
list = GetRepeatDataModule(planList,2);
return list;
}
/// <summary>
/// 获取冲突的数据
/// </summary>
/// <param name="classPlanList">上课计划</param>
/// <param name="ChangeType">1-全局调整(教室或者老师),2-全局调整(上课计划)</param>
/// <param name="TeacherId">老师编号</param>
/// <param name="ClassRoomId">教室编号</param>
/// <returns></returns>
public List<object> GetRepeatDataModule(List<RB_Class_Plan_ViewModel> classPlanList,int ChangeType, int TeacherId=0,int ClassRoomId=0)
{
List<object> list = new List<object>();
List<TimeItem> timeList = new List<TimeItem>();
//冲突的上课计划编号
List<int> ids = new List<int>();
if (classPlanList != null && classPlanList.Count > 0)
{
string planIds = string.Join(",", classPlanList.Select(qitem => qitem.ClassPlanId));
var classTimeList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel()
{
QClassPlanIds = planIds
});
foreach (var item in classPlanList)
{
if (ChangeType == 1)
{
item.PlanTimeList = classTimeList?.Where(qitem => qitem.ClassPlanId == item.ClassPlanId)?.ToList() ?? new List<RB_Class_Time_ViewModel>();
}
if (item.PlanTimeList != null && item.PlanTimeList.Count > 0)
{
foreach (var subItem in item.PlanTimeList)
{
timeList.Add(new TimeItem
{
StartTime = Common.ConvertHelper.FormatDate(item.ClassDate) + " " + subItem.StartTime + ":00",
EndTime = Common.ConvertHelper.FormatDate(item.ClassDate) + " " + subItem.EndTime + ":00",
});
}
}
}
var repeatList = CheckClassPlanModule(classPlanList[0].ClassId, timeList);
if (repeatList != null && repeatList.Count > 0)
{
foreach (var item in classPlanList)
{
var tempRepeatList = repeatList?.Where(qitem => qitem.ClassDate == item.ClassDate)?.ToList();
if (tempRepeatList != null && tempRepeatList.Count > 0)
{
var newTeacherId = 0;
var newClassRoomId = 0;
if (ChangeType == 1)
{
newTeacherId = TeacherId;
newClassRoomId = ClassRoomId;
}
else
{
newTeacherId = item.TeacherId;
newClassRoomId = item.ClassRoomId;
}
if (newTeacherId > 0)
{
var tempTeacherList = tempRepeatList?.Where(qitem => qitem.TeacherId == newTeacherId)?.ToList();
if (tempTeacherList != null && tempTeacherList.Count > 0)
{
var tempIds = Common.ConvertHelper.StringToList(string.Join(",", tempTeacherList.GroupBy(qitem => qitem.ClassPlanId).Select(qitem => qitem.Key)));
if (tempIds != null && tempIds.Count > 0)
{
ids.AddRange(tempIds);
}
}
}
if (newClassRoomId > 0)
{
var classroomList = tempRepeatList?.Where(qitem => qitem.ClassRoomId == newClassRoomId)?.ToList();
if (classroomList != null && classroomList.Count > 0)
{
var tempIds = Common.ConvertHelper.StringToList(string.Join(",", classroomList.GroupBy(qitem => qitem.ClassPlanId).Select(qitem => qitem.Key)));
if (tempIds != null && tempIds.Count > 0)
{
ids.AddRange(tempIds);
}
}
}
}
}
}
}
if (ids != null && ids.Count > 0)
{
List<RB_Class_Room_ViewModel> roomList = new List<RB_Class_Room_ViewModel>();
List<RB_Teacher_ViewModel> teacherList = new List<RB_Teacher_ViewModel>();
List<int> roomIds = Common.ConvertHelper.StringToList(string.Join(",", classPlanList.Select(qitem => qitem.ClassRoomId)));
List<int> teacherIds= Common.ConvertHelper.StringToList(string.Join(",", classPlanList.Select(qitem => qitem.TeacherId)));
if (roomIds != null && roomIds.Count > 0)
{
roomIds.Add(ClassRoomId);
}
if (teacherIds != null && teacherIds.Count > 0)
{
teacherIds.Add(TeacherId);
}
if (roomIds!=null&& roomIds.Count>0)
{
roomList = class_RoomRepository.GetClassRoomListRepository(new RB_Class_Room_ViewModel()
{
QRoomIds =string.Join(",", roomIds)
});
}
if (teacherIds!=null&& teacherIds.Count > 0)
{
teacherList = teacherRepository.GetTeacherListRepository(new RB_Teacher_ViewModel()
{
QTIds = string.Join(",", teacherIds)
});
}
//冲突的数据
var planOtherList = class_PlanRepository.GetClassPlanListRepository(new RB_Class_Plan_ViewModel()
{
QClassPlanIds = string.Join(",", ids)
});
var classOtherTimeList = class_TimeRepository.GetClassTimeListRepository(new RB_Class_Time_ViewModel()
{
QClassPlanIds = string.Join(",", ids)
});
foreach (var item in classPlanList)
{
List<object> PlanRepeatList = new List<object>();
var tempRepeatList = planOtherList?.Where(qitem => qitem.ClassDate == item.ClassDate)?.ToList();
if (tempRepeatList != null && tempRepeatList.Count > 0)
{
foreach (var subItem in tempRepeatList)
{
var tempObj = new
{
subItem.ClassPlanId,
subItem.ClassId,
subItem.ClassName,
ClassDate = Common.ConvertHelper.FormatDate(subItem.ClassDate),
subItem.TeacherId,
subItem.TeacherName,
subItem.ClassRoomId,
subItem.RoomName,
PlanTimeList = classOtherTimeList.Where(qitem => qitem.ClassPlanId == subItem.ClassPlanId).Select(qitem => new
{
qitem.StartTime,
qitem.EndTime,
qitem.TimeHour
}),
};
PlanRepeatList.Add(tempObj);
}
string TeacherName = "";
string RoomName = "";
var newTeacherId = 0;
var newClassRoomId = 0;
//调整老师或者教室
if (ChangeType == 1)
{
newTeacherId = TeacherId > 0 ? TeacherId : item.TeacherId;
newClassRoomId = ClassRoomId > 0 ? ClassRoomId : item.ClassRoomId;
TeacherName = teacherList?.Where(qitem => qitem.TId == newTeacherId)?.FirstOrDefault()?.TeacherName ?? "";
RoomName = roomList?.Where(qitem => qitem.RoomId == newClassRoomId)?.FirstOrDefault()?.RoomName ?? "";
}
//调整上课日期或上课时间
else
{
newTeacherId = item.TeacherId;
newClassRoomId = item.ClassRoomId;
TeacherName = teacherList?.Where(qitem => qitem.TId == item.TeacherId)?.FirstOrDefault()?.TeacherName ?? "";
RoomName = roomList?.Where(qitem => qitem.RoomId == item.ClassRoomId)?.FirstOrDefault()?.RoomName ?? "";
}
var obj = new
{
item.ClassPlanId,
ClassDate = Common.ConvertHelper.FormatDate(item.ClassDate),
TeacherId = newTeacherId,
TeacherName,
ClassRoomId = newClassRoomId,
RoomName,
PlanTimeList = item.PlanTimeList.Select(qitem => new
{
qitem.StartTime,
qitem.EndTime,
}),
PlanRepeatList
};
list.Add(obj);
}
}
}
return list;
}
/// <summary>
/// 检查上课计划是否存在时间上的交集【HK2021-07-28新增】
/// </summary>
/// <param name="classId"></param>
/// <param name="timeList"></param>
/// <returns></returns>
public List<RB_Class_Plan_ViewModel> CheckClassPlanModule(int classId, List<TimeItem> timeList)
{
return class_PlanRepository.CheckClassPlanRepository(classId, timeList);
}
/// <summary>
/// 新增修改调课计划
/// </summary>
......
using Edu.Common.Enum;
using Edu.Common.Enum.Course;
using Edu.Model.Entity.Course;
using Edu.Model.ViewModel.Course;
using Edu.Model.ViewModel.Reserve;
......@@ -915,6 +916,231 @@ WHERE 1=1
builder.AppendFormat(" WHERE ClassPlanId IN({0}) ", planIds);
return base.Execute(builder.ToString()) > 0;
}
#endregion
/// <summary>
/// 生成上课计划列表
/// </summary>
/// <param name="model"></param>
/// <param name="defaultPlanTimeList"></param>
/// <param name="finishClassHours"></param>
/// <param name="BasicMinutes"></param>
/// <returns></returns>
public List<RB_Class_Plan_ViewModel> CreateClassPlanRepository(RB_Class_ViewModel model, List<ClassTimeItem> defaultPlanTimeList,decimal finishClassHours,int BasicMinutes,string defaultOpenTime="")
{
List<RB_Class_Plan_ViewModel> classPlanList = new List<RB_Class_Plan_ViewModel>();
if (model.ClassHours > 0 && defaultPlanTimeList != null && defaultPlanTimeList.Count > 0)
{
var srartDate = model.OpenTime;
if (model.OpenTime < DateTime.Now)
{
srartDate = DateTime.Now;
}
if (!string.IsNullOrEmpty(defaultOpenTime))
{
srartDate = Convert.ToDateTime(defaultOpenTime);
}
//按周排课和按月排课
if (model.ClassStyle == ClassStyleEnum.Week || model.ClassStyle == ClassStyleEnum.Month)
{
int i = 0;
double totalHours = Convert.ToDouble(finishClassHours);
while (model.ClassHours > totalHours)
{
var newDate = srartDate.AddDays(i);
foreach (var item in model.WeekDayList)
{
var planModel = new RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
ClassPlanId = 0,
ClassRoomId = model.ClassRoomId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
PlanTimeList = new List<RB_Class_Time_ViewModel>(),
TeacherId = model.Teacher_Id,
ClassDate = newDate
};
if (model.ClassStyle == ClassStyleEnum.Week)
{
switch (item)
{
case "1":
if (newDate.DayOfWeek == DayOfWeek.Monday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursRepository(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "2":
if (newDate.DayOfWeek == DayOfWeek.Tuesday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursRepository(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "3":
if (newDate.DayOfWeek == DayOfWeek.Wednesday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursRepository(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "4":
if (newDate.DayOfWeek == DayOfWeek.Thursday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursRepository(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "5":
if (newDate.DayOfWeek == DayOfWeek.Friday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursRepository(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "6":
if (newDate.DayOfWeek == DayOfWeek.Saturday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursRepository(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
case "7":
if (newDate.DayOfWeek == DayOfWeek.Sunday)
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursRepository(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
break;
}
}
else if (model.ClassStyle == ClassStyleEnum.Month)
{
if (newDate.Day == Convert.ToInt32(item))
{
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
var dayHours = CalcDayClassHoursRepository(timeList, planModel.PlanTimeList, model, BasicMinutes);
totalHours += dayHours;
classPlanList.Add(planModel);
}
}
}
}
i++;
}
}
//固定日期
else if (model.ClassStyle == ClassStyleEnum.FixedDate)
{
foreach (var item in model.WeekDayList)
{
var planModel = new RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
ClassPlanId = 0,
ClassRoomId = model.ClassRoomId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
PlanTimeList = new List<RB_Class_Time_ViewModel>(),
TeacherId = model.Teacher_Id,
ClassDate = Convert.ToDateTime(item)
};
var timeList = defaultPlanTimeList.Where(qitem => qitem.DateList.Contains(item))?.FirstOrDefault()?.TimeList;
if (timeList != null && timeList.Count > 0)
{
CalcDayClassHoursRepository(timeList, planModel.PlanTimeList, model, BasicMinutes);
classPlanList.Add(planModel);
}
}
}
//约课
else
{
}
}
return classPlanList;
}
/// <summary>
/// 计算每天课时
/// </summary>
/// <param name="timeList"></param>
/// <param name="classTimeList"></param>
/// <param name="model"></param>
/// <returns></returns>
private double CalcDayClassHoursRepository(List<TimeItem> timeList, List<RB_Class_Time_ViewModel> classTimeList, RB_Class_ViewModel model, int BasicMinutes)
{
double dayClassHours = 0;
double dayMinutes = 0;
foreach (var sItem in timeList)
{
var timeModel = new RB_Class_Time_ViewModel()
{
StartTime = sItem.StartTime,
EndTime = sItem.EndTime,
TimeHour = sItem.TimeHour,
};
classTimeList.Add(timeModel);
var startDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + sItem.StartTime + ":00");
var endDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd") + " " + sItem.EndTime + ":00");
TimeSpan span = endDate.Subtract(startDate);
if (span.TotalMinutes > 0)
{
dayMinutes += span.TotalMinutes;
}
}
if (model.ClassHourMinute > 0)
{
dayClassHours = dayMinutes / model.ClassHourMinute;
}
else
{
dayClassHours = dayMinutes / BasicMinutes;
}
return dayClassHours;
}
}
}
......@@ -76,10 +76,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Room_ViewModel.Group_Id), query.Group_Id);
}
if (query.School_Id > 0)
{
builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Room_ViewModel.School_Id), query.School_Id);
}
//if (query.School_Id > 0)
//{
// builder.AppendFormat(" AND A.{0}={1} ", nameof(RB_Class_Room_ViewModel.School_Id), query.School_Id);
//}
if (!string.IsNullOrEmpty(query.RoomName))
{
builder.AppendFormat(" AND A.{0} LIKE @RoomName ", nameof(RB_Class_Room_ViewModel.RoomName));
......
......@@ -6,6 +6,7 @@ using System.Text;
using System.Linq;
using Edu.Common.Enum.Course;
using System.Threading.Tasks;
using Edu.Model.ViewModel.Course;
namespace Edu.Repository.EduTask
{
......@@ -180,9 +181,7 @@ WHERE 1=1
);
}
}
}
else if (model.ChangeType == 4)//取消课程
{
var oldPlanList = class_TimeRepository.GetClassTimeListRepository(new Edu.Model.ViewModel.Course.RB_Class_Time_ViewModel()
......@@ -211,11 +210,11 @@ WHERE 1=1
}
if (deletePlanList != null && deletePlanList.Any())
{
builder.AppendFormat(" update RB_Class_Plan SET Status=1 where ClassPlanId in({0});", string.Join(",", deletePlanList.Select(x => x)));
builder.AppendFormat(" UPDATE RB_Class_Plan SET Status=1 WHERE ClassPlanId IN({0});", string.Join(",", deletePlanList.Select(x => x)));
}
if (deletePlanTimeList != null && deletePlanTimeList.Any())
{
builder.AppendFormat(" DELETE FROM rb_class_time where classtimeId in({0});", string.Join(",", deletePlanTimeList.Select(x => x)));
builder.AppendFormat(" DELETE FROM rb_class_time WHERE classtimeId IN({0});", string.Join(",", deletePlanTimeList.Select(x => x)));
}
}
}
......@@ -268,7 +267,7 @@ WHERE 1=1
}
//班级上课计划列表
List<Model.ViewModel.Course.RB_Class_Plan_ViewModel> classPlanList = new List<Model.ViewModel.Course.RB_Class_Plan_ViewModel>();
List<RB_Class_Plan_ViewModel> classPlanList = new List<RB_Class_Plan_ViewModel>();
if (allChangePlanModel.ClassHours > 0)
{
var srartDate = Convert.ToDateTime(allChangePlanModel.OpenTimeStr);
......@@ -282,14 +281,14 @@ WHERE 1=1
var newDate = srartDate.AddDays(i);
foreach (var item in allChangePlanModel.WeekDayList)
{
var planModel = new Model.ViewModel.Course.RB_Class_Plan_ViewModel()
var planModel = new RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
ClassPlanId = 0,
ClassRoomId = allChangePlanModel.ClassRoomId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
PlanTimeList = new List<Model.ViewModel.Course.RB_Class_Time_ViewModel>(),
PlanTimeList = new List<RB_Class_Time_ViewModel>(),
TeacherId = allChangePlanModel.TeacherId,
ClassDate = newDate
};
......@@ -405,14 +404,14 @@ WHERE 1=1
{
foreach (var item in allChangePlanModel.WeekDayList)
{
var planModel = new Model.ViewModel.Course.RB_Class_Plan_ViewModel()
var planModel = new RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
ClassPlanId = 0,
ClassRoomId = allChangePlanModel.ClassRoomId,
Group_Id = model.Group_Id,
School_Id = model.School_Id,
PlanTimeList = new List<Model.ViewModel.Course.RB_Class_Time_ViewModel>(),
PlanTimeList = new List<RB_Class_Time_ViewModel>(),
TeacherId = allChangePlanModel.TeacherId,
ClassDate = Convert.ToDateTime(item)
};
......@@ -433,7 +432,6 @@ WHERE 1=1
Task.Run(() =>
{
if (oldPlanList != null && oldPlanList.Any())//删除剩余的排课日期和时间
{
string ids = string.Join(",", oldPlanList.Select(qitem => qitem.ClassPlanId));
......@@ -491,14 +489,14 @@ WHERE 1=1
{
if (model.ChangeType == 2)
{
builder.AppendFormat(" update RB_Class_Plan SET TeacherId={0} where DATE_FORMAT(ClassDate,'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d')", allChangePlanModel.TeacherId, model.TakeEffectTime.Value.ToString("yyyy-MM-dd"));
builder.AppendFormat(" UPDATE RB_Class_Plan SET TeacherId={0} WHERE DATE_FORMAT(ClassDate,'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d')", allChangePlanModel.TeacherId, model.TakeEffectTime.Value.ToString("yyyy-MM-dd"));
string tIds = allChangePlanModel.TeacherId.ToString();
var teacherList = teacherRepository.GetTeacherListRepository(new Model.ViewModel.User.RB_Teacher_ViewModel() { QTIds = tIds });
logContent += string.Format("全局将讲师修改为【{0}】.", (teacherList?.Where(qitem => qitem.TId == allChangePlanModel.TeacherId)?.FirstOrDefault()?.TeacherName ?? ""));
}
else if (model.ChangeType == 3)
{
builder.AppendFormat(" update RB_Class_Plan SET ClassRoomId={0} where DATE_FORMAT(ClassDate,'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d')", allChangePlanModel.ClassRoomId, model.TakeEffectTime.Value.ToString("yyyy-MM-dd"));
builder.AppendFormat(" UPDATE RB_Class_Plan SET ClassRoomId={0} WHERE DATE_FORMAT(ClassDate,'%Y-%m-%d')>=DATE_FORMAT('{1}','%Y-%m-%d')", allChangePlanModel.ClassRoomId, model.TakeEffectTime.Value.ToString("yyyy-MM-dd"));
string roomIds = allChangePlanModel.ClassRoomId.ToString();
var roomList = class_RoomRepository.GetClassRoomListRepository(new Edu.Model.ViewModel.Course.RB_Class_Room_ViewModel() { QRoomIds = roomIds });
logContent += string.Format("全局将教室修改为【{0}】.", (roomList?.Where(qitem => qitem.RoomId == allChangePlanModel.ClassRoomId)?.FirstOrDefault()?.RoomName ?? ""));
......@@ -506,7 +504,7 @@ WHERE 1=1
}
else if (model.ChangeType == 4)
{
var oldPlanList = class_PlanRepository.GetClassPlanListRepository(new Edu.Model.ViewModel.Course.RB_Class_Plan_ViewModel()
var oldPlanList = class_PlanRepository.GetClassPlanListRepository(new RB_Class_Plan_ViewModel()
{
ClassId = model.ClassId,
StartTime = model.TakeEffectTime.Value.ToString("yyyy-MM-dd")
......@@ -515,8 +513,8 @@ WHERE 1=1
{
if (oldPlanList != null && oldPlanList.Any())
{
builder.AppendFormat(" update RB_Class_Plan SET Status=1 where ClassPlanId in({0});", string.Join(",", oldPlanList.Select(x => x.ClassPlanId)));
builder.AppendFormat(" DELETE FROM rb_class_time where ClassPlanId in({0});", string.Join(",", oldPlanList.Select(x => x.ClassPlanId)));
builder.AppendFormat(" UPDATE RB_Class_Plan SET Status=1 WHERE ClassPlanId IN({0});", string.Join(",", oldPlanList.Select(x => x.ClassPlanId)));
builder.AppendFormat(" DELETE FROM rb_class_time WHERE ClassPlanId IN({0});", string.Join(",", oldPlanList.Select(x => x.ClassPlanId)));
}
}
}
......@@ -531,7 +529,7 @@ WHERE 1=1
classLogRepository.AddClassLogRepository(
new Model.Entity.Log.RB_Class_Log()
{
LogType = Common.Enum.Course.ClassLogTypeEnum.Class,
LogType = ClassLogTypeEnum.Class,
LogContent = logContent,
ClassId = model.ClassId,
Group_Id = model.Group_Id,
......@@ -551,13 +549,13 @@ WHERE 1=1
/// <param name="classTimeList"></param>
/// <param name="model"></param>
/// <returns></returns>
private decimal CalcDayClassHoursModule(List<TimeItem> timeList, List<Model.ViewModel.Course.RB_Class_Time_ViewModel> classTimeList, int ClassHourMinute, int BasicMinutes)
private decimal CalcDayClassHoursModule(List<TimeItem> timeList, List<RB_Class_Time_ViewModel> classTimeList, int ClassHourMinute, int BasicMinutes)
{
decimal dayClassHours = 0;
decimal dayMinutes = 0;
foreach (var sItem in timeList)
{
var timeModel = new Model.ViewModel.Course.RB_Class_Time_ViewModel()
var timeModel = new RB_Class_Time_ViewModel()
{
StartTime = sItem.StartTime,
EndTime = sItem.EndTime,
......@@ -584,6 +582,5 @@ WHERE 1=1
}
return dayClassHours;
}
}
}
\ No newline at end of file
......@@ -40,10 +40,10 @@ WHERE 1=1
{
builder.AppendFormat(" AND a.{0}={1} ", nameof(RB_Account_ViewModel.AccountType), (int)query.AccountType);
}
if (query.School_Id > 0)
{
builder.AppendFormat(" AND a.{0}={1} ", nameof(RB_Account_ViewModel.School_Id), query.School_Id);
}
//if (query.School_Id > 0)
//{
// builder.AppendFormat(" AND a.{0}={1} ", nameof(RB_Account_ViewModel.School_Id), query.School_Id);
//}
if (query.Group_Id > 0)
{
builder.AppendFormat(" AND a.{0}={1} ", nameof(RB_Account_ViewModel.Group_Id), query.Group_Id);
......
......@@ -49,21 +49,18 @@ namespace Edu.WebApi.Controllers.EduTask
MoveType = base.ParmJObj.GetInt("MoveType"),
Remarks = base.ParmJObj.GetStringValue("Remarks")
};
if (model.ClassId <= 0)
{
return ApiResult.ParamIsNull(message: "请选择要调整的班级!");
}
var classModel = classModule.GetClassModule(model.ClassId);
string receiptFile = string.Empty;
try
{
List<string> receiptFileList = Common.Plugin.JsonHelper.DeserializeObject<List<string>>(base.ParmJObj.GetStringValue("ReceiptFileList"));
List<string> receiptFileList = JsonHelper.DeserializeObject<List<string>>(base.ParmJObj.GetStringValue("ReceiptFileList"));
if (receiptFileList == null || !receiptFileList.Any())
{
receiptFile = "";
//return ApiResult.Failed("附件必须上传");
}
else
{
......@@ -71,8 +68,8 @@ namespace Edu.WebApi.Controllers.EduTask
}
if (model.MoveType == 1)
{
model.OldChangePlanItemList = Common.Plugin.JsonHelper.DeserializeObject<List<ChangePlanItem>>(base.ParmJObj.GetStringValue("OldChangePlanItemList"));
model.NewChangePlanItemList = Common.Plugin.JsonHelper.DeserializeObject<List<ChangePlanItem>>(base.ParmJObj.GetStringValue("NewChangePlanItemList"));
model.OldChangePlanItemList = JsonHelper.DeserializeObject<List<ChangePlanItem>>(base.ParmJObj.GetStringValue("OldChangePlanItemList"));
model.NewChangePlanItemList = JsonHelper.DeserializeObject<List<ChangePlanItem>>(base.ParmJObj.GetStringValue("NewChangePlanItemList"));
}
else
{
......@@ -85,7 +82,6 @@ namespace Edu.WebApi.Controllers.EduTask
}
model.TakeEffectTime = Convert.ToDateTime(takeEffectTime);
}
model.AllChangePlanModel = Common.Plugin.JsonHelper.DeserializeObject<AllChangePlanItem>(base.ParmJObj.GetStringValue("AllChangePlanItem"));
}
}
......@@ -93,7 +89,9 @@ namespace Edu.WebApi.Controllers.EduTask
{
Common.Plugin.LogHelper.Write(ex, "SetChangeClassPlan");
}
if (model.MoveType == 1)//固定日期
List<TimeItem> timeList = new List<TimeItem>();
//固定日期
if (model.MoveType == 1)
{
if (model.ChangeType == 1)//调课
{
......@@ -101,6 +99,7 @@ namespace Edu.WebApi.Controllers.EduTask
{
return ApiResult.Failed("排课原次数与现有次数不一致");
}
}
else if (model.ChangeType == 2)
{
......@@ -116,8 +115,31 @@ namespace Edu.WebApi.Controllers.EduTask
return ApiResult.Failed("请选择教室");
}
}
//固定日期上课计划验证冲突
timeList = new List<TimeItem>();
foreach (var item in model.NewChangePlanItemList)
{
foreach (var subItem in item.PlanTimeList)
{
timeList.Add(new TimeItem
{
StartTime = Common.ConvertHelper.FormatDate(item.ClassDate) + " " + subItem.StartTime + ":00",
EndTime = Common.ConvertHelper.FormatDate(item.ClassDate) + " " + subItem.EndTime + ":00",
});
}
}
if (timeList != null && timeList.Count > 0)
{
//var objList = changeClassPlanModule.GetRepeatListModule(model.ClassId, model.NewChangePlanItemList, timeList);
//if (objList != null && objList.Count > 0)
//{
// return ApiResult.Failed("存在上课计划冲突的数据!", data: objList);
//}
}
}
else //全局修改
//全局修改
else
{
if (model.ChangeType == 1)
{
......@@ -203,6 +225,11 @@ namespace Edu.WebApi.Controllers.EduTask
{
return ApiResult.Failed("班级信息不存在");
}
//var dateList = changeClassPlanModule.GetAllDateAndTimeRepeatListModule(model.ClassId, model.AllChangePlanModel,base.UserInfo);
//if (dateList != null && dateList.Count > 0)
//{
// return ApiResult.Failed("存在上课计划冲突的数据!", data: dateList);
//}
}
else if (model.ChangeType == 2)
{
......@@ -210,6 +237,11 @@ namespace Edu.WebApi.Controllers.EduTask
{
return ApiResult.Failed("请选择老师");
}
//var teacherlist = changeClassPlanModule.GetAllRepeatListModule(model.ClassId, Common.ConvertHelper.FormatDate(model.TakeEffectTime), TeacherId: model.AllChangePlanModel.TeacherId);
//if (teacherlist != null && teacherlist.Count > 0)
//{
// return ApiResult.Failed("存在上课计划冲突的数据!", data: teacherlist);
//}
}
else if (model.ChangeType == 3)
{
......@@ -217,6 +249,11 @@ namespace Edu.WebApi.Controllers.EduTask
{
return ApiResult.Failed("请选择教室");
}
//var classroomlist = changeClassPlanModule.GetAllRepeatListModule(model.ClassId, Common.ConvertHelper.FormatDate(model.TakeEffectTime), ClassRoomId: model.AllChangePlanModel.ClassRoomId);
//if (classroomlist != null && classroomlist.Count > 0)
//{
// return ApiResult.Failed("存在上课计划冲突的数据!", data: classroomlist);
//}
}
}
if (model.OldChangePlanItemList != null && model.OldChangePlanItemList.Any())
......
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