Esempio n. 1
0
        /// <summary>
        /// 获取家长的学生
        /// <para>作    者:蔡亚康</para>
        /// <para>创建时间:2019-03-08</para>
        /// </summary>
        /// <returns>学生信息集合</returns>
        public List <StudentsResponse> GetStudents()
        {
            List <StudentsResponse> result = new List <StudentsResponse>();

            //1、获取家长的学生信息
            List <TblCstStudent> students = StudentService.GetStudentList(this._userCode)
                                            .Distinct()
                                            .ToList();
            List <long> studentIds = students.Select(t => t.StudentId).ToList();


            //2、取学生对应的校区
            List <TblCstSchoolStudent> schoolStudents = StudentService.GetStudentSchoolList(studentIds);

            //3、获取校区信息
            OrgService            orgService = new OrgService();
            List <SchoolResponse> allSchools = orgService.GetAllSchoolList();

            //4、按学生最近要上的课程进行排序
            List <ViewCompleteStudentAttendance> studentAttendance = StudentTimetableService.GetStudentAttendLately(studentIds);

            //5、整合学生的数据到输出结果
            students.ForEach(item =>
            {
                StudentsResponse resultItem = new StudentsResponse()
                {
                    HeadFaceUrl = item.HeadFaceUrl,
                    StudentId   = item.StudentId,
                    StudentName = item.StudentName,
                };
                resultItem.SchoolList = new List <StudentSchoolListResponse>();
                var query             = from ss in schoolStudents
                                        join school in allSchools on ss.SchoolId equals school.SchoolId
                                        where ss.StudentId == item.StudentId
                                        select new StudentSchoolListResponse()
                {
                    CompanyId       = school.CompanyId,
                    CompanyName     = school.Company,
                    SchoolId        = school.SchoolId,
                    SchoolName      = school.SchoolName,
                    ServerDateTime  = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    ClassLatelyTime = this.GetClassLatelyTime(school.SchoolId, item.StudentId, studentAttendance)
                };
                resultItem.SchoolList = query.ToList();
                result.Add(resultItem);
            });

            //6、按最近上课时间排序
            result = result.Where(t => t.SchoolList.Count > 0).OrderBy(t => t.SchoolList.OrderBy(x => x.ClassLatelyTime, new EmptyStringsAreLast())
                                                                       .FirstOrDefault()
                                                                       .ClassLatelyTime, new EmptyStringsAreLast())
                     .ToList();
            return(result);
        }
Esempio n. 2
0
        /*
         * 打印序号规则:校区简称+年+5位数字,例如“深圳东海201800001”
         * 每打印一次,就计数一次,连续,不能断号。
         * 分文件计数,目前系统中的打印文件有报班报名表、、报班收据、定金收据、游学营报名表、游学营收据、零售票据。
         * 计数规则如下:校区、年度、单据类型 从00001开始。
         * 校区名称+年度+序号,例如:东海校区+2018+00001
         */

        /// <summary>
        /// 打印并计数
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2019-02-20</para>
        /// </summary>
        /// <param name="schoolId">校区Id</param>
        /// <param name="printBillType">打印类型</param>
        /// <returns>打印序号</returns>
        /// <exception cref="ArgumentNullException">
        /// 校区Id为空;校区未找到;
        /// </exception>
        internal static string Print(string schoolId, PrintBillType printBillType)
        {
            if (string.IsNullOrWhiteSpace(schoolId))
            {
                throw new ArgumentNullException(nameof(schoolId));
            }

            OrgService orgService = new OrgService();

            var allSchoolInfos = orgService.GetAllSchoolList();

            var schoolInfo = allSchoolInfos.FirstOrDefault(m => m.SchoolId == schoolId);

            if (schoolInfo == null)
            {
                throw new ArgumentNullException(nameof(schoolInfo));
            }

            int  year = DateTime.Now.Year;
            byte type = (byte)printBillType;

            lock (LocalThreadLock.GetLockKeyName(LockKeyNames.LOCK_PRINT, schoolId, type.ToString()))
            {
                TblDatPrintCounterRepository printCounterRepository = new TblDatPrintCounterRepository();
                TblDatPrintCounter           counter = printCounterRepository.Get(schoolId, year, type);

                if (counter == null)
                {
                    counter = new TblDatPrintCounter
                    {
                        PrintCounterId = IdGenerator.NextId(),
                        PrintBillType  = type,
                        SchoolId       = schoolId,
                        Counts         = 1,
                        Year           = year,
                        CreateTime     = DateTime.Now
                    };
                    printCounterRepository.Add(counter);
                }
                else
                {
                    counter.Counts++;
                    printCounterRepository.Update(counter);
                }

                return($"{schoolInfo.SchoolName}{year}{counter.Counts.ToString().PadLeft(5, '0')}");
            }
        }
