Exemplo n.º 1
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);
        }
Exemplo n.º 2
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();
        }