/// <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); }
/* * 打印序号规则:校区简称+年+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')}"); } }
/// <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); }
/// <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); }
/// <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); }