/// <summary> /// 获取写生课多个时间段上课信息 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2019-03-07</para> /// </summary> /// <param name="sketchAttends">写生课次信息</param> /// <param name="res">out 常规课多个上课信息</param> private static void GetMultiAttendSketch( List <ViewStudentScanCodeAttend> sketchAttends, List <ScanCodeClassInfo> res) { var lifeClassIdList = sketchAttends.Select(x => x.BusinessId).Distinct().ToList(); var lifeClassList = new TblTimLifeClassRepository().GetLifeClassList(lifeClassIdList); foreach (var lifeClassId in lifeClassIdList) { var lifeClassInfo = lifeClassList.FirstOrDefault(x => x.LifeClassId == lifeClassId); var sketchAttend = sketchAttends.FirstOrDefault(x => x.BusinessId == lifeClassId); string classTime; if (sketchAttend != null) { classTime = DateTime.Parse(sketchAttend.ClassBeginTime).ToString("HH:mm") + "-" + DateTime.Parse(sketchAttend.ClassBeginTime).ToString("yyyy.MM.dd HH:mm"); } else if (lifeClassInfo != null) { classTime = lifeClassInfo.ClassBeginTime.Value.ToString("HH:mm") + "-" + lifeClassInfo.ClassBeginTime.Value.ToString("yyyy.MM.dd HH:mm"); } else { classTime = string.Empty; } ScanCodeClassInfo scanCode = new ScanCodeClassInfo { ClassId = lifeClassId, ClassName = lifeClassInfo?.Title ?? string.Empty, ClassTime = classTime }; res.Add(scanCode); } }
/// <summary> /// 取消写生排课 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2018-11-28</para> /// </summary> /// <exception cref="AMS.Core.BussinessException"> /// 异常ID: /// 13. 系统不存在该写生课信息 /// 14. 该学期已结束,不可取消 /// 34. 写生课已取消 /// </exception> public void Cancel() { lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_LIFE_CLASS, _lifeClassId.ToString())) { var lifeClassInfo = _repository.Value.GetLifeClassInfo(_lifeClassId); //1、根据写生课Id,获取写生课对应的课次基础信息的课程Id列表 var studentLessonInfoList = _timLessonRepository.Value.GetStudentLessonListAsync(_schoolId, new List <long> { _lifeClassId }); var lessonIdList = studentLessonInfoList.Where(a => a.Status == (int)LessonUltimateStatus.Normal).Select(a => a.LessonId).ToList(); //2、校验 CheckDataBeforeCancel(lifeClassInfo, lessonIdList); using (UnitOfWork unitOfWork = new UnitOfWork()) { try { unitOfWork.BeginTransaction(IsolationLevel.Snapshot); //3、取消写生课Id对应的所有学生的课次 CancelLifeClass(unitOfWork, lifeClassInfo, lessonIdList); //4、删除对应的写生课 TblTimLifeClassRepository lifeClassRepository = unitOfWork.GetCustomRepository <TblTimLifeClassRepository, TblTimLifeClass>(); lifeClassRepository.DeleteLifeClassById(_lifeClassId); unitOfWork.CommitTransaction(); } catch (Exception ex) { unitOfWork.RollbackTransaction(); throw ex; } } } }