/// <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);
        }
Esempio n. 2
0
        /// <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>());
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 6
0
        /// <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);
        }