private string[] AddAuditRecord <T>(ApplyAuditStep nowStep, User AuditUser, ApplyAuditNodeVdto <T> model) where T : IAuditable { var list = (nowStep.MembersAcceptToAudit?.Length ?? 0) == 0 ? Array.Empty <string>() : nowStep.MembersAcceptToAudit.Split("##"); list = list.Append(AuditUser.Id).ToArray(); nowStep.MembersAcceptToAudit = string.Join("##", list); context.ApplyAuditSteps.Update(nowStep); // 对本人审批信息进行追加 var responseList = new List <ApplyResponse>(model.AuditItem.Response); responseList.Add(new ApplyResponse() { // 通过判断有无授权码判断 AuditingBy = AuditUser.Application.AuthKey != null ? AuditUser : null, Remark = model.Remark, HandleStamp = DateTime.Now, StepIndex = nowStep.Index, Status = model.Action == AuditResult.Accept ? Auditing.Accept : Auditing.Denied }); model.AuditItem.Response = responseList; return(list); }
/// <summary> /// 用户对指定申请进行审批 /// </summary> /// <param name="model">目标申请</param> /// <param name="myManages">用户所管辖的单位列表</param> /// <param name="AuditUser">审批人</param> /// <returns></returns> private ApiResult AuditSingle <T>(ref ApplyAuditNodeVdto <T> model, User AuditUser) where T : IAuditable { var apply = model.AuditItem; if (apply == null) { return(ActionStatusMessage.ApplyMessage.NotExist); } var nowStep = apply.NowAuditStep; List <ApplyAuditStep> allStep = new List <ApplyAuditStep>(apply.ApplyAllAuditStep); // 审批未发布时 不可进行审批 if (nowStep == null) { return(ActionStatusMessage.ApplyMessage.Operation.Audit.BeenAuditOrNotReceived); } if (apply.Status != AuditStatus.AcceptAndWaitAdmin && apply.Status != AuditStatus.Auditing) { return(ActionStatusMessage.ApplyMessage.Operation.Audit.NotOnAudingStatus); } // 如果当前审批人是本单位管理,则本轮审批直接通过 var company = nowStep.FirstMemberCompanyCode; var managers = companyManagerServices.GetManagers(company).Select(m => m.UserId).ToList(); var isManagerAudit = managers.Contains(AuditUser.Id); if (!isManagerAudit) { // 待审批人无当前用户时,返回无效 if (!nowStep.MembersFitToAudit.Split("##").Contains(AuditUser.Id)) { return(ActionStatusMessage.ApplyMessage.Operation.Audit.NoYourAuditStream); } if (nowStep.MembersAcceptToAudit.Split("##").Contains(AuditUser.Id)) { return(ActionStatusMessage.ApplyMessage.Operation.Audit.BeenAudit); } } // 当审批的申请为未发布的申请时,将其发布 //if (apply.Status == AuditStatus.NotSave || AuditStatus.NotPublish == apply.Status) // ModifyAuditStatus(apply, AuditStatus.Auditing); var list = AddAuditRecord(nowStep, AuditUser, model); // 判断是否被驳回 if (model.Action != AuditResult.Accept) { apply.Status = AuditStatus.Denied; } // 判断本步骤是否结束 // 当 需审批人数<=已审批人数,需审批数为0表示需要所有人审批 // 或 已审批人数=可审批人数 // 或 为管理员审批 else if ( (nowStep.RequireMembersAcceptCount <= list.Length && nowStep.RequireMembersAcceptCount > 0) || (nowStep.MembersAcceptToAudit.Length >= nowStep.MembersFitToAudit.Length) || isManagerAudit) { GoNextStep(ref apply, nowStep, allStep); } return(ActionStatusMessage.Success); }