/// <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>());
        }
Ejemplo n.º 2
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-2</para>
        /// </summary>
        /// <param name="studentId">学生Id</param>
        /// <returns>优惠信息集合</returns>

        public async Task <List <CouponGenerateResponse> > Peek(long studentId)
        {
            var result = new List <CouponGenerateResponse>();

            //1.满减信息
            var resultFullReduce = new CouponGenerateResponse();
            //获取赠与奖学金金额
            var query = (await _tblDctCouponRuleRepository.Value.GetAmountByCouponRule(_schoolId, _totalAmount)).FirstOrDefault();

            resultFullReduce.CouponRuleId     = query?.CouponRuleId ?? 0;
            resultFullReduce.CouponRuleAmount = query?.CouponAmount ?? 0;
            resultFullReduce.CouponType       = CouponType.FullReduce;
            result.Add(resultFullReduce);

            //2.转介绍信息
            //获取学生是否有转介绍Id
            var studentService = new StudentService(_schoolId);
            var studenInfo     = studentService.GetStudent(studentId);
            //获取学生是否有报名信息
            var enrollOrderService = new EnrollOrderService(_schoolId);
            var studentOrder       = enrollOrderService.GetStudentOrders(studentId).Result;

            if (!studentOrder.Any()) //没有报过名,并且有转介绍人 才返回转介绍信息
            {
                if (studenInfo.ParentId <= 0)
                {
                    return(result);
                }

                var couponRuleService = new CouponRuleService(_schoolId);
                var couponRuleResult  = couponRuleService.GetTblDctCouponRuleInfo();

                var resultRecommend = new CouponGenerateResponse
                {
                    CouponRuleId     = couponRuleResult?.CouponRuleId ?? 0,
                    CouponRuleAmount = couponRuleResult?.CouponAmount ?? 0,
                    CouponType       = CouponType.Recommend
                };
                result.Add(resultRecommend);
            }
            return(result);
        }
        /// <summary>
        /// 获取定金详情信息
        /// <para>作     者:Huang GaoLiang </para>
        /// <para>创建时间:2018-11-15 </para>
        /// </summary>
        /// <param name="depositOrderId">订单编号</param>
        /// <param name="companyId">公司编号</param>
        /// <returns>返回订金详情数据</returns>
        /// <exception cref="BussinessException">
        /// 异常ID:5,数据异常
        /// </exception>
        public DepositOrderDetailResponse GetPrintOrderDetail(long depositOrderId, string companyId)
        {
            DepositOrderDetailResponse order = (DepositOrderDetailResponse)GetOrderDetail(depositOrderId, companyId);

            order.SchoolName  = new OrgService().GetAllSchoolList().FirstOrDefault(m => m.SchoolId == order.SchoolId)?.SchoolName;
            order.PrintNumber = PrintCounterService.Print(_schoolId, PrintBillType.DepositOrderBill);

            // 根据学生编号获取学生信息
            StudentDetailResponse studentInfo = new StudentService(_schoolId).GetStudent(order.StudentId);

            if (studentInfo == null)
            {
                throw new BussinessException((byte)ModelType.Cash, 5);
            }
            order.StudentName = studentInfo.StudentName;
            order.StudentNo   = studentInfo.StudentNo;
            order.LinkMobile  = studentInfo.LinkMail;
            order.Age         = studentInfo.Age;
            return(order);
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 根据订单Id获取定金信息
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-16</para>
        /// <param name="orderId">订单Id</param>
        /// </summary>
        /// <returns>订单未交接详情</returns>
        public OrderUnHandoverDetailResponse GetUnHandoverDetail(long orderId)
        {
            var result    = new OrderUnHandoverDetailResponse();
            var orderInfo = _depositRepository.Value.GetOdrDepositOrderById(orderId).Result;//定金订单信息

            if (orderInfo != null)
            {
                //获取学生信息
                var studentInfo = new StudentService(orderInfo.SchoolId).GetStudent(orderInfo.StudentId);
                result = new OrderUnHandoverDetailResponse
                {
                    OrderId       = orderInfo.DepositOrderId,
                    PersonalId    = orderInfo.PayeeId,
                    PersonalName  = orderInfo.Payee,
                    StudentName   = studentInfo?.StudentName,
                    StudentNo     = studentInfo?.StudentNo,
                    OrderType     = (int)OrderTradeType.DepositOrder,
                    OrderTypeName = EnumName.GetDescription(typeof(OrderTradeType), (int)OrderTradeType.DepositOrder),
                    CreateTime    = DateTime.Now
                };
            }
            return(result);
        }
        /// <summary>
        /// 办理前获取学生的余额信息
        /// <para>作    者:郭伟佳</para>
        /// <para>创建时间:2018-11-08</para>
        /// </summary>
        /// <param name="iRequest">退费订单办理前获取详情的参数</param>
        /// <param name="companyId">公司编号</param>
        /// <returns>退费订单办理前的详情信息</returns>
        public override IRefundOrderTransactDetailReponse GetTransactDetail(IRefundOrderTransacDetailtRequest iRequest, string companyId)
        {
            BalanceRefundOrderTransactDetailResponse result = new BalanceRefundOrderTransactDetailResponse();
            //获取学生相关信息
            var studentInfo = new StudentService(this._schoolId).GetStudent(this._studentId);

            if (studentInfo != null)
            {
                List <GuardianRequest> guardianList = studentInfo.ContactPerson;
                result = new BalanceRefundOrderTransactDetailResponse()
                {
                    StudentId    = studentInfo.StudentId,
                    StudentName  = studentInfo.StudentName,
                    StudentNo    = studentInfo.StudentNo,
                    Sex          = EnumName.GetDescription(typeof(SexEnum), studentInfo.Sex),
                    Mobile       = studentInfo.LinkMobile,
                    GuardianName = guardianList?[0].GuardianName,
                    Age          = Age.GetAgeByDate(studentInfo.Birthday, DateTime.Now),
                    Amount       = studentInfo.Balance
                };
            }
            return(result);
        }
        /// <summary>
        /// 补签-微信通知
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-03-15</para>
        /// </summary>
        /// <param name="className">班级名称</param>
        /// <param name="classRoom">教室</param>
        /// <param name="classTime">上课时间</param>
        /// <param name="replenishCode">补签码</param>
        /// <param name="studentId">学生Id</param>
        ///
        private void PushWeChatNotice(long studentId, string className,
                                      string classRoom, string classTime, string replenishCode)
        {
            //获取学生信息
            var stuInfo = StudentService.GetStudentInfo(studentId);
            //微信推送标题
            string title = string.Format(ClientConfigManager.HssConfig.WeChatTemplateTitle.SignReplenishNotice, stuInfo.StudentName);
            //家长确认补签地址
            string signUrl = ClientConfigManager.HssConfig.ParentsConfirmSignUrl + "?replenishCode=" + replenishCode;

            WxNotifyProducerService wxNotifyProducerService = WxNotifyProducerService.Instance;
            WxNotifyInDto           wxNotify = new WxNotifyInDto
            {
                Data = new List <WxNotifyItemInDto> {
                    new WxNotifyItemInDto {
                        DataKey = "first", Value = title
                    },
                    new WxNotifyItemInDto {
                        DataKey = "keyword1", Value = className
                    },
                    new WxNotifyItemInDto {
                        DataKey = "keyword2", Value = classRoom
                    },
                    new WxNotifyItemInDto {
                        DataKey = "keyword3", Value = classTime
                    },
                    new WxNotifyItemInDto {
                        DataKey = "remark", Value = ScanCodeAttendConstants.Msg, Color = "#FF2500"
                    }
                },
                ToUser     = StudentService.GetWxOpenId(stuInfo),
                TemplateId = WeChatTemplateConstants.SignReplenishNotice,
                Url        = signUrl
            };

            wxNotifyProducerService.Publish(wxNotify);
        }
Ejemplo n.º 9
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);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 描述:保存转班办理
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018-11-7</para>
        /// </summary>
        /// <param name="dto">要保存的转班信息</param>
        /// <returns>无</returns>
        public void ChangeIn(ChangeClassAddRequest dto)
        {
            lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_AMSSCHOOLSTUDENT, this._schoolId, this._studentId.ToString()))
            {
                //验证
                var outClassTimes = this.ValidateSubmit(dto);  //实际转出课次
                using (var unitOfWork = new UnitOfWork())
                {
                    try
                    {
                        unitOfWork.BeginTransaction();
                        //1、插入转班表
                        var timChangeClassEntity = AddTimChangeClass(dto, outClassTimes, unitOfWork);
                        //2、课表数据操作---作废
                        ChangeClassLessonFinisher lessonFinisher = new ChangeClassLessonFinisher(timChangeClassEntity, unitOfWork);
                        LessonService             lessonService  = new LessonService(unitOfWork);
                        lessonService.Finish(lessonFinisher);//课次销毁

                        //3、课表数据操作---转班重新排课
                        ChangeClassLessonCreator creator = new ChangeClassLessonCreator(timChangeClassEntity, lessonFinisher.EnrollOrderItemId, unitOfWork);
                        lessonService.Create(creator);

                        //4.修改学生状态及课次
                        var studentService = new StudentService(this._schoolId);
                        studentService.UpdateStudentStatusById(this._studentId, unitOfWork);

                        unitOfWork.CommitTransaction();
                    }
                    catch (Exception e)
                    {
                        unitOfWork.RollbackTransaction();
                        throw;
                    }
                }
            }
        }
        /// <summary>
        /// 根据订金编号获取订金详情
        /// <para>作     者::Huang GaoLiang  </para>
        /// <para>创建时间:2018-11-10 </para>
        /// </summary>
        /// <param name="orderId">订金编号</param>
        /// <param name="companyId">公司编号</param>
        /// <returns>返回获取订金详情</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:7,数据异常
        /// </exception>
        public override IOrderDetailResponse GetOrderDetail(long orderId, string companyId)
        {
            TblOdrDepositOrder odrDepositOrder = _odrDepositOrderRepository.Value.GetOdrDepositOrderById(orderId).Result;

            DepositOrderDetailResponse info = Mapper.Map <TblOdrDepositOrder, DepositOrderDetailResponse>(odrDepositOrder);

            // 根据学生编号查询学生信心
            StudentDetailResponse s = new StudentService(_schoolId).GetStudent(info.StudentId);

            if (s == null)
            {
                throw new BussinessException((byte)ModelType.SignUp, 7);
            }

            info.StudentName   = s.StudentName;
            info.SexName       = s.SexName;
            info.HeadFaceUrl   = s.HeadFaceUrl;
            info.Age           = s.Age;
            info.IDNumber      = s.IDNumber;
            info.IDType        = s.IDType;
            info.IDTypeName    = s.IdTypeName;
            info.ContactPerson = s.ContactPerson;
            return(info);
        }
        /// <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);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// 描述:办理
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018-11-8</para>
        /// </summary>
        /// <param name="iRequest">要退费的信息</param>
        /// <param name="companyId">公司编号</param>
        /// <returns>无</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:22,异常描述:找不到可退班的订单课程
        /// 异常ID:20,异常描述:该订单课程已退班退费
        /// </exception>
        public override void Transact(IRefundOrderTransactRequest iRequest, string companyId)
        {
            lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_AMSSCHOOLSTUDENT, this._schoolId, this._studentId.ToString()))
            {
                var request       = iRequest as LeaveClassOrderAddRequest;
                var vailteRequest = EnrollOrderService.GetEnrollOrderItemIdByEnroOrderList(request.RefundCourseLesson);
                if (!request.RefundCourseLesson.Any())
                {
                    throw new BussinessException((byte)ModelType.Order, 22);
                }
                if (vailteRequest.Any(x => x.Status != OrderItemStatus.Enroll))  //如果订单课程不是已报名,则抛出异常
                {
                    throw new BussinessException((byte)ModelType.Order, 20);
                }

                //获取要退班的课次
                var courseLessonList = base.GetCourseLessonList(request.LeaveTime, companyId).Where(x => request.RefundCourseLesson.Contains(x.EnrollOrderItemId)).ToList();
                if (!courseLessonList.Any()) //如果要退费的订单课程为空,则抛出异常
                {
                    throw new BussinessException((byte)ModelType.Order, 22);
                }

                using (var unitOfWork = new UnitOfWork())
                {
                    try
                    {
                        unitOfWork.BeginTransaction();
                        //1.退费订单
                        var tblOdrRefundOrder = AddOdrRefundOrder(request, courseLessonList, unitOfWork);
                        //2.退费订单课程明细
                        AddOdrRefundOrdeEnroll(courseLessonList, tblOdrRefundOrder, unitOfWork);
                        //3.其他费用
                        AddOdrRefundOrderCost(request, tblOdrRefundOrder, unitOfWork);
                        //4.支付信息
                        AddOdrRefundPay(request, tblOdrRefundOrder, unitOfWork);
                        //5.退班详细信息
                        var tblOdrLeaveClassOrder = AddOdrLeaveClassOrder(request, tblOdrRefundOrder, unitOfWork);
                        //6.添加附件
                        AddAttachment(request, tblOdrRefundOrder, unitOfWork);

                        //7、课次调用
                        LeaveClassLessonFinisher leaveSchoolFinisher = new LeaveClassLessonFinisher(tblOdrRefundOrder, tblOdrLeaveClassOrder, request.RefundCourseLesson, unitOfWork);
                        LessonService            lessonService       = new LessonService(unitOfWork);
                        lessonService.Finish(leaveSchoolFinisher);//课次销毁


                        //8、资金调用
                        LeaveClassOrderTrade orderTrade = new LeaveClassOrderTrade(tblOdrRefundOrder, request.RefundType);
                        TradeService         trade      = new TradeService(orderTrade, unitOfWork);
                        trade.Trade();

                        //9、修改为退班状态
                        EnrollOrderService service = new EnrollOrderService(this._schoolId);
                        var enrollOrderItemIdList  = courseLessonList.Select(x => x.EnrollOrderItemId).ToList();
                        service.ChangeToLeaveClass(enrollOrderItemIdList, unitOfWork).Wait();

                        //10.修改学生状态
                        var studentService = new StudentService(this._schoolId);
                        studentService.UpdateStudentStatusById(this._studentId, unitOfWork);

                        unitOfWork.CommitTransaction();
                    }
                    catch (Exception ex)
                    {
                        unitOfWork.RollbackTransaction();
                        throw;
                    }
                }
            }
        }
        /// <summary>
        /// 微信通知
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-03-15</para>
        /// </summary>
        private void PushWeChatNotice()
        {
            var stuInfo  = StudentService.GetStudentInfo(_request.StudentId);
            var inLesson = this._inLessonList.FirstOrDefault();

            string pushClassTime = this._outLessonList
                                   .Select(x => DateTime.Parse(x.ClassDate.ToString("yyyy-MM-dd") + " " + x.ClassBeginTime))
                                   .Min().ToString("yyyy.MM.dd HH:mm");

            //first={0}家长,您好!因{1}于{2}请假,为了保证孩子的学习效果,我们特别为孩子安排了补课,具体时间如下:
            string title =
                string.Format(
                    ClientConfigManager.HssConfig.WeChatTemplateTitle.MakeupNotice,
                    stuInfo.StudentName, stuInfo.StudentName, pushClassTime);

            //keyword1=上课时间
            var    classTimeList = this._inLessonList.Select(x => x.ClassBeginTime + "-" + x.ClassEndTime);
            string classTime     = $"{inLesson.ClassDate.ToString("yyyy.MM.dd")} {string.Join("、", classTimeList)}";

            //keyword2=班级名称
            string className = CourseService.GetByCourseId(inLesson.CourseId)?.ClassCnName ?? string.Empty;

            //keyword3=教室
            string classRoom = new ClassRoomService(inLesson.ClassRoomId)?.ClassRoomInfo?.RoomNo ?? string.Empty;

            //keyword4=老师名称
            string teacherName = TeachService.GetTeacher(inLesson.TeacherId)?.TeacherName ?? string.Empty;

            //remark=校区名称
            string schoolName = OrgService.GetSchoolBySchoolId(_schoolId)?.SchoolName ?? string.Empty;

            WxNotifyProducerService wxNotifyProducerService = WxNotifyProducerService.Instance;
            WxNotifyInDto           wxNotify = new WxNotifyInDto
            {
                Data = new List <WxNotifyItemInDto> {
                    new WxNotifyItemInDto {
                        DataKey = "first", Value = title
                    },
                    new WxNotifyItemInDto {
                        DataKey = "keyword1", Value = classTime
                    },
                    new WxNotifyItemInDto {
                        DataKey = "keyword2", Value = className
                    },
                    new WxNotifyItemInDto {
                        DataKey = "keyword3", Value = classRoom
                    },
                    new WxNotifyItemInDto {
                        DataKey = "keyword4", Value = teacherName
                    },
                    new WxNotifyItemInDto {
                        DataKey = "remark", Value = schoolName
                    }
                },
                ToUser     = StudentService.GetWxOpenId(stuInfo),
                TemplateId = WeChatTemplateConstants.MakeupNotice,
                Url        = string.Empty
            };

            wxNotifyProducerService.Publish(wxNotify);
        }