コード例 #1
0
        /// <summary>
        /// 获取已上课的上课时间段Id
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-11-23</para>
        /// </summary>
        /// <param name="auditId">审核Id</param>
        /// <param name="classRoomId">教室Id</param>
        /// <returns></returns>
        private static List <long> GetHasBeenClassTimeIds(long auditId, long classRoomId)
        {
            var autClasss     = new TblAutClassRepository().GetByAuditId(auditId).Result;
            var autClassTimes = new TblAutClassTimeRepository().GetByAuditIdAsync(auditId).Result;

            var hasBeenClassTimeId = from a in autClasss                                        //班级
                                     join b in autClassTimes on a.ClassId equals b.ClassId      //班级上课时间
                                     where a.ClassRoomId == classRoomId
                                     select b.SchoolTimeId;

            return(hasBeenClassTimeId.ToList());
        }
コード例 #2
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);
        }
コード例 #3
0
        /// <summary>
        /// 获取不同时间段的课表信息
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-09-21</para>
        /// </summary>
        /// <param name="duration">60分钟或90分钟</param>
        /// <returns>课表信息</returns>
        private TermCourseTimetableResponse GetTermCourseTimetable(TimeType duration)
        {
            TermCourseTimetableResponse res = new TermCourseTimetableResponse();

            var schTimeRes = this.GetTimetableSchoolTimeResponse(duration);

            res.SchoolTimes = schTimeRes.TimetableSchoolTimeResponses;        //上课时间表
            res.ClassRooms  = new List <TimetableClassRoomResponse>();        //教室信息

            //审核中所有班级
            var classes = _tblAutClassRepository.Value.GetByAuditId(base.TblAutAudit.AuditId).Result;

            //校区
            var schoolId = TermService.GetTermByTermId(_termId)?.SchoolId;

            //班级上课时间表
            var classTimes = new TblAutClassTimeRepository()
                             .GetBySchoolTimeId(schTimeRes.TblDatSchoolTimes.Select(x => x.SchoolTimeId), base.TblAutAudit.AuditId)
                             .Result;

            //获取老师用户信息
            var teachers = TeachService.GetTeachers();

            //所有的课程
            var courses = CourseService.GetAllAsync().Result;

            //课程等级
            var courseLv = CourseLevelService.GetCourseLevelList().Result;

            //获取校区教室
            var durationClassId = classTimes.Select(x => x.ClassId).ToList();
            SchoolClassRoomService    schoolClassRoomService = new SchoolClassRoomService(schoolId);
            List <RoomCourseResponse> roomCourseResponses    = schoolClassRoomService.RoomCourseList;

            List <long> classRoomIds = classes.Where(x => durationClassId.Contains(x.ClassId)).Select(x => x.ClassRoomId).ToList();

            classRoomIds.AddRange(roomCourseResponses.Where(x => !x.IsDisabled).Select(x => x.ClassRoomId));

            List <TblDatClassRoom> classRooms = schoolClassRoomService
                                                .ClassRoomList
                                                .Where(x => classRoomIds.Contains(x.ClassRoomId))
                                                .OrderBy(o => o.RoomNo, new NaturalStringComparer())
                                                .ToList();

            //渲染教室
            foreach (var classRoom in classRooms)
            {
                TimetableClassRoomResponse ttcrr = new TimetableClassRoomResponse
                {
                    ClassRoomId = classRoom.ClassRoomId,
                    RoomNo      = classRoom.RoomNo,
                    Classes     = new List <TimetableClassResponse>()
                };

                int lessonIndex = 0;

                int weekDay = -1;

                //教室对应的上课时间段的班级
                foreach (var schoolTime in schTimeRes.TblDatSchoolTimes)
                {
                    if (weekDay != schoolTime.WeekDay)
                    {
                        weekDay     = schoolTime.WeekDay;
                        lessonIndex = 0;
                    }

                    lessonIndex++;

                    TimetableClassResponse ttcr = new TimetableClassResponse
                    {
                        SchoolTimeId    = schoolTime.SchoolTimeId,
                        ClassId         = 0,
                        CourseId        = 0,
                        CourseName      = string.Empty,
                        CourseLeveId    = 0,
                        CourseLevelName = string.Empty,
                        TeacherId       = string.Empty,
                        TeacherName     = string.Empty,
                        WeekDay         = schoolTime.WeekDay,
                        LessonIndex     = lessonIndex
                    };

                    var classIds = (from a in classTimes
                                    join b in classes on a.ClassId equals b.ClassId
                                    where a.SchoolTimeId == schoolTime.SchoolTimeId && b.ClassRoomId == classRoom.ClassRoomId
                                    select a.ClassId).ToList();

                    if (classIds.Any())
                    {
                        var classInfo = classes.FirstOrDefault(x => x.ClassId == classIds.First());
                        ttcr.ClassId         = classInfo.ClassId;
                        ttcr.CourseId        = classInfo.CourseId;
                        ttcr.CourseName      = courses.FirstOrDefault(x => x.CourseId == classInfo.CourseId)?.ShortName;
                        ttcr.CourseLeveId    = classInfo.CourseLeveId;
                        ttcr.CourseLevelName = courseLv.FirstOrDefault(x => x.CourseLevelId == classInfo.CourseLeveId)?.LevelCnName;
                        ttcr.TeacherId       = classInfo.TeacherId;
                        ttcr.TeacherName     = teachers.FirstOrDefault(x => x.TeacherId == classInfo.TeacherId)?.TeacherName;
                    }

                    ttcrr.Classes.Add(ttcr);
                }

                res.ClassRooms.Add(ttcrr);
            }

            return(res);
        }