/// <summary> /// 复制课表数据提交 /// 作 者:Huang GaoLiang 2018年9月26日15:22:05 /// </summary> /// <param name="autAudit">审核表</param> /// <param name="datSchoolTimeList">上课时间段集合</param> /// <param name="autClassList">审核中数据-班级表集合</param> /// <param name="autClassTimeList">审核中数据-班级上课时间表</param> /// <param name="toTermId">学期编号</param> internal static async Task CreateTermTimetable(TblAutAudit autAudit, List <TblDatSchoolTime> datSchoolTimeList, List <TblAutClass> autClassList, List <TblAutClassTime> autClassTimeList, long toTermId) { await new TblAutAuditRepository().AddTask(autAudit); //审核表 await new SchoolTimeService(toTermId).AddTaskDatSchoolTime(datSchoolTimeList, toTermId); //班级上课时间表 await new TblAutClassRepository().AddTask(autClassList); //审核中数据-班级课表 await new TblAutClassTimeRepository().AddTask(autClassTimeList); //审核中数据-班级上课时间表 }
/// <summary> /// 审核不通过重置待审核 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2018-10-10</para> /// </summary> /// <returns>审核Id</returns> private long AuditFailResetPendingAudit(long auditId) { TblAutAudit autAudit = _tblAutAuditRepository.Load(auditId); if (autAudit == null) { throw new ArgumentNullException(nameof(autAudit)); } autAudit.AuditStatus = (int)AuditStatus.WaitAudit; autAudit.UpdateTime = DateTime.Now; _tblAutAuditRepository.Update(autAudit); return(autAudit.AuditId); }
/// <summary> /// 校验并获取审核Id /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2018-09-25</para> /// </summary> /// <param name="schoolId">校区Id</param> /// <returns>审核Id</returns> private long VerifyGetAuditId(string schoolId) { TblAutAudit audit = base.TblAutAudit; if (audit == null) { audit = new TblAutAudit { AuditId = IdGenerator.NextId(), SchoolId = schoolId, CreateTime = DateTime.Now, AuditDate = DateTime.Now, AuditStatus = (int)AuditStatus.WaitAudit, AuditUserId = string.Empty, AuditUserName = string.Empty, BizType = (int)AuditBusinessType.TermCourseTimetable, DataExt = string.Empty, DataExtVersion = string.Empty, CreateUserId = "", CreateUserName = "", ExtField1 = _termId.ToString(), ExtField2 = string.Empty, FlowNo = string.Empty, UpdateTime = DateTime.Now }; _tblAutAuditRepository.Add(audit); } switch ((AuditStatus)audit.AuditStatus) { case AuditStatus.WaitAudit: //待审核 break; case AuditStatus.Auditing: //审核中 throw new BussinessException(ModelType.Timetable, 5); //课表正在审核中,不可操作 case AuditStatus.Success: //审核通过 audit.AuditId = CopyClassToAutClass(); break; case AuditStatus.Return: //审核不通过 audit.AuditId = AuditFailResetPendingAudit(audit.AuditId); break; } return(audit.AuditId); }
/// <summary> /// 描述:根据审核主表实例化学期审核数据 /// <para>作 者:瞿琦</para> /// <para>创建时间:2018.9.19</para> /// </summary> /// <param name="tblAutAudit">审核主表实例</param> private TermAuditService(TblAutAudit tblAutAudit) { base.TblAutAudit = tblAutAudit; this._schoolId = base.TblAutAudit.ExtField1; this._year = int.Parse(base.TblAutAudit.ExtField2); }
/// <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); }
/// <summary> /// 描述:根据审核主表实例化对象 /// <para>作 者:瞿琦</para> /// <para>创建时间:2018-10-29</para> /// </summary> /// <param name="tblAutAudit">审核主表实体</param> private CouponRuleAuditService(TblAutAudit tblAutAudit) { base.TblAutAudit = tblAutAudit; this._schoolId = tblAutAudit.ExtField1.Trim(); }
/// <summary> /// 描述:添加一个审核中的优惠设置 /// <para>作 者:瞿琦</para> /// <para>创建时间:2018-10-29</para> /// </summary> /// <param name="dto">要添加的赠与奖学金信息</param> /// <returns>无</returns> public void Add(CouponRuleDetailRequest dto) { //1、确定当前校区是否存在正在审核的赠与奖学金设置 if (base.TblAutAudit != null && base.TblAutAudit.AuditStatus == (int)AuditStatus.Auditing) //当前单据在审核中,不允许添加 { throw new BussinessException(ModelType.Discount, 2); } //2、确定当前校区是否存在被退回或未提交的赠与奖学金设置 //2.1向审核主表添加数据 long auditId = 0; if (base.TblAutAudit == null || base.TblAutAudit.AuditStatus == (int)AuditStatus.Return || base.TblAutAudit.AuditStatus == (int)AuditStatus.Success) { if (dto.CouponType == CouponType.Recommend) { ValidationCouponRule(dto.BeginDate, dto.EndDate); //验证正式表是否已存在转介绍优惠 } var auditModel = new TblAutAudit() { AuditId = IdGenerator.NextId(), SchoolId = this._schoolId, BizType = (int)AuditBusinessType.ScholarshipGive, ExtField1 = _schoolId, ExtField2 = string.Empty, FlowNo = string.Empty, AuditStatus = (int)AuditStatus.WaitAudit, AuditUserId = string.Empty, AuditUserName = string.Empty, AuditDate = DateTime.Now, CreateUserId = "", CreateUserName = "", DataExt = string.Empty, DataExtVersion = string.Empty, CreateTime = DateTime.Now, UpdateTime = DateTime.Now }; auditId = auditModel.AuditId; _tblAutAuditRepository.Add(auditModel); } else if (base.TblAutAudit.AuditStatus == (int)AuditStatus.WaitAudit) { if (dto.CouponType == CouponType.Recommend) { //验证正式表是否已存在转介绍优惠 ValidationCouponRule(dto.BeginDate, dto.EndDate); //验证临时表是否已存在转介绍优惠 ValidationAuditCouponRule(dto.BeginDate, dto.EndDate); } auditId = base.TblAutAudit.AuditId; } //2.2向赠与奖学金审核子表添加数据 var couponRuleModel = Mapper.Map <TblAutCouponRule>(dto); couponRuleModel.AutCouponRuleId = IdGenerator.NextId(); //审核子表主键 couponRuleModel.AuditId = auditId; //审核主表Id couponRuleModel.CouponRuleId = IdGenerator.NextId(); //奖学金正式表Id couponRuleModel.CreateTime = DateTime.Now; couponRuleModel.SchoolId = this._schoolId; _tblAutCouponRuleRepository.Add(couponRuleModel); }
/// <summary> /// 复制正式学期排课数据到草稿 /// <para>作 者:zhiwei.Tang</para> /// <para>创建时间:2018-09-25</para> /// </summary> /// <returns>得到审核Id</returns> private long CopyClassToAutClass() { //获取所有班级信息 var classes = DefaultClassService.GetClasssByTermId(_termId); //获取班级所有上课时间段 var classTime = DefaultClassService.GetClassTimeByClassId(classes.Select(x => x.ClassId)); TblAutAudit autAudit = new TblAutAudit { AuditId = IdGenerator.NextId(), CreateTime = DateTime.Now, AuditDate = DateTime.Now, AuditStatus = (int)AuditStatus.WaitAudit, AuditUserId = string.Empty, AuditUserName = string.Empty, BizType = (int)AuditBusinessType.TermCourseTimetable, DataExt = string.Empty, DataExtVersion = string.Empty, ExtField1 = _termId.ToString(), ExtField2 = string.Empty, FlowNo = string.Empty, UpdateTime = DateTime.Now, SchoolId = base.TblAutAudit.SchoolId, CreateUserId = string.Empty, CreateUserName = string.Empty }; List <TblAutClass> autClasses = classes.Select(x => new TblAutClass { AutClassId = IdGenerator.NextId(), AuditId = autAudit.AuditId, ClassId = x.ClassId, ClassNo = x.ClassNo, ClassRoomId = x.ClassRoomId, CourseId = x.CourseId, CourseLeveId = x.CourseLeveId, CourseNum = x.CourseNum, CreateTime = DateTime.Now, DataStatus = 0, RoomCourseId = x.RoomCourseId, StudentsNum = x.StudentsNum, TeacherId = x.TeacherId, TermId = x.TermId, UpdateTime = DateTime.Now, SchoolId = base.TblAutAudit.SchoolId }).ToList(); List <TblAutClassTime> autClassTime = classTime.Select(x => new TblAutClassTime { AutClassTimeId = IdGenerator.NextId(), AuditId = autAudit.AuditId, ClassId = x.ClassId, ClassTimeId = x.ClassTimeId, CreateTime = DateTime.Now, DataStatus = 0, SchoolTimeId = x.SchoolTimeId, SchoolId = base.TblAutAudit.SchoolId }).ToList(); //TODO:事物 Task[] tasks = new Task[3]; tasks[0] = _tblAutAuditRepository.AddTask(autAudit); tasks[1] = _tblAutClassRepository.Value.SaveTask(autClasses); tasks[2] = _tblAutClassTimeRepository.Value.SaveTask(autClassTime); Task.WaitAll(tasks); return(autAudit.AuditId); }
/// <summary> /// 描述:根据审核主表实例化学期审核数据 /// </summary> /// <param name="tblAutAudit">审核实体</param> private TermCourseTimetableAuditService(TblAutAudit tblAutAudit) { base.TblAutAudit = tblAutAudit; this._termId = long.Parse(base.TblAutAudit.ExtField1); }