Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
            }
        }