コード例 #1
0
        /// <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;
                    }
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 描述:班级上课时间调整课次信息保存
        /// <para>作者:瞿琦</para>
        /// <para>创建时间:2019-3-8</para>
        /// </summary>
        /// <param name="iRequest">要保存的课次调整信息</param>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常Id:7,异常描述:上课时间段编号不能为空
        /// 异常Id:61,异常描述:调整日期不能小于当前日期
        /// </exception>
        public override void Adjust(IAdjustLessonRequest iRequest)
        {
            var request = iRequest as AdjustClassTimeRequest;

            if (request.NewClassDate <= DateTime.Now)  //如果调整日期小于当前日期,则抛出异常
            {
                throw new BussinessException(ModelType.Timetable, 61);
            }
            using (var unitOfWork = new UnitOfWork())
            {
                try
                {
                    unitOfWork.BeginTransaction();
                    var           lessonRepository = unitOfWork.GetCustomRepository <TblTimLessonRepository, TblTimLesson>();
                    LessonService lessonService    = new LessonService(unitOfWork);
                    //获取班级上课时间段
                    var classTimeList = this.GetClassTimesList(request.ClassId);
                    if (!classTimeList.Any())
                    {
                        throw new BussinessException(ModelType.Datum, 7);
                    }
                    //1.获取要更换时间段的课次
                    var changeLessonList = lessonRepository.GetTimLessonByClassIdList(new List <long>()
                    {
                        request.ClassId
                    }, new List <DateTime> {
                        request.OldClassDate
                    }, LessonUltimateStatus.Normal);

                    //2.向调整课次业务表添加数据
                    var adjustLessonList = AddAdjustLessonInfo(request, changeLessonList, classTimeList, unitOfWork);

                    //3.提供要销毁的课次对象
                    var lessonClassTimeFinisher = new AdjustLessonClassTimeFinisher(adjustLessonList, changeLessonList);
                    lessonService.Finish(lessonClassTimeFinisher);

                    //4.提供要更新的课次
                    var lessonClassTimeCreator = new AdjustLessonClassTimeCreator(request, adjustLessonList, changeLessonList, classTimeList);
                    if (lessonClassTimeCreator.IsLessonData)
                    {
                        lessonService.Create(lessonClassTimeCreator);                       //正常课次
                    }
                    var replenishLessonService = new ReplenishLessonService(unitOfWork);
                    if (lessonClassTimeCreator.IsReplenishLessonData)
                    {
                        replenishLessonService.Create(lessonClassTimeCreator);               //补课调课
                    }

                    unitOfWork.CommitTransaction();
                }
                catch (Exception)
                {
                    unitOfWork.RollbackTransaction();
                    throw;
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// 描述:全校上课日期调整信息保存
        /// <para>作者:瞿琦</para>
        /// <para>创建时间:2019-3-8</para>
        /// </summary>
        /// <param name="iRequest">要保存的课程调整信息</param>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常Id:61,异常描述:调整日期不能小于当前日期
        /// </exception>
        public override void Adjust(IAdjustLessonRequest iRequest)
        {
            AdjustSchoolClassTimeRequest request = iRequest as AdjustSchoolClassTimeRequest;

            if (request.AdjustDate <= DateTime.Now)  //如果调整时间小于当前时间,则抛出异常
            {
                throw new BussinessException(ModelType.Timetable, 61);
            }
            using (var unitOfWork = new UnitOfWork())
            {
                try
                {
                    unitOfWork.BeginTransaction();
                    var           lessonRepository = unitOfWork.GetCustomRepository <TblTimLessonRepository, TblTimLesson>();
                    LessonService lessonService    = new LessonService(unitOfWork);
                    //1.要更换全校上课日期的课次
                    var changeLessonList = lessonRepository.GetTimLessonByClassIdList(request.LessonInfoList.Select(x => x.ClassId), request.LessonInfoList.Select(x => x.ClassDate), LessonUltimateStatus.Normal);

                    //2.向调整课次业务表添加数据
                    var adjustLessonList = AddAdjustLessonInfo(request.AdjustDate, changeLessonList, unitOfWork);
                    //3.提供要销毁的课次对象
                    var schoolClassTimeFinisher = new AdjustLessonSchoolClassTimeFinisher(adjustLessonList, changeLessonList);
                    lessonService.Finish(schoolClassTimeFinisher);
                    //4.提供要更新的课次
                    var schoolClassTimeCreator = new AdjustLessonSchoolClassTimeCreator(request.AdjustDate, adjustLessonList, changeLessonList);
                    if (schoolClassTimeCreator.IsLessonData)
                    {
                        lessonService.Create(schoolClassTimeCreator);                        //正常课次
                    }
                    var replenishLessonService = new ReplenishLessonService(unitOfWork);
                    if (schoolClassTimeCreator.IsReplenishLessonData)
                    {
                        replenishLessonService.Create(schoolClassTimeCreator);               //补课调课
                    }

                    unitOfWork.CommitTransaction();
                }
                catch (Exception ex)
                {
                    unitOfWork.RollbackTransaction();
                    throw ex;
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// 描述:老师代课信息保存
        /// <para>作者:瞿琦</para>
        /// <para>创建时间:2019-3-8</para>
        /// </summary>
        /// <param name="iRequest">要保存的代课老师信息</param>
        public override void Adjust(IAdjustLessonRequest iRequest)
        {
            AdjustTeacherRequest request = iRequest as AdjustTeacherRequest;

            using (var unitOfWork = new UnitOfWork())
            {
                try
                {
                    unitOfWork.BeginTransaction();
                    var lessonRepository = unitOfWork.GetCustomRepository <TblTimLessonRepository, TblTimLesson>();

                    LessonService lessonService = new LessonService(unitOfWork);
                    //1.要更换老师的课次
                    var changeLessonList = lessonRepository.GetTimLessonByClassIdList(request.LessonInfoList.Select(x => x.ClassId), request.LessonInfoList.Select(x => x.ClassDate), LessonUltimateStatus.Normal);

                    //2.向调整课次业务表添加数据
                    var adjustLessonList = AddAdjustLessonInfo(request.TeacherId, changeLessonList, unitOfWork);

                    //3.提供要销毁的课次对象
                    var lessonTeacherFinisher = new AdjustLessonTeacherFinisher(adjustLessonList, changeLessonList);
                    lessonService.Finish(lessonTeacherFinisher);
                    //4.提供要更新的课次
                    var lessonCreator = new AdjustLessonTeacherCreator(request.TeacherId, adjustLessonList, changeLessonList);
                    if (lessonCreator.IsLessonData)          //正常课次有数据则创建
                    {
                        lessonService.Create(lessonCreator); //正常课次
                    }
                    var replenishLessonService = new ReplenishLessonService(unitOfWork);
                    if (lessonCreator.IsReplenishLessonData)          //补课调课有数据则创建
                    {
                        replenishLessonService.Create(lessonCreator); //补课调课
                    }

                    unitOfWork.CommitTransaction();
                }
                catch (Exception ex)
                {
                    unitOfWork.RollbackTransaction();
                    throw ex;
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// 添加补课周课次
        /// <para>作    者:Huang GaoLiang </para>
        /// <para>创建时间:2019-03-12 </para>
        /// </summary>
        ///  <param name="replenishWeekClassTime">安排补课参数信息</param>
        public void AddClassTime(ReplenishWeekClassTimeAddRequest replenishWeekClassTime)
        {
            lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_AMSSCHOOLSTUDENT, this._schoolId, replenishWeekClassTime.StudentId.ToString()))
            {
                // 1、根据编辑编号查询原班级信息
                TblDatClass oldDatClass = new DefaultClassService(replenishWeekClassTime.ClassId).TblDatClass;

                // 2、获取学生缺课的课次信息
                List <ViewStudentTimeLess> studentTimeLessList = GetStudentMissClassList(replenishWeekClassTime);

                // 3、数据校验
                CheckDatClass(oldDatClass, replenishWeekClassTime.WeekClassTimeList.Count, studentTimeLessList.Count);

                // 获取补课日期中该老师所有的课次
                var classDates       = replenishWeekClassTime.WeekClassTimeList.Select(m => m.ClassDate).Distinct().ToList();
                var teacherClassList = new ViewTimAttendLessonRepository().GetClassDateTimAttendLessonList(this._schoolId, this._teacherId, classDates);

                this.ValidationLesson(replenishWeekClassTime.WeekClassTimeList, teacherClassList);


                // 4、获取所有补课周补课中的补课数据
                List <TblTimAdjustLesson> timAdjustLessonList = GetTimAdjustLessonList();

                // 用户补课周补课班级编号生成
                var classNo = string.Empty;
                classNo = oldDatClass.ClassNo.Substring(0, oldDatClass.ClassNo.IndexOf('-') + 1);

                // 5、根据上课教室编号,查询教室信息
                var roomIds = replenishWeekClassTime.WeekClassTimeList.Select(m => m.ClassRoomId).Distinct().ToList();
                List <TblDatClassRoom> datClassRooms = ClassRoomService.GetClassRoomListByIds(roomIds);

                List <TblTimAdjustLesson> adjustLessonList = new List <TblTimAdjustLesson>(); //业务调整表数据集合
                List <TblDatClass>        newClassList     = new List <TblDatClass>();        //补课周班级集合

                List <WeekClassTime> replenishWeekList = new List <WeekClassTime>();

                int index = 0;

                var batchNo = IdGenerator.NextId();
                foreach (var m in replenishWeekClassTime.WeekClassTimeList)
                {
                    var studentTimeLess = studentTimeLessList[index];
                    replenishWeekClassTime.EnrollOrderItemId = studentTimeLess.EnrollOrderItemId;
                    replenishWeekClassTime.CourseId          = studentTimeLess.CourseId;
                    replenishWeekClassTime.CourseLevelId     = studentTimeLess.CourseLevelId;
                    replenishWeekClassTime.TeacherId         = studentTimeLess.TeacherId;

                    // 补课周补课班级编号生成规则
                    var newClassNo = $"{classNo}{datClassRooms.FirstOrDefault(x => x.ClassRoomId == m.ClassRoomId).RoomNo }{WeekDayConvert.DayOfWeekToInt(m.ClassDate)}{GetTimeNumNo(m.ClassBeginTime, m.ClassEndTime, oldDatClass.ClassNo)}{WeekClassNo}";

                    SetDatClass(replenishWeekClassTime, oldDatClass, timAdjustLessonList, newClassNo, newClassList, adjustLessonList, m, replenishWeekList, studentTimeLess, batchNo);

                    WeekClassTime week = new WeekClassTime
                    {
                        ClassDate   = m.ClassDate,
                        ClassRoomId = m.ClassRoomId
                    };
                    replenishWeekList.Add(week);

                    index++;
                }

                using (var unitOfWork = new UnitOfWork())
                {
                    try
                    {
                        unitOfWork.BeginTransaction();

                        // 1、写入调整课次业务表
                        unitOfWork.GetCustomRepository <TblTimAdjustLessonRepository, TblTimAdjustLesson>().Add <TblTimAdjustLesson>(adjustLessonList);

                        // 2、创建补课周补课班级
                        unitOfWork.GetCustomRepository <TblDatClassRepository, TblDatClass>().Add(newClassList);

                        // 3、调用课次服务
                        var adjustLessonReplenishWeekCreator = new AdjustLessonReplenishWeekCreator(replenishWeekClassTime, adjustLessonList, studentTimeLessList, replenishWeekClassTime.StudentId, replenishWeekClassTime.TermId, this._schoolId, this._teacherId);

                        ReplenishLessonService replenishLessonService = new ReplenishLessonService(unitOfWork);
                        replenishLessonService.Create(adjustLessonReplenishWeekCreator);

                        unitOfWork.CommitTransaction();
                    }
                    catch (Exception ex)
                    {
                        unitOfWork.RollbackTransaction();
                        throw ex;
                    }
                }
            }
        }