/// <summary>
        /// 描述:获取订单详情
        /// <para>作  者:瞿琦</para>
        /// <para>创建时间:2018-11-7</para>
        /// </summary>
        /// <param name="refundOrderId">退费订单主键Id</param>
        /// <param name="companyId">公司编号</param>
        /// <returns>休学订单详情</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:1,异常描述:系统不存在该退费订单
        /// 异常ID:10,异常描述:系统不存在该休学信息
        /// </exception>
        public override IOrderDetailResponse GetOrderDetail(long refundOrderId, string companyId)
        {
            var result = new LeaveSchoolOrderDetailResponse();

            var refundOrder = base._tblOdrRefundOrderRepository.Value.GetRefundOrderIdByRefundOrder(refundOrderId);

            if (refundOrder == null)
            {
                throw new BussinessException((byte)ModelType.Order, 1);
            }
            var leaveShoolOrder = _tblOdrLeaveSchoolOrderRepository.Value.GetLeaveSchoolIdByOrder(refundOrderId);

            if (leaveShoolOrder == null)
            {
                throw new BussinessException((byte)ModelType.Order, 10);
            }
            //获取休学的附件
            var attchmentService = new AttchmentService(base._schoolId);
            var attchmentList    = attchmentService.GetAttchList(refundOrderId, AttchmentType.LEAVE_SCHOOL_APPLY);

            //休学费用明细
            var leaveSchoolOrderDetailList = LeaveSchoolOrderService.GetRefundCourseAmountDetail(refundOrderId, companyId);

            result.OrderNo      = refundOrder.OrderNo;
            result.CreateTime   = refundOrder.CreateTime;
            result.CreatorName  = refundOrder.CreatorName;
            result.LeaveTime    = leaveShoolOrder.LeaveTime;
            result.ResumeTime   = leaveShoolOrder.ResumeTime;
            result.Reason       = leaveShoolOrder.Reason;
            result.Remark       = leaveShoolOrder.Remark;
            result.AttchmentUrl = attchmentList;
            result.LeaveSchoolOrderDetailList = leaveSchoolOrderDetailList;

            return(result);
        }
예제 #2
0
        /// <summary>
        /// 描述:获取订单详情
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018-11-8</para>
        /// </summary>
        /// <param name="refundOrderId">退费订单表主键</param>
        /// <param name="companayId">公司编号</param>
        /// <returns>订单详情信息</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:1,异常描述:系统不存在该退费订单
        /// 异常ID:2,异常描述:系统不存在该退班信息
        /// 异常ID:3,异常描述:系统不存在该退费订单的支付信息
        /// </exception>
        public override IOrderDetailResponse GetOrderDetail(long refundOrderId, string companayId)
        {
            var result = new LeaveClassOrderDetailResponse();
            //获取退费订单信息
            var refundOrderEntity = base._tblOdrRefundOrderRepository.Value.GetRefundOrderIdByRefundOrder(refundOrderId);

            if (refundOrderEntity == null)
            {
                throw new BussinessException((byte)ModelType.Order, 1);
            }
            //获取退班信息
            var leaveClassOrder = _tblOdrLeaveClassOrder.Value.GetRefundOrderByLeaveClassOrder(refundOrderId);

            if (leaveClassOrder == null)
            {
                throw new BussinessException((byte)ModelType.Order, 2);
            }
            //获取退费订单的支付信息
            var refundPay = _tblOdrRefundPay.Value.GetRefundOrderIdByRefundPay(refundOrderId);

            if (refundPay == null)
            {
                throw new BussinessException((byte)ModelType.Order, 3);
            }
            //获取其他费用(扣款合计)
            var refundAmountTypeList = CostService.GetCosts(Dto.TypeCode.LEAVE_CLASS_FEE);
            var costList             = _tblOdrRefundOrderCost.Value.GetrefundOrderIdByCost(refundOrderId).Select(x => new CostDetail
            {
                CostName = refundAmountTypeList.FirstOrDefault(k => k.CostId == x.CostId)?.CostName,
                Amount   = x.Amount
            }).ToList();

            //获取退班的附件
            var attchmentService = new AttchmentService(base._schoolId);
            var attchmentList    = attchmentService.GetAttchList(refundOrderId, AttchmentType.LEAVE_CLASS_APPLY);

            //获取退班的课程
            var leaveClassOrderDetailList = LeaveSchoolOrderService.GetRefundCourseAmountDetail(refundOrderId, companayId);

            result.OrderNo           = refundOrderEntity.OrderNo;
            result.RefundDate        = refundOrderEntity.CreateTime;
            result.CreatorId         = refundOrderEntity.CreatorId;
            result.CreatorName       = refundOrderEntity.CreatorName;
            result.EnrollCourseList  = leaveClassOrderDetailList;
            result.StopClassDate     = leaveClassOrder.StopClassDate;
            result.ReceiptStatus     = leaveClassOrder.ReceiptStatus;
            result.TotalDeductAmount = costList;
            result.Amount            = refundOrderEntity.Amount;
            result.RefundType        = (RefundType)refundPay.RefundType;
            result.Reason            = leaveClassOrder.Reason;
            result.AttachmentUrl     = attchmentList;
            result.BankName          = refundPay.BankName;
            result.BankCardNo        = refundPay.BankCardNo;
            result.BankUserName      = refundPay.BankUserName;

            return(result);
        }