Esempio n. 3
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);
        }
Esempio n. 4
0
        /// <summary>
        /// 描述:提交审核
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018-10-29</para>
        /// </summary>
        /// <param name="dto">提交的赠与奖学金审核信息</param>
        /// <returns>无</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:3, 异常描述:校区不能为空
        /// </exception>
        public void Audit(CouponRuleSubmitAuditRequest dto)
        {
            OrgService orgService = new OrgService();
            var        schoolList = orgService.GetAllSchoolList().FirstOrDefault(x => x.SchoolId.Trim() == _schoolId.Trim());

            if (schoolList == null)
            {
                throw new BussinessException(ModelType.Discount, 3);
            }
            dto.ApplyTitle = schoolList.SchoolName;

            //1.向流程平台提交审核流程,并得到流程记录Id
            var flowModel = new FlowInputDto
            {
                SystemCode   = BusinessConfig.BussinessCode,
                BusinessCode = ((int)AuditBusinessType.ScholarshipGive).ToString(),
                ApplyId      = CurrentUserId,
                ApplyTime    = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                ApplyCode    = this.TblAutAudit.AuditId.ToString(), //申请单号,没有置空
                ApplyTitle   = dto.ApplyTitle,
                AuditUserId  = dto.AuditorId,
                FlowConent   = string.Empty,
                Describe     = string.Empty,
                Number       = 0,
                FlowID       = this.TblAutAudit != null && this.TblAutAudit.AuditStatus == (int)AuditStatus.Return ? this.TblAutAudit.FlowNo : string.Empty
            };

            //审核状态
            var auditStatus = TblAutAudit?.AuditStatus ?? 0;  //等于this.TblAutAudit != null ? this.TblAutAudit.AuditStatus : 0
            var flowId      = base.SubmitAuditFlow(flowModel, (AuditStatus)auditStatus);

            base.TblAutAudit.AuditUserId    = dto.AuditorId;
            base.TblAutAudit.AuditUserName  = dto.AuditorName;
            base.TblAutAudit.UpdateTime     = DateTime.Now;
            base.TblAutAudit.FlowNo         = flowId;
            base.TblAutAudit.AuditStatus    = (int)AuditStatus.Auditing;
            base.TblAutAudit.CreateUserId   = dto.CreateUserId;
            base.TblAutAudit.CreateUserName = dto.CreateUserName;

            base._tblAutAuditRepository.Update(base.TblAutAudit);
        }
        /// <summary>
        /// 描述:生成奖学金券
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018-11-2</para>
        /// </summary>
        /// <returns>生成的校长奖学金信息</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:4, 异常描述:添加校长奖学金失败
        /// 异常ID:5, 异常描述:优惠券号重复
        /// </exception>
        public async Task <CouponResponse> CreateCoupon(CouponAmountRequest dto)
        {
            var couponNo = CreateCouponNo.GetCouponCode();

            if (_tblDctCouponRepository.Value.GetCouponNoByCouponInfo(this._schoolId, couponNo) != null)
            {
                throw new BussinessException(ModelType.Discount, 5);
            }

            var entity = new TblDctCoupon()
            {
                CouponId      = IdGenerator.NextId(),
                SchoolId      = _schoolId,
                CouponNo      = couponNo,
                CouponType    = (int)CouponType.HeadmasterBonus,
                Amount        = dto.Amount,
                Status        = (int)Dto.Enum.CouponStatus.NoUse,
                ExpireTime    = DateTime.Now.AddMonths(6),
                EnrollOrderId = 0,
                IsFreeAll     = dto.IsFreeAll,
                StudentId     = 0,
                UseTime       = null,
                CreateTime    = DateTime.Now,
                FromId        = 0,
                Remark        = string.Empty,
                CreatorId     = dto.CreatorId
            };
            var flag = await _tblDctCouponRepository.Value.AddTask(entity);

            if (!flag)
            {
                throw new BussinessException(ModelType.Discount, 4);
            }
            var        result     = Mapper.Map <CouponResponse>(entity);
            OrgService orgService = new OrgService();
            var        schoolList = orgService.GetAllSchoolList().FirstOrDefault(x => x.SchoolId.Trim() == _schoolId.Trim());

            result.SchoolName = schoolList == null ? "" : schoolList.SchoolName;
            return(result);
        }
