/// <summary> /// 获取已排课的时间段 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2018-11-06</para> /// </summary> /// <param name="classRooms">教室列表数据</param> /// <param name="termId">学期Id</param> /// <returns>上课时间段列表</returns> private static List <TblDatSchoolTime> GetScheduledTimes(List <TimetableClassRoomResponse> classRooms, long termId) { List <TblDatSchoolTime> res = new List <TblDatSchoolTime>(); List <TblDatSchoolTime> schoolTimes = new SchoolTimeService(termId).TblDatSchoolTime; foreach (var classRoom in classRooms) //教室 { foreach (var @class in classRoom.Classes) //班级 { if (@class.ClassId != 0) { if (!res.Any(x => x.SchoolTimeId == @class.SchoolTimeId)) { res.Add(schoolTimes.FirstOrDefault(x => x.SchoolTimeId == @class.SchoolTimeId)); } } } } return(res.OrderBy(x => x.WeekDay).ThenBy(x => x.BeginTime).ToList()); }
/// <summary> /// 待添加到审核中上课时间段 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2018-11-23</para> /// </summary> /// <param name="request">待添加的班级信息</param> /// <param name="autClass">审核中的班级</param> /// <param name="hasBeenClassTimeIds">一组已排课的上课时间Id</param> /// <param name="schoolTimeId">要添加的上课时间段Id</param> /// <returns>班级上课时间列表</returns> /// <exception cref="BussinessException"> /// 异常ID:2,异常描述:没有此时间段;时间段已占用;不能与下一个时间段连上;下一个时间段已排课; /// </exception> private static List <TblAutClassTime> GetTblAutClassTimes(ClassScheduleRequest request, TblAutClass autClass, List <long> hasBeenClassTimeIds, long schoolTimeId) { List <TblAutClassTime> res = new List <TblAutClassTime>(); List <TblDatSchoolTime> schoolTimes = new SchoolTimeService(autClass.TermId) .TblDatSchoolTime .OrderBy(x => x.BeginTime) .ToList(); TblDatSchoolTime schoolTime = schoolTimes.FirstOrDefault(x => x.SchoolTimeId == schoolTimeId); ValidateObject(schoolTime); foreach (var weekDay in request.WeekDay) { var dayAllClassTime = schoolTimes .Where(x => x.WeekDay == weekDay && x.Duration == schoolTime.Duration) .OrderBy(x => x.BeginTime) .ToList(); var firstClassTime = dayAllClassTime.FirstOrDefault(x => x.BeginTime == schoolTime.BeginTime && x.EndTime == schoolTime.EndTime); if (firstClassTime == null) { throw new BussinessException(ModelType.Default, 2, $"{WeekDayConvert.IntToString(weekDay)}没有此时间段"); } //判断是否有排课 if (hasBeenClassTimeIds.Any(x => x == firstClassTime.SchoolTimeId)) { throw new BussinessException(ModelType.Default, 2, $"{WeekDayConvert.IntToString(weekDay)}时间段已占用"); } res.Add(new TblAutClassTime { AutClassTimeId = IdGenerator.NextId(), SchoolId = autClass.SchoolId, ClassTimeId = IdGenerator.NextId(), AuditId = autClass.AuditId, ClassId = autClass.ClassId, CreateTime = DateTime.Now, DataStatus = 0, SchoolTimeId = firstClassTime.SchoolTimeId }); if (schoolTime.Duration == (int)TimeType.Ninety && request.IsLink) { int firstIndex = dayAllClassTime.IndexOf(firstClassTime); int secondIndex = firstIndex + 1; //最后一个时间段 if (secondIndex >= dayAllClassTime.Count) { throw new BussinessException(ModelType.Default, 2, $"{WeekDayConvert.IntToString(weekDay)}不能与下一个时间段连上"); } var secondClassTime = dayAllClassTime[secondIndex]; //判断是否有排课 if (hasBeenClassTimeIds.Any(x => x == secondClassTime.SchoolTimeId)) { throw new BussinessException(ModelType.Default, 2, $"{WeekDayConvert.IntToString(weekDay)}下一个时间段已排课"); } res.Add(new TblAutClassTime { AutClassTimeId = IdGenerator.NextId(), ClassTimeId = IdGenerator.NextId(), AuditId = autClass.AuditId, ClassId = autClass.ClassId, CreateTime = DateTime.Now, DataStatus = 0, SchoolId = autClass.SchoolId, SchoolTimeId = secondClassTime.SchoolTimeId }); } } return(res); }