/// <summary> /// 设置表单默认属性 /// </summary> /// <param name="auditForm"></param> /// <param name="wbs"></param> /// <param name="projectInfo"></param> public virtual void SetAuditFormInfo(T_AE_Audit auditForm, S_W_WBS wbs, S_I_ProjectInfo projectInfo) { if (String.IsNullOrEmpty(auditForm.ID)) { auditForm.ID = FormulaHelper.CreateGuid(); } if (string.IsNullOrEmpty(auditForm.WBSID)) { auditForm.WBSID = wbs.ID; } if (string.IsNullOrEmpty(auditForm.ProjectInfoID)) { auditForm.ProjectInfoID = wbs.ProjectInfoID; } if (string.IsNullOrEmpty(auditForm.State)) { auditForm.State = ProjectFlowState.InFlow.ToString(); } auditForm.CreateDate = DateTime.Now; auditForm.ProjectInfoCode = projectInfo.Code; auditForm.ProjectInfoName = projectInfo.Name; if (wbs.WBSType == WBSNodeType.Work.ToString()) { auditForm.TaskWorkCode = wbs.Code; auditForm.TaskWorkName = wbs.Name; } var subProject = wbs.Seniorities.FirstOrDefault(d => d.WBSType == WBSNodeType.SubProject.ToString()); if (subProject != null) { auditForm.SubProjectCode = subProject.Code; auditForm.SubProjectName = subProject.Name; } var major = wbs.Seniorities.FirstOrDefault(d => d.WBSType == WBSNodeType.Major.ToString()); if (major != null) { auditForm.MajorCode = major.WBSValue; auditForm.MajorName = major.Name; } auditForm.PhaseCode = projectInfo.PhaseValue; var ph = BaseConfigFO.GetWBSEnum(WBSNodeType.Phase).AsEnumerable().FirstOrDefault(c => c["value"].ToString() == projectInfo.PhaseValue); if (ph != null) { auditForm.PhaseName = ph["text"].ToString(); } }
public virtual List <S_W_Activity> StartAuditFlow(T_AE_Audit auditForm, string auditFormUrl, List <S_E_Product> products, string wbsID) { var wbs = instanceEnitites.S_W_WBS.SingleOrDefault(d => d.ID == wbsID); if (wbs == null) { throw new Exception("未能找到ID为【" + wbsID + "】的WBS对象,无法执行校审"); } var project = instanceEnitites.S_I_ProjectInfo.SingleOrDefault(d => d.ID == wbs.ProjectInfoID); if (project == null) { throw new Exception("未能找到ID为【" + wbs.ProjectInfoID + "】的项目,无法执行校审"); } //为校审单设置默认值 SetAuditFormInfo(auditForm, wbs, project); //生成流程步骤及启动参数 var startParam = GetAuditFlowStartParam(auditForm, auditFormUrl, products, wbs, project); var service = AuditFlowServiceGenretor.CreateService(); List <S_W_Activity> list = service.StartAuditFlow(startParam); //设置校审单状态 auditForm.State = list[0].ActivityKey; var taskWork = wbs.S_W_TaskWork.FirstOrDefault(); //设置校审人员到表单 this.SetAuditUsers(auditForm, startParam.DefSteps, taskWork.DesignerUserID, taskWork.DesignerUserName); //设置成果属性 this.SetProductProperty(products, auditForm.ID, auditForm.State); instanceEnitites.T_AE_Audit.Add(auditForm); var designAct = list[0]; if (startParam.ExecNext) { var actType = ActivityType.Design.ToString(); designAct = instanceEnitites.Set <S_W_Activity>().FirstOrDefault(c => c.ActivityKey == actType && c.BusniessID == designAct.BusniessID); } SetAuditSignUser(designAct, products); return(list); }
/// <summary> /// 设置校审人员到表单上 /// </summary> /// <param name="auditForm">校审单</param> /// <param name="auditSteps">流程环节信息</param> /// <param name="designerID">设计人ID(非必要,流程启动人员非设计人时使用)</param> /// <param name="designerName"></param> public virtual void SetAuditUsers(T_AE_Audit auditForm, List <AuditStep> auditSteps, string designerID = "", string designerName = "") { foreach (var step in auditSteps) { //设计 if (step.StepKey == ActivityType.Design) { //流程中启动(首环节)人员可能不是设计人,所有需要参数确定设计人 if (!string.IsNullOrEmpty(step.UserID) && string.IsNullOrEmpty(designerID)) { auditForm.DesignerID = step.UserID; auditForm.DesignerName = step.UserName; } else if (!string.IsNullOrEmpty(designerID)) { auditForm.DesignerID = designerID; auditForm.DesignerName = designerName; } }//校核 else if (step.StepKey == ActivityType.Collact) { if (!string.IsNullOrEmpty(step.UserID)) { auditForm.CollactorID = step.UserID; auditForm.CollactorName = step.UserName; } }//审核 else if (step.StepKey == ActivityType.Audit) { if (!string.IsNullOrEmpty(step.UserID)) { auditForm.AuditorID = step.UserID; auditForm.AuditorName = step.UserName; } }//审定 else if (step.StepKey == ActivityType.Approve) { if (!string.IsNullOrEmpty(step.UserID)) { auditForm.ApproverID = step.UserID; auditForm.ApproverName = step.UserName; } } } }
/// <summary> /// 获取校审流程启动参数 /// </summary> /// <param name="auditForm"></param> /// <param name="auditFormUrl"></param> /// <param name="stepList"></param> /// <returns></returns> public virtual AuditFlowStartParam GetAuditFlowStartParam(T_AE_Audit auditForm, string auditFormUrl, List <S_E_Product> productList, S_W_WBS wbs, S_I_ProjectInfo projectInfo) { var startParam = new AuditFlowStartParam(); startParam.DisplayName = EnumBaseHelper.GetEnumDescription(typeof(ActivityType), ActivityType.Design.ToString()) + "(" + auditForm.Name + ")"; startParam.AuditFormUrl = auditFormUrl; startParam.AuditFormID = auditForm.ID; startParam.WBSID = auditForm.WBSID; //参与校审的人员 var userInfo = GetAuditRoleUser(auditForm.WBSID); //本次校审的环节 var stepList = GetAuditSteps(userInfo, productList, wbs, projectInfo); foreach (var auditStep in stepList) { startParam.AddStep(auditStep); } return(startParam); }
/// <summary> /// 设置设校审人员至校审单上 /// </summary> /// <param name="audit">校审单对象</param> /// <param name="Users">设校审人员信息</param> private void SetAuditUsers(T_AE_Audit audit, List <Dictionary <string, object> > Users) { var enumDef = EnumBaseHelper.GetEnumDef(typeof(ProjectRole)); //设置校审单上的校审人员角色 foreach (var item in enumDef.EnumItem) { string idKey = item.Code + "ID"; string nameKey = item.Code + "Name"; var roleUser = Users.FirstOrDefault(delegate(Dictionary <string, object> user) { if (String.IsNullOrEmpty(user.GetValue(idKey))) { return(false); } return(true); }); if (roleUser != null) { audit.SetProperty(idKey, roleUser.GetValue(idKey)); audit.SetProperty(nameKey, roleUser.GetValue(nameKey)); } } }