/// <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>作者:瞿琦</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>作 者: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; } } } }