Example #1
0
        /// <summary>
        /// 获取写生课的课次信息
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-10</para>
        /// </summary>
        /// <returns>课程信息列表</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:
        /// 1. 未找到数据
        /// </exception>
        public List <LessonCreatorInfo> GetLessonCreatorInfo()
        {
            List <LessonCreatorInfo> result = new List <LessonCreatorInfo>();

            // 1.获取学期信息
            var termInfo = TermService.GetTermByTermId(_entity.TermId);

            if (termInfo == null)
            {
                throw new BussinessException(ModelType.Default, 1);
            }
            // 2.添加课程信息
            foreach (var item in _data)
            {
                LessonCreatorInfo lesson = new LessonCreatorInfo
                {
                    BusinessId        = _entity.LifeClassId,
                    BusinessType      = base.BusinessType,
                    ClassId           = item.ClassId,
                    ClassDate         = _entity.ClassBeginTime.Value,
                    ClassBeginTime    = _entity.ClassBeginTime.Value.ToString("yyyy.MM.dd HH:mm"),
                    ClassEndTime      = _entity.ClassEndTime.Value.ToString("yyyy.MM.dd HH:mm"),
                    EnrollOrderItemId = item.EnrollOrderItemId,
                    SchoolId          = _entity.SchoolId,
                    StudentId         = item.StudentId,
                    TeacherId         = _entity.TeacherId,
                    TermId            = _entity.TermId,
                    LessonCount       = _entity.UseLessonCount,
                    LessonType        = LessonType.SketchCourse
                };
                result.Add(lesson);
            }

            return(result);
        }
