Beispiel #1
0
        /// <summary>
        /// 添加班级排课
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-09-25</para>
        /// </summary>
        /// <param name="classRoomId">教室Id</param>
        /// <param name="schoolTimeId">时间段Id</param>
        /// <param name="request">班级排课数据源</param>
        /// <param name="createUserName">创建人用户名称</param>
        /// <returns></returns>
        public static void AddClass(long classRoomId, long schoolTimeId, ClassScheduleRequest request, string createUserName)
        {
            TblAutClass autClass = GetTblAutClass(request, classRoomId, schoolTimeId, createUserName);

            List <long> hasBeenClassTimeIds = GetHasBeenClassTimeIds(autClass.AuditId, classRoomId);

            List <TblAutClassTime> autClassTimes = GetTblAutClassTimes(request, autClass, hasBeenClassTimeIds, schoolTimeId);

            //校验老师是否重复
            VerifyTeacherOccupy(autClassTimes.Select(x => x.SchoolTimeId), request.TeacherId, autClass.TermId);

            Task[] tasks = new Task[2];
            tasks[0] = new TblAutClassRepository().AddTask(autClass);
            tasks[1] = new TblAutClassTimeRepository().SaveTask(autClassTimes);
            Task.WaitAll(tasks);
        }
Beispiel #2
0
        /// <summary>
        /// 待添加到审核中班级
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-02-19</para>
        /// </summary>
        /// <param name="input">待添加的班级信息</param>
        /// <param name="classRoomId">教室Id</param>
        /// <param name="schoolTimeId">上课时间段Id</param>
        /// <param name="createUserName">创建人</param>
        /// <returns>审核中的班级课表信息</returns>
        private static TblAutClass GetTblAutClass(ClassScheduleRequest input, long classRoomId, long schoolTimeId, string createUserName)
        {
            //教室信息
            var classRoom = new ClassRoomService(classRoomId).ClassRoomInfo;

            ValidateObject(classRoom);

            //上课时间信息
            var schoolTime = SchoolTimeService.GetBySchoolTimeId(schoolTimeId);

            ValidateObject(schoolTime);

            //根据学期编号获取学期信息
            TblDatTerm term = TermService.GetTermByTermId(schoolTime.TermId);

            ValidateObject(term);

            //获取课程
            TblDatRoomCourse roomCourse = new ClassRoomService(classRoomId).GetByCourseId(input.CourseId).Result;

            ValidateObject(roomCourse);

            //复制课表到审核中得到审核主表id
            long auditId = new TermCourseTimetableAuditService(schoolTime.TermId).VerifyGetAuditId(classRoom.SchoolId);

            TblAutClass autClass = new TblAutClass
            {
                AutClassId   = IdGenerator.NextId(),
                SchoolId     = classRoom.SchoolId,
                ClassId      = IdGenerator.NextId(),
                AuditId      = auditId,
                ClassNo      = input.ClassNo,
                TermId       = term.TermId,
                RoomCourseId = roomCourse.RoomCourseId,
                ClassRoomId  = classRoomId,
                CourseId     = roomCourse.CourseId,
                CourseLeveId = input.CourseLevelId,
                TeacherId    = input.TeacherId,
                CourseNum    = input.CourseNum,
                StudentsNum  = input.StudentsNum,
                CreateTime   = DateTime.Now,
                UpdateTime   = DateTime.Now,
                DataStatus   = 0
            };

            return(autClass);
        }
Beispiel #3
0
        /// <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);
        }