예제 #3
0
        /// <summary>
        /// 根据学生编号更新学生状态 UpdateStudentStatusById 带事务
        /// <para>作     者:Huang GaoLiang </para>
        /// <para>创建时间:2018-11-26 </para>
        /// </summary>
        /// <param name="studentId">学生编号</param>
        /// <param name="unitOfWork">事务</param>
        /// <param name="status">学生状态</param>
        /// <exception>
        /// 异常ID:1,系统中已经存在此学生
        /// </exception>
        internal void UpdateStudentStatusById(long studentId, UnitOfWork unitOfWork, StudyStatus?status = null)
        {
            // 1、根据学生编号查询学生信息
            TblCstSchoolStudent stu = unitOfWork.GetCustomRepository <TblCstSchoolStudentRepository, TblCstSchoolStudent>().Load(m => m.SchoolId == _schoolId && m.StudentId == studentId);

            if (stu == null)
            {
                throw new BussinessException((byte)ModelType.Customer, 1);
            }

            stu.RemindClassTimes = new StudentTimetableService(_schoolId, studentId).GetStudentRemindClassTimes(unitOfWork);; //获取此学生的报名中的剩余课次
                                                                                                                              //2、根据校区编号和学生编号获取此学生的休学开始日期和休学结束日期
            TblOdrLeaveSchoolOrder leave = new LeaveSchoolOrderService(_schoolId, stu.StudentId).GetLeaveSchoolList(unitOfWork);

            SetStudyStatus(status, stu, leave);

            unitOfWork.GetCustomRepository <TblCstSchoolStudentRepository, TblCstSchoolStudent>().Update(stu);
        }
예제 #4
0
        /// <summary>
        /// 根据学生编号更新学生的
        /// <para>作     者:Huang GaoLiang  </para>
        /// <para>创建时间:2018-11-26  </para>
        /// </summary>
        /// <param name="studentId">学生编号</param>
        /// <param name="status">学生状态</param>
        /// <exception>
        /// 异常ID:1,系统中已经存在此学生
        /// </exception>
        internal void UpdateStudentStatusById(long studentId, StudyStatus?status = null)
        {
            // 1、根据学生编号查询学生信息
            TblCstSchoolStudent stu = _schoolStudentRepository.Value.GetStudentById(_schoolId, studentId).Result;

            if (stu == null)
            {
                throw new BussinessException((byte)ModelType.Customer, 1);
            }
            stu.RemindClassTimes = new StudentTimetableService(_schoolId, studentId).GetStudentRemindClassTimes();//获取此学生的报名中的剩余课次

            // 2、根据校区编号和学生编号获取此学生的休学开始日期和休学结束日期
            TblOdrLeaveSchoolOrder leave = new LeaveSchoolOrderService(_schoolId, stu.StudentId).GetLeaveSchoolList();

            SetStudyStatus(status, stu, leave);

            _schoolStudentRepository.Value.Update(stu);
        }
