/// <summary> /// 学生写生排课 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2019-01-05</para> /// </summary> /// <param name="request">学期班级学生请求参数</param> /// <param name="lifeClassInfo">写生课信息</param> /// <param name="lessonClassList">报班明细信息</param> /// <returns>写生排课结果</returns> private LifeClassResultResponse MakeLessonForStudent(List <TimeLessonClassRequest> request, TblTimLifeClass lifeClassInfo, List <ViewTimeLessonClass> lessonClassList) { LifeClassResultResponse resultResponse = new LifeClassResultResponse(); foreach (var studentId in lessonClassList.Select(a => a.StudentId).Distinct()) { lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_AMSSCHOOLSTUDENT, _schoolId, studentId.ToString())) { //1.获取学生对应的课次信息 var studentLessonList = lessonClassList.Where(a => a.StudentId == studentId); //2.获取报名订单课程明细信息 var studentEnrollItemList = EnrollOrderService.GetEnrollOrderItemByItemId(studentLessonList.Select(a => a.EnrollOrderItemId).Distinct()); //3.获取需要生成的写生课明细、一个学生多个班级列表和课次不够的学生列表 var result = GetLifeClassLesson(request, lifeClassInfo, studentLessonList, studentEnrollItemList); resultResponse.LackTimeList.AddRange(result.Item1); //获取课次不够的学生列表 List <LifeClassLessonMakeRequest> lifeClassLessonList = result.Item2; //获取写生课明细 resultResponse.StudentClassList.AddRange(result.Item3); //获取一个学生多个班级列表 //4.进行写生排课 MakeLifeClass(lifeClassInfo, lifeClassLessonList); } } return(resultResponse); }
/// <summary> /// 写生排课 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2018-11-12</para> /// </summary> /// <param name="request">学期班级学生请求列表</param> /// <returns>写生排课结果</returns> /// <exception cref="AMS.Core.BussinessException"> /// 异常ID: /// 13. 系统不存在该写生课信息 /// 28. 系统不存在该报名订单课程明细信息 /// 29. 请选择学生进行写生排课 /// </exception> internal LifeClassResultResponse Make(List <TimeLessonClassRequest> request) { lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_LIFE_CLASS, _lifeClassId.ToString())) { //1.获取写生课信息 TblTimLifeClass lifeClassInfo = _repository.Value.GetLifeClassInfo(_lifeClassId); //2.获取课次基础信息表 var lessonClassList = _vTimeLessonClassRepository.Value.GetTimeLessonClassList(_schoolId, request).Result; //4.数据校验 CheckDataBeforeMake(request, lifeClassInfo, lessonClassList); //5.写生排课 LifeClassResultResponse resultResponse = MakeLessonForStudent(request, lifeClassInfo, lessonClassList); return(resultResponse); } }