/// <summary> /// 获取班级学生的考勤信息 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2019-03-13</para> /// </summary> /// <param name="studentLessonList">学生课程考勤列表信息</param> /// <returns>班级学生的考勤信息</returns> private async Task <List <StudentAttendInfoResponse> > GetStudentAttendList(List <ViewStudentAttendance> studentLessonList) { List <StudentAttendInfoResponse> result = new List <StudentAttendInfoResponse>(); //获取学生信息 var studentIdList = studentLessonList.GroupBy(g => g.StudentId).Select(a => a.Key.Value); var studentInfoList = await StudentService.GetStudentByIds(studentIdList); //未考勤集合 List <int> notAttendStatusList = new List <int>() { (int)LessonStatus.None, (int)LessonStatus.NotCheckIn, (int)LessonStatus.Absent, (int)LessonStatus.Leave }; //获取学生某班级的课程考勤详情信息 foreach (var studentId in studentIdList) { //学生信息 var studentInfo = studentInfoList.FirstOrDefault(a => a.StudentId == studentId); //获取学生课程考勤信息(不包括补课、调课) var studentLessonInfo = studentLessonList.Where(a => a.StudentId == studentId && a.AdjustType == (int)AdjustType.DEFAULT); if (studentLessonInfo.Any()) { var attendInfo = GetStudentAttendInfo(studentLessonInfo, studentInfo, notAttendStatusList); attendInfo.StudentId = studentId; result.Add(attendInfo); } } return(result); }
/// <summary> /// 获取定金未交接的核对明细信息 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2018-11-15</para> /// </summary> /// <param name="personalId">招生专员Id</param> /// <returns>订单未交接列表</returns> public List <OrderUnHandoverListResponse> GetUnHandList(string personalId) { List <OrderUnHandoverListResponse> result = new List <OrderUnHandoverListResponse>(); //获取招生专员对应的学生报名信息 var depositOrderInfoList = new DepositOrderService(_schoolId).GetDepositOrderByPayee(personalId).Result.Where(a => a.OrderStatus == (int)OrderStatus.Paid).ToList(); if (depositOrderInfoList != null && depositOrderInfoList.Count > 0) { //获取学生信息 var studentInfoList = StudentService.GetStudentByIds(depositOrderInfoList.Select(a => a.StudentId)).Result; //获取招生专员对应的订单交接核对明细信息 var handoverDetailList = _detailRepository.Value.GetDetailsByPersonalId(_schoolId, personalId).Result; //过滤定金订单已交接的数据 var depositOrderList = depositOrderInfoList.Where(a => !handoverDetailList.Any(b => b.OrderId == a.DepositOrderId && b.OrderTradeType == (int)OrderTradeType.DepositOrder) || (handoverDetailList.Exists(c => a.DepositOrderId == c.OrderId && c.OrderTradeType == (int)OrderTradeType.DepositOrder && c.HandoverStatus != (int)HandoverStatus.Handover))); foreach (var item in depositOrderList) { //学生对应的学生信息 var studentInfo = studentInfoList.FirstOrDefault(s => s.StudentId == item.StudentId); OrderUnHandoverListResponse handoverModel = new OrderUnHandoverListResponse() { OrderId = item.DepositOrderId, OrderNo = item.OrderNo, StudentNo = studentInfo?.StudentNo, StudentName = studentInfo?.StudentName, PayAmount = item.Amount, TradeType = (int)OrderTradeType.DepositOrder, TradeTypeName = EnumName.GetDescription(typeof(OrderTradeType), (int)OrderTradeType.DepositOrder),//定金 Status = (int)TransferStatus.UnTransfer, StatusName = EnumName.GetDescription(typeof(TransferStatus), (int)TransferStatus.UnTransfer), Remark = item.Remark, CreateTime = item.CreateTime }; //报单订单对应的订单交接核对明细信息 var handoverDetail = handoverDetailList.FirstOrDefault(h => h.PersonalId == item.PayeeId && h.OrderId == item.DepositOrderId); if (handoverDetail != null) { handoverModel.Status = handoverDetail.HandoverStatus.Value; handoverModel.StatusName = EnumName.GetDescription(typeof(HandoverStatus), handoverDetail.HandoverStatus); } result.Add(handoverModel); } } return(result); }
/// <summary> /// 根据请求参数获取对应的订单交接明细列表 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2018-11-17</para> /// </summary> /// <param name="request">订单交接明细请求对象</param> /// <returns>订单交接明细信息分页列表</returns> public PageResult <OrderHandoverDetailListResponse> GetHandDetailList(OrderHandoverDetailRequest request) { var result = _viewDetailRepository.Value.GetDetailsByHandoverId(request); if (result != null && result.Data != null && result.Data.Count > 0) { //获取校区的所有学生信息 var studentInfoList = StudentService.GetStudentByIds(result.Data.Select(a => a.StudentId).Distinct()).Result; result.Data.ForEach(a => { var studentInfo = studentInfoList.FirstOrDefault(s => s.StudentId == a.StudentId);//学生信息 a.StudentNo = studentInfo?.StudentNo; a.StudentName = studentInfo?.StudentName; a.OrderTradeTypeName = EnumName.GetDescription(typeof(OrderTradeType), a.OrderTradeType); }); return(result); } return(new PageResult <OrderHandoverDetailListResponse>()); }
/// <summary> /// 一个学生多个班级的学生班级信息 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2019-01-02</para> /// </summary> /// <param name="enoughTimeList">写生课足够课次列表</param> /// <param name="classInfoList">班级信息列表</param> /// <returns></returns> private List <LifeClassStudentClassResponse> GetLifeClassOfStudentMoreClass(IEnumerable <LifeClassLessonMakeRequest> enoughTimeList, List <TblDatClass> classInfoList) { List <LifeClassStudentClassResponse> result = new List <LifeClassStudentClassResponse>(); var studentMoreClassList = enoughTimeList.Where(a => enoughTimeList.Count(b => b.StudentId == a.StudentId) > 1); if (studentMoreClassList.Any()) { //获取该校区的所有学生 var studentInfoList = StudentService.GetStudentByIds(enoughTimeList.Select(a => a.StudentId).Distinct()).Result; foreach (var item in studentMoreClassList) { //获取班级信息 var classInfo = classInfoList.FirstOrDefault(c => c.ClassId == item.ClassId); //获取lifeRepeatList中学生对应的对象 var lifeRepeatInfo = result.FirstOrDefault(l => l.StudentId == item.StudentId); //检查重复学生是否存在于lifeRepeatList中,不存在,则新增同一学生多班级信息的对象 if (lifeRepeatInfo == null) { //获取学生信息 var studentInfo = studentInfoList.FirstOrDefault(s => s.StudentId == item.StudentId); lifeRepeatInfo = new LifeClassStudentClassResponse() { StudentId = item.StudentId, StudentName = studentInfo?.StudentName, StudentNo = studentInfo?.StudentNo }; result.Add(lifeRepeatInfo); } //StudentClassList是否存在该班级,不存在,则添加至StudentClassList if (!lifeRepeatInfo.StudentClassList.Any(a => a.ClassId == item.ClassId && a.EnrollOrderItemId == item.EnrollOrderItemId)) { lifeRepeatInfo.StudentClassList.Add(new LifeClassClassInfoResponse() { ClassId = item.ClassId, ClassNo = classInfo?.ClassNo, EnrollOrderItemId = item.EnrollOrderItemId }); } } } return(result); }
/// <summary> /// 描述:获取所有奖学金券(未使用/已使用/已过期) /// <para>作 者:瞿琦</para> /// <para>创建时间:2018-11-4</para> /// </summary> /// <returns>校长奖学金列表分页</returns> public static PageResult <CouponResponse> GetAllCoupons(string currentUserId, int pageIndex, int pageSize) { var currentDate = DateTime.Now; var query = new TblDctCouponRepository().GetAllCoupons(currentUserId, pageIndex, pageSize); var result = new PageResult <CouponResponse>(); result.Data = Mapper.Map <List <CouponResponse> >(query.Data); result.PageSize = query.PageSize; result.TotalData = query.TotalData; result.CurrentPage = query.CurrentPage; var studentInfoList = StudentService.GetStudentByIds(result.Data.Select(x => x.StudentId)).Result; var schoolList = new OrgService().GetAllSchoolList(); foreach (var item in result.Data) { if (item.Status == Dto.CouponStatus.HasUse) //已使用 { item.StatusName = EnumName.GetDescription(typeof(Dto.CouponStatus), Dto.CouponStatus.HasUse); } else if (item.Status == Dto.CouponStatus.NoUse && currentDate <= item.ExpireTime) //未使用 { item.StatusName = EnumName.GetDescription(typeof(Dto.CouponStatus), Dto.CouponStatus.NoUse); } else if (item.Status == Dto.CouponStatus.NoUse && item.ExpireTime < currentDate) //已过期 { item.StatusName = EnumName.GetDescription(typeof(Dto.CouponStatus), Dto.CouponStatus.NoEffect); item.Status = Dto.CouponStatus.NoEffect; } item.StudentName = studentInfoList.FirstOrDefault(x => x.StudentId == item.StudentId)?.StudentName; item.SchoolName = schoolList.FirstOrDefault(x => x.SchoolId.Trim() == item.SchoolId.Trim())?.SchoolName; } return(result); }
/// <summary> /// 课次不够扣的学生列表 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2018-11-21</para> /// </summary> /// <param name="lifeClassInfo">写生课信息</param> /// <param name="enrollOrderItemInfo">报名订单课程明细信息</param> /// <param name="classInfoList">班级信息列表</param> /// <param name="lifeInfoList">课次基础信息列表</param> /// <returns></returns> private List <LifeClassLackTimesListResponse> GetNotEnoughTimeStudnetList(TblTimLifeClass lifeClassInfo, IEnumerable <LifeClassStudentListResponse> enrollOrderItemInfo, List <TblDatClass> classInfoList, List <TblTimLesson> lifeInfoList) { List <LifeClassLackTimesListResponse> result = new List <LifeClassLackTimesListResponse>(); //课次不够扣的学生列表 var notEnoughTimeList = enrollOrderItemInfo.Where(a => (a.ClassTimes - a.ClassTimesUse < lifeClassInfo.UseLessonCount) && !lifeInfoList.Any(l => l.EnrollOrderItemId == a.EnrollOrderItemId)) .GroupBy(g => new { g.EnrollOrderItemId, g.StudentId, g.ClassId }) .Select(b => new { b.Key.EnrollOrderItemId, b.Key.ClassId, b.Key.StudentId }); if (notEnoughTimeList != null && notEnoughTimeList.Any()) { //获取该校区的所有学生 var studentInfoList = StudentService.GetStudentByIds(notEnoughTimeList.Select(a => a.StudentId).Distinct()).Result; foreach (var item in notEnoughTimeList) { var studentInfo = studentInfoList.FirstOrDefault(a => a.StudentId == item.StudentId); //学生对应的学生信息 var classInfo = classInfoList.FirstOrDefault(a => a.ClassId == item.ClassId); //班级信息 if (!result.Any(a => a.ClassNo == classInfo?.ClassNo && a.StudentName == studentInfo?.StudentName && a.StudentNo == studentInfo?.StudentNo)) { result.Add(new LifeClassLackTimesListResponse { ClassNo = classInfo?.ClassNo, StudentName = studentInfo?.StudentName, StudentNo = studentInfo?.StudentNo }); } } } return(result); }
/// <summary> /// 获取班级学生的考勤信息 /// <para>作 者:郭伟佳</para> /// <para>创建时间:2019-03-13</para> /// </summary> /// <param name="studentLessonList">学生课程考勤列表信息</param> /// <param name="teacherInfoList">老师信息</param> /// <param name="year">年份</param> /// <param name="month">0表示学期,其他数字表示月份</param> /// <returns>班级学生的考勤信息</returns> private async Task <List <StudentAttendInfoResponse> > GetStudentAttendList(List <ViewStudentAttendance> studentLessonList, List <ClassTimetableTeacherResponse> teacherInfoList, int year, int month) { List <StudentAttendInfoResponse> result = new List <StudentAttendInfoResponse>(); //获取学生信息 var studentIdList = studentLessonList.GroupBy(g => g.StudentId).Select(a => a.Key.Value); var studentInfoList = await StudentService.GetStudentByIds(studentIdList); //获取学生补课信息 var replenishLessonList = await _vReplenishRepository.Value.GetLessonListByRootLessonIdAsync(studentLessonList.Select(a => a.LessonId).ToList()); //定义未考勤集合 List <int> notAttendStatusList = new List <int>() { (int)LessonStatus.None, (int)LessonStatus.NotCheckIn, (int)LessonStatus.Absent, (int)LessonStatus.Leave }; //获取学生某班级的课程考勤详情信息 foreach (var studentId in studentIdList) { //学生信息 var studentInfo = studentInfoList.FirstOrDefault(a => a.StudentId == studentId); //获取学生课程考勤信息(不包括补课、调课) var studentLessonInfo = studentLessonList.Where(a => a.StudentId == studentId); //获取学生补课考勤信息 var replenishLessonInfo = replenishLessonList.Where(a => a.StudentId == studentId); if (studentLessonInfo.Any()) { var attendInfo = GetStudentAttendInfo(studentLessonInfo, studentInfo, teacherInfoList, notAttendStatusList, replenishLessonInfo, year, month); result.Add(attendInfo); } } return(result); }
/// <summary> /// 获取上课学生列表 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2019-03-11</para> /// </summary> /// <param name="stuLessonList">学生课次信息</param> /// <returns>学生列表</returns> private List <ClassStudent> GetClassStudentList(IEnumerable <StudentLesson> stuLessonList) { List <ClassStudent> res = new List <ClassStudent>(); //2.筛选学生ID var stuIdList = stuLessonList.Select(x => x.StudentId).Distinct().ToList(); //3.获取学生信息 var studentList = StudentService.GetStudentByIds(stuIdList) .Result .OrderBy(x => x.StudentName) .ToList(); // 0=未考勤 // 1=正常签到 显示考勤时间 // 2=补签未确认(缺勤) 显示撤回补签 // 3=补签已确认 显示考勤时间 // 4=请假(当前时间之前) 判断AdjustStatus是否已安排补课 // 5=缺勤 判断AdjustStatus是否已安排补课 // 6=请假(当前时间之后) 无需判断AdjustStatus是否已安排补课 显示 -- // 7=补签未确认(请假) 显示撤回补签 //4.生成考勤状态 foreach (var stu in studentList) { var stuLesson = stuLessonList.FirstOrDefault(x => x.StudentId == stu.StudentId); if (stuLesson == null) { continue; } ClassStudent student = new ClassStudent { StudentId = stu.StudentId, StudentName = stu.StudentName, LessonId = stuLesson.LessonId, AttendStatus = 0, AdjustStatus = false }; AdjustType stuAdjustType = (AdjustType)stuLesson.AdjustType; AttendStatus stuAttendStatus = (AttendStatus)stuLesson.AttendStatus; //上课结束时间+缓冲时间 DateTime eTime; if (stuLesson.LessonType == (int)LessonType.RegularCourse) { //上课结束时间+缓冲时间 eTime = DateTime.Parse(stuLesson.ClassDate.ToString("yyyy-MM-dd") + " " + stuLesson.ClassEndTime); } else { eTime = DateTime.Parse(stuLesson.ClassEndTime); } //0=未考勤 if (DateTime.Now < eTime) { student.AttendStatus = 0; } //1=正常签到 显示考勤时间 if (stuAttendStatus == AttendStatus.Normal) { student.AttendStatus = 1; if (stuLesson.AttendDate.Value.Date == stuLesson.ClassDate.Date) { student.AttendTime = stuLesson.AttendDate.Value.ToString("HH:mm"); } else { student.AttendTime = stuLesson.AttendDate.Value.ToString("yyyy-MM-dd HH:mm"); } } //2=补签未确认(缺勤) 显示撤回补签 if (stuAttendStatus != AttendStatus.Leave && stuAdjustType == AdjustType.SUPPLEMENTNOTCONFIRMED) { student.AttendStatus = 2; } //3=补签已确认 显示考勤时间 else if (stuAdjustType == AdjustType.SUPPLEMENTCONFIRMED) { student.AttendStatus = 3; if (stuLesson.AttendDate.Value.Date == stuLesson.ClassDate.Date) { student.AttendTime = stuLesson.AttendDate.Value.ToString("HH:mm"); } else { student.AttendTime = stuLesson.AttendDate.Value.ToString("yyyy-MM-dd HH:mm"); } } //4=请假(当前时间之前) 判断AdjustStatus是否已安排补课 else if (eTime < DateTime.Now && stuAttendStatus == AttendStatus.Leave) { student.AttendStatus = 4; if (stuLesson.AdjustType == (int)AdjustType.MAKEUP || stuLesson.AdjustType == (int)AdjustType.SUPPLEMENTARYWEEK) { student.AdjustStatus = true; } } //5=缺勤(当前时间之后) 判断AdjustStatus是否已安排补课 else if (DateTime.Now > eTime && stuAttendStatus == AttendStatus.NotClockIn) { student.AttendStatus = 5; if (stuAdjustType == AdjustType.MAKEUP || stuAdjustType == AdjustType.SUPPLEMENTARYWEEK) { student.AdjustStatus = true; } } //6=请假(当前时间之后) 无需判断AdjustStatus是否已安排补课 显示 -- else if (eTime > DateTime.Now && stuAttendStatus == AttendStatus.Leave) { student.AttendStatus = 6; } //7=补签未确认(请假) 显示撤回补签 else if (stuAttendStatus == AttendStatus.Leave && stuAdjustType == AdjustType.SUPPLEMENTNOTCONFIRMED) { student.AttendStatus = 7; } res.Add(student); } return(res); }