/// <summary>
        /// 补课调整
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-03-14</para>
        /// </summary>
        /// <param name="iRequest">补课调整参数</param>
        public override void Adjust(IAdjustLessonRequest iRequest)
        {
            //1、涉及到学生课次开启线程锁
            //2、构建需要补课的课次信息
            //3、调用课次调整服务进行学生补课
            AdjustReplenishRequest request = iRequest as AdjustReplenishRequest;

            lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_AMSSCHOOLSTUDENT, _schoolId, request.StudentId.ToString()))
            {
                using (UnitOfWork unitOfWork = new UnitOfWork())
                {
                    try
                    {
                        unitOfWork.BeginTransaction();
                        //构建需要补课的课次信息
                        AdjustLessonReplenishCreator adjustLessonReplenishCreator =
                            new AdjustLessonReplenishCreator(_schoolId, request, unitOfWork);

                        //调用课次调整服务进行学生补课
                        ReplenishLessonService service = new ReplenishLessonService(unitOfWork);
                        service.Create(adjustLessonReplenishCreator);

                        unitOfWork.CommitTransaction();
                    }
                    catch (Exception e)
                    {
                        unitOfWork.RollbackTransaction();
                        throw e;
                    }
                }
            }
        }
        /// <summary>
        /// 创建补课需要的数据源服务
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-03-15</para>
        /// </summary>
        /// <param name="schoolId">校区Id</param>
        /// <param name="request">补课,对缺勤或请假的进行补课入参</param>
        /// <param name="unitOfWork">事物工作单元</param>
        public AdjustLessonReplenishCreator(string schoolId, AdjustReplenishRequest request, UnitOfWork unitOfWork)
        {
            this._batchNo  = IdGenerator.NextId();
            this._schoolId = schoolId;
            this._request  = request;

            _lessonRepository = unitOfWork.GetCustomRepository <TblTimLessonRepository, TblTimLesson>();
            _viewCompleteStudentAttendanceRepository = unitOfWork.GetCustomRepository <ViewCompleteStudentAttendanceRepository, ViewCompleteStudentAttendance>();
            _tblTimAdjustLessonRepository            = unitOfWork.GetCustomRepository <TblTimAdjustLessonRepository, TblTimAdjustLesson>();
        }
        public void ReplenishLesson(AdjustReplenishRequest request)
        {
            var service = new StudentTimetableService(base.SchoolId, request.StudentId);

            service.ReplenishLesson(request);
        }