public List <NavigateInfo> GetCurrentByProjectId(string projectId, string flowCode, string subFlowCode, string userAccount) { var flowList = FlowInfo.Search(e => e.ParentCode == FlowCode.Closure).OrderBy(e => e.LayoutSequence); //获取当前用户的项目任务 var sql = string.Format(@"SELECT tb_users.*,tb_work.Status AS TaskStatus,tb_work.TypeCode,tb_work.Url, tb_work.ProcInstID,tb_users.ProjectId FROM dbo.ProjectUsers tb_users RIGHT JOIN dbo.TaskWork tb_work ON tb_users.UserAccount = tb_work.ReceiverAccount AND tb_work.RefID = tb_users.ProjectId WHERE tb_work.RefID = '{0}' AND tb_work.ReceiverAccount ='{1}' AND ISNULL(RoleCode,'')!='View' AND tb_work.Status = 0 ", projectId, userAccount); var navigateList = new List <NavigateInfo>(); var result = ProjectUsers.SqlQuery <ProjectUsersEntity>(sql, null); var list = result.ToList(); //获取已完成的项目列表 var finishedProjectList = ProjectInfo.Search(e => e.ProjectId == projectId && e.Status == ProjectStatus.Finished).ToList(); NavigateInfo navigateItem = null; var viewPageStuff = "/View/param?projectId=" + projectId; var editPageStuff = "/" + projectId; //是否是编辑页 foreach (var flowItem in flowList) { var isEditPage = false; navigateItem = new NavigateInfo(); navigateItem.NameZHCN = flowItem.NameZHCN; navigateItem.Linked = true; navigateItem.Code = flowItem.Code; navigateItem.Href = string.Empty; //设置当前的子流程的为选中状态 if (flowItem.Code == subFlowCode) { navigateItem.IsSelected = true; } //设置流程的完成状态 foreach (var project in finishedProjectList) { if (flowItem.Code == project.FlowCode) { navigateItem.IsFinished = true; } } //默认的链接 主流程Code+/+子流程Code string defaultUrl = "#/" + flowItem.FlowCodePrefix + "/" + flowItem.Code.Split('_')[1]; //判断当前用户是否有待办任务 foreach (var item in list) { if (item.TypeCode == flowItem.Code) { if (item.TaskStatus == TaskWorkStatus.UnFinish) { //如果有待办任务导航tab的链接为待办任务的链接 navigateItem.Href = item.Url; if (item.ProcInstID.HasValue && !string.IsNullOrEmpty(item.ProjectId)) { navigateItem.Href += "&projectId=" + item.ProjectId; } } //如果任务已结束设置为只读页面的链接 else if (item.TaskStatus == TaskWorkStatus.Finished || item.TaskStatus == TaskWorkStatus.K2ProcessApproved || navigateItem.IsFinished) { navigateItem.Href = defaultUrl + viewPageStuff; } } } //获取当前用户的项目组头衔 var projectUser = ProjectUsers.Get(ClientCookie.UserCode, projectId); if (string.IsNullOrEmpty(navigateItem.Href)) { if (projectUser != null) { if (!string.IsNullOrEmpty(flowItem.RoleCode) && flowItem.RoleCode.Split('_').Contains(projectUser.RoleCode) && !navigateItem.IsFinished) { isEditPage = true; } if (isEditPage) { navigateItem.Href = defaultUrl + editPageStuff; } else { navigateItem.Href = defaultUrl + viewPageStuff; } } else { navigateItem.Href = defaultUrl + viewPageStuff; } } navigateList.Add(navigateItem); } return(navigateList); }