Esempio n. 6
0
        /// <summary>
        /// 描述:提交审核
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018.9.19</para>
        /// </summary>
        /// <returns>无</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:9, 异常描述:校区编号为空
        /// 异常ID:2, 异常描述:添加审核表数据失败
        /// </exception>
        public void SubmitAudit(TermAuditRequest data)
        {
            //1.向流程平台提交审核流程,并得到流程记录Id
            var flowAuditId = IdGenerator.NextId();

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

            if (schoolList == null)
            {
                throw new BussinessException(ModelType.Datum, 9);
            }

            var applyTitle = $"{schoolList.SchoolName}{_year}";

            var flowModel = new FlowInputDto
            {
                SystemCode   = BusinessConfig.BussinessCode,
                BusinessCode = ((int)AuditBusinessType.Term).ToString(),
                ApplyId      = CurrentUserId,
                ApplyTime    = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                ApplyCode    = flowAuditId.ToString(), //申请单号,没有置空
                ApplyTitle   = applyTitle,
                AuditUserId  = data.AuditUserId,
                FlowConent   = "",
                Describe     = "",
                Number       = 0,
                FlowID       = this.TblAutAudit != null && this.TblAutAudit.AuditStatus == (int)AuditStatus.Return ? this.TblAutAudit.FlowNo : string.Empty
            };

            //审核状态
            var auditStatus = TblAutAudit?.AuditStatus ?? 0;  //等于this.TblAutAudit != null ? this.TblAutAudit.AuditStatus : 0
            var flowId      = base.SubmitAuditFlow(flowModel, (AuditStatus)auditStatus);

            //2.添加数据到审核表
            var auditModel = new TblAutAudit()
            {
                AuditId        = flowAuditId,
                SchoolId       = this._schoolId,
                BizType        = (int)AuditBusinessType.Term,
                ExtField1      = this._schoolId,
                ExtField2      = this._year.ToString(),
                FlowNo         = flowId,
                AuditStatus    = (int)AuditStatus.Auditing,
                AuditUserId    = data.AuditUserId,
                AuditUserName  = data.AuditUserName,
                AuditDate      = DateTime.Now,
                CreateUserId   = base.CurrentUserId,
                CreateUserName = data.CreateUserName,
                DataExt        = string.Empty,
                DataExtVersion = string.Empty,
                CreateTime     = DateTime.Now,
                UpdateTime     = DateTime.Now
            };
            var flag = _tblAutAuditRepository.Add(auditModel);

            if (!flag)
            {
                throw new BussinessException((byte)ModelType.Audit, 2);
            }

            //3.添加数据到学期表
            if (this.TblAutAudit != null && this.TblAutAudit.AuditStatus == (int)AuditStatus.Return)
            {
                //退回时,先删除审核表中的记录,再插入
                _tblAutTermRepository.DeleteByAutTermId(_schoolId, _year);
            }
            var entity = Mapper.Map <List <TblAutTerm> >(data.TermAuditDetail);

            foreach (var item in entity)
            {
                item.AutTermId  = IdGenerator.NextId();
                item.AuditId    = flowAuditId;
                item.SchoolId   = this._schoolId;
                item.Year       = this._year;
                item.CreateTime = DateTime.Now;

                if (item.TermId == 0)//学期Id为空,则产生新的学期Id
                {
                    item.TermId = IdGenerator.NextId();
                }
            }
            _tblAutTermRepository.Add(entity);
        }