예제 #1
0
        /// <summary>
        /// 获取补课信息
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-03-13</para>
        /// </summary>
        /// <param name="outReplenishLessonList">转出的补课信息列表</param>
        /// <param name="replenishLessonCreatorInfo">课次调整对象</param>
        /// <param name="lessonModel">新构建的课次信息</param>
        /// <returns>补课信息构建</returns>
        private TblTimReplenishLesson GetTblTimReplenishLesson(
            List <TblTimReplenishLesson> outReplenishLessonList,
            ReplenishLessonCreatorInfo replenishLessonCreatorInfo,
            TblTimLesson lessonModel)
        {
            var outReplenishLesson = outReplenishLessonList
                                     .FirstOrDefault(x => x.LessonId == replenishLessonCreatorInfo.OutLessonId);

            TblTimReplenishLesson replenishLessonModel = new TblTimReplenishLesson
            {
                AdjustType        = (int)AdjustType.DEFAULT,
                AttendDate        = null,
                AttendStatus      = (int)AttendStatus.NotClockIn,
                AttendUserType    = (int)AttendUserType.DEFAULT,
                CreateTime        = DateTime.Now,
                LessonId          = lessonModel.LessonId,
                ParentLessonId    = replenishLessonCreatorInfo.OutLessonId,
                ReplenishCode     = string.Empty,
                ReplenishLessonId = IdGenerator.NextId(),
                RootLessonId      = outReplenishLesson == null ? replenishLessonCreatorInfo.OutLessonId : outReplenishLesson.RootLessonId,
                SchoolId          = replenishLessonCreatorInfo.SchoolId,
                StudentId         = replenishLessonCreatorInfo.StudentId,
                UpdateTime        = DateTime.Now
            };

            return(replenishLessonModel);
        }
예제 #2
0
        /// <summary>
        /// 获取课次变更数据
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-03-13</para>
        /// </summary>
        /// <param name="lessonModel">新构建的课次信息</param>
        /// <returns>课次变更数据</returns>
        private TblTimLessonProcess GetTblTimLessonProcess(TblTimLesson lessonModel)
        {
            TblTimLessonProcess lessonProcessModel = new TblTimLessonProcess
            {
                SchoolId        = lessonModel.SchoolId,
                BusinessId      = lessonModel.BusinessId,
                BusinessType    = lessonModel.BusinessType,
                LessonId        = lessonModel.LessonId,
                LessonProcessId = IdGenerator.NextId(),
                ProcessStatus   = (int)ProcessStatus.Create,
                Remark          = string.Empty,
                ProcessTime     = DateTime.Now,
                CreateTime      = DateTime.Now
            };

            return(lessonProcessModel);
        }
예제 #3
0
        /// <summary>
        /// 获取课次信息数据
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-03-13</para>
        /// </summary>
        /// <param name="model">课次调整数据源</param>
        /// <returns>课次信息数据</returns>
        private TblTimLesson GetTblTimLesson(ReplenishLessonCreatorInfo model)
        {
            DateTime classBeginDate; //上课开始时间
            DateTime classEndDate;   //上课结束时间

            if (model.LessonType == LessonType.RegularCourse)
            {
                classBeginDate = DateTime.Parse($"{model.ClassDate:yyyy-MM-dd} {model.ClassBeginTime}");
                classEndDate   = DateTime.Parse($"{model.ClassDate:yyyy-MM-dd} {model.ClassEndTime}");
            }
            else
            {
                classBeginDate = DateTime.Parse(model.ClassBeginTime);
                classEndDate   = DateTime.Parse(model.ClassEndTime);
            }

            TblTimLesson lessonModel = new TblTimLesson
            {
                LessonId          = IdGenerator.NextId(),
                BusinessId        = model.BusinessId,
                BusinessType      = (int)model.BusinessType,
                ClassBeginTime    = model.ClassBeginTime,
                ClassDate         = model.ClassDate,
                ClassEndTime      = model.ClassEndTime,
                ClassId           = model.ClassId,
                ClassRoomId       = model.ClassRoomId,
                CourseId          = model.CourseId,
                CourseLevelId     = model.CourseLevelId,
                EnrollOrderItemId = model.EnrollOrderItemId,
                SchoolId          = model.SchoolId,
                StudentId         = model.StudentId,
                TeacherId         = model.TeacherId,
                TermId            = model.TermId,
                LessonType        = (int)model.LessonType,
                LessonCount       = model.LessonCount,
                Status            = (int)LessonUltimateStatus.Normal,
                CreateTime        = DateTime.Now,
                UpdateTime        = DateTime.Now,
                ClassBeginDate    = classBeginDate,
                ClassEndDate      = classEndDate
            };

            return(lessonModel);
        }