예제 #5
0
        /// <summary>
        /// 描述:获取要打印的收据详情
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018-11-8</para>
        /// </summary>
        /// <param name="refundOrderId">退费订单Id</param>
        /// <param name="companyId">公司编号</param>
        /// <returns>退费订单收据详情</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:1, 异常描述:系统不存在该退费订单
        /// 异常ID:2, 异常描述:系统不存在该退班信息
        /// </exception>
        public LeaveClassOrderReceiptDetailResponse GetPrintReceiptDetail(long refundOrderId, string companyId)
        {
            var result = new LeaveClassOrderReceiptDetailResponse();
            //获取退费订单信息
            var refundOrderEntity = _tblOdrRefundOrderRepository.Value.GetRefundOrderIdByRefundOrder(refundOrderId);

            if (refundOrderEntity == null)
            {
                throw new BussinessException((byte)ModelType.Order, 1);
            }
            //获取退班信息
            var leaveClassOrder = _tblOdrLeaveClassOrder.Value.GetRefundOrderByLeaveClassOrder(refundOrderId);

            if (leaveClassOrder == null)
            {
                throw new BussinessException((byte)ModelType.Order, 2);
            }
            //获取其他费用(扣款合计)
            var refundAmountTypeList = CostService.GetCosts(Dto.TypeCode.LEAVE_CLASS_FEE);
            var costList             = _tblOdrRefundOrderCost.Value.GetrefundOrderIdByCost(refundOrderId).Select(x => new CostDetail
            {
                CostName = refundAmountTypeList.FirstOrDefault(k => k.CostId == x.CostId)?.CostName,
                Amount   = x.Amount
            }).ToList();

            //获取退班的课程
            var leaveClassOrderDetailList = LeaveSchoolOrderService.GetRefundCourseAmountDetail(refundOrderId, companyId);

            var printNo = PrintCounterService.Print(base._schoolId, PrintBillType.LeaveClass);

            result.RefundDate        = refundOrderEntity.CreateTime;
            result.ReceiptStatus     = leaveClassOrder.ReceiptStatus;
            result.StopClassDate     = leaveClassOrder.StopClassDate;
            result.TotalDeductAmount = costList;
            result.RefundAmount      = refundOrderEntity.Amount; //实退金额=已上课次扣费金额+扣款合计
            result.PrintNo           = printNo;
            result.RefundCourseList  = leaveClassOrderDetailList;

            OrgService orgService = new OrgService();
            var        schoolList = orgService.GetAllSchoolList().FirstOrDefault(x => x.SchoolId.Trim() == leaveClassOrder.SchoolId.Trim());

            result.RefundUnit = schoolList == null ? "" : schoolList.SchoolName;
            return(result);
        }
예제 #6
0
        /// <summary>
        /// 更新学生的学生状态
        /// <para>作     者:Huang GaoLiang </para>
        /// <para>创建时间:2018-11-12 </para>
        /// </summary>
        /// <param name="student">校区学生信息</param>
        /// <param name="schools">校区集合</param>
        private static async Task UpdateStuStudyStatus(TblCstSchoolStudent student, List <TblCstSchoolStudent> schools)
        {
            // 1、根据学生编号获取学生最近一条的休学信息
            TblOdrLeaveSchoolOrder leave = new LeaveSchoolOrderService(student.SchoolId, student.StudentId).GetLeaveSchoolList();

            // 2、根据条件设置学生在校状态
            GetStudentStatus(leave, student);

            // 3、根据校区编号获取该校区的学生信息
            List <TblCstSchoolStudent> schoolStuStudyStatus = schools.Where(m => m.SchoolId == student.SchoolId).ToList();

            // 4、按照学生编号和在读状态分组
            var list = schoolStuStudyStatus.GroupBy(m => m.StudyStatus).ToList();

            // 5、根据学生编号和校区编号更新学生学生状态
            foreach (var status in list)
            {
                List <long> stuIds = schoolStuStudyStatus.Where(x => x.StudyStatus == status.Key).Select(m => m.StudentId).ToList(); //查找该状态下的学生编号

                await new TblCstSchoolStudentRepository().UpdateStudyStatus(student.SchoolId, stuIds, status.Key);                   //更新该状态下的学生状态
            }
        }