/// <summary> /// 执行审核的扩展流程 /// </summary> /// <param name="data"></param> /// <returns></returns> protected override bool DoAuditPass(TData data) { var jobs = UserJobDataAccess.All(p => p.EntityType == EntityType && p.DataId == data.Id && p.JobType == UserJobType.Audit); var nomy = jobs.Where(p => p.ToUserId != BusinessContext.Current.LoginUserId).ToList(); if (nomy.Count(p => p.JobStatus == JobStatusType.Succeed) != nomy.Count) { data.AuditState = AuditStateType.Submit; return(base.DoAuditPass(data)); } var supper = data as ILevelAuditData; if (supper == null || supper.LastLevel >= supper.DepartmentLevel) { return(base.DoAuditPass(data)); } if (supper.DepartmentLevel > 1) { supper.DepartmentLevel -= 1; } var users = GetUpAuditUsers(supper.DepartmentLevel); if (users.Length == 0) { return(base.DoAuditPass(data)); } UserJobData job = jobs.FirstOrDefault(); if (job == null) { job = new UserJobData { EntityType = EntityType, LinkId = data.Id, Title = data.Title, JobType = UserJobType.Audit, FromUserId = BusinessContext.Current.LoginUserId, FromUserName = BusinessContext.Current.LoginUser.RealName }; } else { job.JobStatus = JobStatusType.None; job.DataState = DataStateType.None; job.IsFreeze = false; } var bl = new UserJobBusinessLogic(); foreach (var user in users) { job.Id = 0; job.ToUserId = user; bl.AddNew(job); } data.AuditState = AuditStateType.Submit; return(base.DoAuditPass(data)); }