예제 #4
0
        /// <summary>
        /// 课次生产
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-11-08</para>
        /// </summary>
        /// <param name="creator">课次的产生者接口</param>
        /// <exception cref="BussinessException">
        /// 异常ID:35 异常描述:创建的课次为空
        /// </exception>
        public void Create(ILessonCreator creator)
        {
            List <LessonCreatorInfo> lessonCreatorInfos = creator.GetLessonCreatorInfo();

            if (lessonCreatorInfos == null || !lessonCreatorInfos.Any())
            {
                //创建的课次为空
                throw new BussinessException(ModelType.Timetable, 35);
            }

            List <TblTimLesson>        lessons        = new List <TblTimLesson>();        //课次
            List <TblTimLessonProcess> lessonProceses = new List <TblTimLessonProcess>(); //课次过程
            List <TblTimLessonStudent> lessonStudents = new List <TblTimLessonStudent>(); //学生课次时间表

            foreach (var m in lessonCreatorInfos)
            {
                DateTime classBeginDate; //上课开始时间
                DateTime classEndDate;   //上课结束时间
                if (m.LessonType == LessonType.RegularCourse)
                {
                    classBeginDate = DateTime.Parse($"{m.ClassDate:yyyy-MM-dd} {m.ClassBeginTime}");
                    classEndDate   = DateTime.Parse($"{m.ClassDate:yyyy-MM-dd} {m.ClassEndTime}");
                }
                else
                {
                    classBeginDate = DateTime.Parse(m.ClassBeginTime);
                    classEndDate   = DateTime.Parse(m.ClassEndTime);
                }

                //课次
                TblTimLesson lesson = new TblTimLesson
                {
                    BusinessId        = m.BusinessId,
                    BusinessType      = m.BusinessType,
                    ClassBeginTime    = m.ClassBeginTime,
                    ClassDate         = m.ClassDate,
                    ClassEndTime      = m.ClassEndTime,
                    ClassId           = m.ClassId,
                    ClassRoomId       = m.ClassRoomId,
                    CourseId          = m.CourseId,
                    CourseLevelId     = m.CourseLevelId,
                    EnrollOrderItemId = m.EnrollOrderItemId,
                    SchoolId          = m.SchoolId,
                    StudentId         = m.StudentId,
                    TeacherId         = m.TeacherId,
                    TermId            = m.TermId,
                    LessonId          = IdGenerator.NextId(),
                    LessonType        = (int)m.LessonType,
                    LessonCount       = m.LessonCount,
                    Status            = (int)LessonUltimateStatus.Normal,
                    CreateTime        = DateTime.Now,
                    UpdateTime        = DateTime.Now,
                    ClassBeginDate    = classBeginDate,
                    ClassEndDate      = classEndDate
                };

                //课次过程
                TblTimLessonProcess lessonProcess = new TblTimLessonProcess
                {
                    SchoolId        = lesson.SchoolId,
                    BusinessId      = lesson.BusinessId,
                    BusinessType    = lesson.BusinessType,
                    LessonId        = lesson.LessonId,
                    LessonProcessId = IdGenerator.NextId(),
                    ProcessStatus   = (int)ProcessStatus.Create,
                    Remark          = string.Empty,
                    ProcessTime     = DateTime.Now,
                    CreateTime      = DateTime.Now
                };

                //学生课次时间
                TblTimLessonStudent lessonStudent = new TblTimLessonStudent
                {
                    LessonId        = lesson.LessonId,
                    LessonStudentId = IdGenerator.NextId(),
                    StudentId       = lesson.StudentId,
                    SchoolId        = lesson.SchoolId,
                    AttendStatus    = (int)AttendStatus.NotClockIn,
                    CreateTime      = DateTime.Now,
                    AdjustType      = (int)AdjustType.DEFAULT,
                    AttendUserType  = (int)AttendUserType.DEFAULT,
                    ReplenishCode   = string.Empty,
                };

                lessons.Add(lesson);
                lessonProceses.Add(lessonProcess);
                lessonStudents.Add(lessonStudent);
            }

            var    lessonCreatorInfo = lessonCreatorInfos.FirstOrDefault();
            string schoolId          = lessonCreatorInfo.SchoolId;
            string studentId         = lessonCreatorInfo.StudentId.ToString();

            lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_AMSSCHOOLSTUDENT, schoolId, studentId))
            {
                //校验排课时间是否冲突
                base.VerifyClassTimeCross(
                    schoolId, lessonCreatorInfo.StudentId,
                    this.GetVerifyClassTimeList(lessonCreatorInfos),
                    lessonCreatorInfo.LessonType);

                _lessonRepository.Value.Add(lessons);
                _lessonProcessRepository.Value.Add(lessonProceses);
                _lessonStudentRepository.Value.Add(lessonStudents);
            }

            //排课之后处理的业务
            creator.AfterLessonCreate();
        }