Example #2
0
        /// <summary>
        /// 获取创建课次信息
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-03-19</para>
        /// </summary>
        /// <param name="classDate">上课日期</param>
        /// <param name="beginTime">上课开始时间</param>
        /// <param name="endTime">上课结束时间</param>
        /// <param name="schoolId">校区Id</param>
        /// <param name="studentId">学生Id</param>
        /// <param name="termId">学期Id</param>
        /// <returns>创建的课次信息</returns>
        private LessonCreatorInfo GetCreatorInfo(
            DateTime classDate, string beginTime, string endTime, string schoolId,
            long studentId, long termId)
        {
            //生成新课次需注意老师代课调整、全校上课日期调整、班级上课日期调整

            LessonCreatorInfo lesson = new LessonCreatorInfo
            {
                BusinessId        = _makeLesson.MakeLessonId,
                ClassId           = _makeLesson.ClassId,
                EnrollOrderItemId = _makeLesson.EnrollOrderItemId,

                ClassRoomId   = _classService.TblDatClass.ClassRoomId,
                CourseId      = _classService.TblDatClass.CourseId,
                CourseLevelId = _classService.TblDatClass.CourseLeveId,
                TeacherId     = _classService.TblDatClass.TeacherId,

                ClassDate      = classDate,
                ClassBeginTime = beginTime,
                ClassEndTime   = endTime,
                SchoolId       = schoolId,
                StudentId      = studentId,
                TermId         = termId,

                BusinessType = base.BusinessType,
                LessonCount  = 1,
                LessonType   = LessonType.RegularCourse
            };

            //处理某些上课日期有老师代课的情况
            var temp = _viewClassTeacherDates
                       .FirstOrDefault(x => x.ClassDate == classDate && x.ClassId == lesson.ClassId);

            if (temp != null && temp.TeacherId != lesson.TeacherId)
            {
                lesson.TeacherId = temp.TeacherId;
            }

            return(lesson);
        }
        /// <summary>
        /// 描述:获取可转入的课次信息
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018-11-7</para>
        /// </summary>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常Id:1,异常描述:未找到数据
        /// 异常Id:71,异常描述:转入班级时间段和课次信息调整时间段不一致
        /// </exception>
        /// <returns>可转入课次信息列表</returns>
        public List <LessonCreatorInfo> GetLessonCreatorInfo()
        {
            var result = new List <LessonCreatorInfo>();
            //获取转入班级信息
            var classService = new DefaultClassService(base._entity.InClassId);
            var firstTime    = base._entity.InDate;
            //1.获取学期信息
            var termInfo = TermService.GetTermByTermId(classService.TblDatClass.TermId);

            if (termInfo == null)
            {
                throw new BussinessException(ModelType.Default, 1);
            }
            //2.获取停课日
            var schoolHoliday = TermService.GetSchoolHoliday(termInfo);

            //首次上课时间大于学期结束时间则没有课次
            if (firstTime > termInfo.EndDate)
            {
                return(result);
            }
            //首次上课时间小于学期开始时间,则首次上课时间等于学期开始时间
            if (firstTime < termInfo.BeginDate)
            {
                firstTime = termInfo.BeginDate;
            }

            while (firstTime <= termInfo.EndDate)
            {
                //上课时间大于学期结束时间或者预计排课课次等于实际排课课次,则停止排课
                if (firstTime > termInfo.EndDate || _entity.ClassTimes == _actualLesson)
                {
                    break;
                }

                var isClosed = SchoolHolidayService.TodayIsSuspendClasses(schoolHoliday, firstTime);
                //当前时间是否是停课日,如果是则加1
                if (isClosed)
                {
                    firstTime = firstTime.AddDays(1);
                    continue;
                }
                //星期转换
                var week = WeekDayConvert.DayOfWeekToInt(firstTime);
                //获取与当前时间匹配的班级上课时间
                var schoolTimes = classService.ClassSchoolTimes.Where(x => x.WeekDay == week).OrderBy(x => x.BeginTime).ToList();

                //获取班级是否有课程信息调整(上课日期和上课时间段 修改)
                var classDateChangeList = _viewChangeClassTimeDates.Where(x => x.OldClassDate == firstTime).OrderBy(x => x.NewClassBeginTime).ToList();
                if (classDateChangeList.Count > 0 && classDateChangeList.Count != schoolTimes.Count)  //如果班级设置的上课时间段和课程调整的时间段不一致则抛出异常
                {
                    throw new BussinessException(ModelType.Timetable, 71);
                }
                var lessonCount = 0;
                foreach (var time in schoolTimes)
                {
                    var lesson = new LessonCreatorInfo
                    {
                        BusinessId        = base._entity.ChangeClassId,
                        BusinessType      = base.BusinessType,
                        ClassId           = base._entity.InClassId,
                        ClassDate         = firstTime,
                        ClassBeginTime    = time.BeginTime,
                        ClassEndTime      = time.EndTime,
                        ClassRoomId       = classService.TblDatClass.ClassRoomId,
                        CourseId          = classService.TblDatClass.CourseId,
                        CourseLevelId     = classService.TblDatClass.CourseLeveId,
                        EnrollOrderItemId = _enrollOrderItemId,
                        SchoolId          = termInfo.SchoolId,
                        StudentId         = base._entity.StudentId,
                        TeacherId         = classService.TblDatClass.TeacherId,
                        TermId            = termInfo.TermId
                    };
                    //获取是否有老师调课
                    var teacherLessonChangeInfo = _viewClassTeacherDates.FirstOrDefault(x => x.ClassId == lesson.ClassId && x.ClassDate == lesson.ClassDate);
                    if (teacherLessonChangeInfo != null && teacherLessonChangeInfo.TeacherId.Trim() != lesson.TeacherId.Trim())
                    {
                        lesson.TeacherId = teacherLessonChangeInfo.TeacherId;
                    }
                    //获取班级是否有修改上课日期和上课时间段,并赋值
                    if (classDateChangeList.Any())
                    {
                        lesson.ClassDate      = classDateChangeList[lessonCount].NewClassDate;
                        lesson.ClassBeginTime = classDateChangeList[lessonCount].NewClassBeginTime;
                        lesson.ClassEndTime   = classDateChangeList[lessonCount].NewClassEndTime;
                    }
                    result.Add(lesson);
                    lessonCount++;
                    //实际排课课次+1
                    _actualLesson++;
                }
                firstTime = firstTime.AddDays(1);
            }
            return(result);
        }