/// <summary> /// 写生排课 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2019-01-02</para> /// </summary> /// <param name="lifeClassInfo">写生课信息对象</param> /// <param name="lifeClassLessonList">班级学生信息对象</param> private void MakeLifeClass(TblTimLifeClass lifeClassInfo, List <LifeClassLessonMakeRequest> lifeClassLessonList) { if (lifeClassLessonList.Count == 0) { return; } using (UnitOfWork unitOfWork = new UnitOfWork()) { try { unitOfWork.BeginTransaction(); LifeClassLessonCreator lessonCreator = new LifeClassLessonCreator(lifeClassInfo, lifeClassLessonList, unitOfWork); //实例化课次生产者 LessonService lessonService = new LessonService(unitOfWork); lessonService.Create(lessonCreator); //课次生产 unitOfWork.CommitTransaction(); } catch (Exception ex) { unitOfWork.RollbackTransaction(); throw ex; } } }
/// <summary> /// 开始真实排课 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2018-11-08</para> /// </summary> /// <param name="makeLessonId">排课Id</param> /// <param name="unitOfWork">工作单元</param> private void MakeInternal(long makeLessonId, UnitOfWork unitOfWork) { MakeLessonCreator lessonCreator = new MakeLessonCreator(makeLessonId, unitOfWork); //实例化课次生产者 LessonService lessonService = new LessonService(unitOfWork); lessonService.Create(lessonCreator); //课次生产 new StudentService(this._schoolId).UpdateStudentStatusById(this._studentId, unitOfWork, StudyStatus.Reading); }
/// <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; } } }
/// <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; } } }
/// <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; } } }
/// <summary> /// 描述:保存转班办理 /// <para>作 者:瞿琦</para> /// <para>创建时间:2018-11-7</para> /// </summary> /// <param name="dto">要保存的转班信息</param> /// <returns>无</returns> public void ChangeIn(ChangeClassAddRequest dto) { lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_AMSSCHOOLSTUDENT, this._schoolId, this._studentId.ToString())) { //验证 var outClassTimes = this.ValidateSubmit(dto); //实际转出课次 using (var unitOfWork = new UnitOfWork()) { try { unitOfWork.BeginTransaction(); //1、插入转班表 var timChangeClassEntity = AddTimChangeClass(dto, outClassTimes, unitOfWork); //2、课表数据操作---作废 ChangeClassLessonFinisher lessonFinisher = new ChangeClassLessonFinisher(timChangeClassEntity, unitOfWork); LessonService lessonService = new LessonService(unitOfWork); lessonService.Finish(lessonFinisher);//课次销毁 //3、课表数据操作---转班重新排课 ChangeClassLessonCreator creator = new ChangeClassLessonCreator(timChangeClassEntity, lessonFinisher.EnrollOrderItemId, unitOfWork); lessonService.Create(creator); //4.修改学生状态及课次 var studentService = new StudentService(this._schoolId); studentService.UpdateStudentStatusById(this._studentId, unitOfWork); unitOfWork.CommitTransaction(); } catch (Exception e) { unitOfWork.RollbackTransaction(); throw; } } } }