public ActionResult Index() { var currentUser = AuthUtil.GetCurrentUser(); ViewBag.CurrentUser = currentUser; return(View()); }
public void ChangePassword(UserView view) { var currId = AuthUtil.GetCurrentUser().User.Id; if (string.IsNullOrEmpty(view.OldPassword)) { throw new Exception("请输入原密码!"); } else if (view.Password != view.Password_two) { throw new Exception("两次输入的密码不一致,请重新输入!"); } if (UnitWork.IsExist <User>(u => u.Id == currId && u.Password != view.OldPassword)) { throw new Exception("密码错误,请重新输入!"); } UnitWork.Update <User>(u => u.Id == view.Id, u => new User { Password = view.Password }); string[] orgIds = view.OrganizationIds.Split(',').ToArray(); ReleManagerApp.DeleteBy(Define.USERORG, currId); ReleManagerApp.AddRelevance(Define.USERORG, orgIds.ToLookup(u => currId)); }
public LoginUserVM GetLoginUser() { if (!AuthUtil.CheckLogin()) { throw new HttpException(401, "未登录"); } return(AuthUtil.GetCurrentUser()); }
/// <summary> /// 获取发起页面的菜单权限 /// </summary> /// <returns>System.String.</returns> public string LoadAuthorizedMenus(string modulecode) { var user = AuthUtil.GetCurrentUser(); var module = user.Modules.First(u => u.Code == modulecode); if (module != null) { return(JsonHelper.Instance.Serialize(module.Elements)); } return(""); }
static QueryExtensions() { var userContex = AuthUtil.GetCurrentUser(); List <string> rights = userContex.Rights.Select(a => a.Name).ToList(); if (rights.Contains(Rights.ReadAll)) { readAll = true; } }
public ActionResult Assign(Guid firstId, string key) { ViewBag.FirstId = firstId; ViewBag.ModuleType = key; var moduleWithChildren = AuthUtil.GetCurrentUser().ModuleWithChildren; var modules = key == "UserModule" ? App.LoadForUser(firstId) : App.LoadForRole(firstId); CheckModule(moduleWithChildren, modules); ViewBag.Modules = BuilderModules(moduleWithChildren); return(View()); }
/// <summary> /// 加载当前用户可访问模块的菜单 /// </summary> /// <param name="moduleId">The module identifier.</param> /// <returns>System.String.</returns> public string LoadMenus(string moduleId) { var user = AuthUtil.GetCurrentUser(); var module = user.Modules.Single(u => u.Id == moduleId); var data = new TableData { data = module.Elements, count = module.Elements.Count(), }; return(JsonHelper.Instance.Serialize(data)); }
/// <summary> /// 加载当前登录用户可访问的一个部门及子部门全部角色 /// </summary> public TableData Load(QueryCommonReq request) { var loginUser = AuthUtil.GetCurrentUser(); string cascadeId = ".0."; if (!string.IsNullOrEmpty(request.orgId)) { var org = loginUser.Orgs.SingleOrDefault(u => u.Id == request.orgId); cascadeId = org.CascadeId; } var ids = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id).ToArray(); var roleIds = ReleManagerApp.Get(Define.ROLEORG, false, ids); Expression <Func <Role, bool> > where1 = u => roleIds.Contains(u.Id); if (!string.IsNullOrEmpty(request.key)) { where1 = (u => u.Name.Contains(request.key) && roleIds.Contains(u.Id)); } if (request.Status >= 0) { where1 = (u => (string.IsNullOrEmpty(request.key) ? 1 == 1 : u.Name.Contains(request.key)) && roleIds.Contains(u.Id) && u.Status == request.Status); } var roles = UnitWork.Find <Role>(where1) .OrderBy(u => u.Name) .Skip((request.page - 1) * request.limit) .Take(request.limit); var records = Repository.GetCount(where1); var roleViews = new List <RoleView>(); foreach (var role in roles.ToList()) { RoleView uv = role; var orgs = LoadByRole(role.Id); uv.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList()); uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList()); roleViews.Add(uv); } return(new TableData { count = records, data = roleViews, }); }
public string SaveForm(string keyValue, WFFrmMain userEntity) { try { var user = AuthUtil.GetCurrentUser(); userEntity.ModifyUserId = user.User.Account; userEntity.ModifyUserName = user.User.Name; WfFrmMainBll.SaveForm(keyValue, userEntity); } catch (Exception e) { Result.Status = false; Result.Message = e.Message; } return(Result.ToJson()); }
/// <summary> /// 更改密码 /// </summary> /// <returns></returns> public ActionResult ChangePassword() { User usr = AuthUtil.GetCurrentUser().User; //string result = "approve"; //if (Request["act"] != null) // result = "boss_approve"; if (CurrentModule != null) { ViewData["account"] = usr.Account; ViewData["name"] = usr.Name; ViewData["password"] = usr.Password; } //return View(); return View(); }
public string GetUserInfo() { Infrastructure.Response result = new Infrastructure.Response(); User usr = AuthUtil.GetCurrentUser().User; try { result.Message = usr.Account; } catch (Exception ex) { result.Status = false; result.Message = ex.Message; } return(JsonHelper.Instance.Serialize(result)); }
protected string Actionname; //当前Action小写名称 protected override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); if (!AuthUtil.CheckLogin()) { return; } Controllername = Request.RequestContext.RouteData.Values["controller"].ToString().ToLower(); Actionname = filterContext.ActionDescriptor.ActionName.ToLower(); var function = this.GetType().GetMethods().FirstOrDefault(u => u.Name.ToLower() == Actionname); if (function == null) { throw new Exception("未能找到Action"); } var authorize = function.GetCustomAttribute(typeof(AuthenticateAttribute)); CurrentModule = AuthUtil.GetCurrentUser().Modules.FirstOrDefault(u => u.Url.ToLower().Contains(Controllername)); //当前登录用户没有Action记录&&Action有authenticate标识 if (authorize != null && CurrentModule == null) { filterContext.Result = new RedirectResult("/Login/Index"); return; } userCurrent = new Infrastructure.Cache.ObjCacheProvider <UserWithAccessedCtrls>().GetCache("userCard"); if (userCurrent == null) { App.Response.UserWithAccessedCtrls user = App.SSO.AuthUtil.GetCurrentUser(); if (user == null) { filterContext.Result = new RedirectResult("/Login/Index"); return; } new Infrastructure.Cache.ObjCacheProvider <UserWithAccessedCtrls>().Create("userCard", user, DateTime.Now.AddHours(1)); userCurrent = user; } //var version = ConfigurationManager.AppSettings["version"]; //if (version == "demo" && Request.HttpMethod == "POST") //{ // throw new HttpException(400, "演示版本,不能进行该操作,当前模块:" + Controllername + "/" + Actionname); //} }
protected string actionName; //当前Action小写名称 protected override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); if (!AuthUtil.CheckLogin()) { return; } controllerName = Request.RequestContext.RouteData.Values["controller"].ToString().ToLower(); //获取当前控制器名称 actionName = filterContext.ActionDescriptor.ActionName.ToLower(); //获取action名称 var function = this.GetType().GetMethods().FirstOrDefault(u => u.Name.ToLower() == actionName); if (function == null) { throw new Exception("未能找到Action"); } //权限验证标识 var authorize = function.GetCustomAttribute(typeof(AuthenticateAttribute)); if (authorize == null) { return; } var currentModule = AuthUtil.GetCurrentUser().Modules.FirstOrDefault(u => u.Url.ToLower().Contains(controllerName)); //当前登录用户没有Action记录&&Action有authenticate标识 if (currentModule == null) { filterContext.Result = new RedirectResult("/Login/Index"); return; } var version = ConfigurationManager.AppSettings["version"]; if (version == "demo" && Request.HttpMethod == "POST") { throw new HttpException(400, "演示版本,不能进行该操作,当前模块:" + controllerName + "/" + actionName); } }
/// <summary> /// 加载当前登录用户可访问的一个部门及子部门全部用户 /// </summary> public TableData Load(QueryUserListReq request) { var loginUser = AuthUtil.GetCurrentUser(); // 节点层次ID,如 【集团总部】为【.0.1.】 // 【研发部】为【.0.1.3.】,子节点【研发小组】为【.0.1.3.1.】 string cascadeId = ".0."; if (!string.IsNullOrEmpty(request.orgId)) { var org = loginUser.Orgs.SingleOrDefault(u => u.Id == request.orgId); cascadeId = org.CascadeId; } // 用户所属部门ID数组 var ids = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id).ToArray(); // 与此用户同部门的所有用户的ID var userIds = ReleManagerApp.Get(Define.USERORG, false, ids); var users = UnitWork.Find <User>(u => userIds.Contains(u.Id)) .OrderBy(u => u.Name) .Skip((request.page - 1) * request.limit) .Take(request.limit); // Repository 为父类【BaseApp<User>】中的属性 var records = Repository.GetCount(u => userIds.Contains(u.Id)); var userviews = new List <UserView>(); foreach (var user in users.ToList()) { UserView uv = user; var orgs = LoadByUser(user.Id); uv.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList()); uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList()); userviews.Add(uv); } return(new TableData { count = records, data = userviews, }); }
public ActionResult MyOrders() { string result = ""; if (CurrentModule != null) { User usr = AuthUtil.GetCurrentUser().User; if (usr != null) { string tmp = _app.GetCustID_NameByUserAcct(usr.Account); if (tmp != "") { result = tmp.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)[0]; } } ViewData["CustomerID"] = result; } return(View()); }
/// <summary> /// 加载当前登录用户可访问的一个部门及子部门全部用户 /// </summary> public TableData Load(QueryUserListReq request) { var loginUser = AuthUtil.GetCurrentUser(); string cascadeId = ".0."; if (request.orgId > 0) { var org = loginUser.Orgs.SingleOrDefault(u => u.Id == request.orgId); cascadeId = org.CascadeId; } var ids = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id).ToArray(); var userIds = ReleManagerApp.Get(Define.USERORG, false, ids); var users = UnitWork.Find <Sys_User>(u => userIds.Contains(u.Id)) .OrderBy(u => u.Name) .Skip((request.page - 1) * request.limit) .Take(request.limit); var records = Repository.GetCount(u => userIds.Contains(u.Id)); var userviews = new List <UserView>(); foreach (var user in users.ToList()) { UserView uv = user; var orgs = LoadByUser(user.Id); uv.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList()); uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList()); userviews.Add(uv); } return(new TableData { count = records, data = userviews, }); }
public TableData Load(QueryFlowInstanceListReq request) { //todo:待办/已办/我的 var result = new TableData(); var user = AuthUtil.GetCurrentUser(); if (request.type == "wait") //待办事项 { result.count = UnitWork.Find <FlowInstance>(u => u.MakerList == "1" || u.MakerList.Contains(user.User.Id)).Count(); result.data = UnitWork.Find <FlowInstance>(request.page, request.limit, "CreateDate descending", u => u.MakerList == "1" || u.MakerList.Contains(user.User.Id)).ToList(); } else if (request.type == "disposed") //已办事项(即我参与过的流程) { var instances = UnitWork.Find <FlowInstanceTransitionHistory>(u => u.CreateUserId == user.User.Id) .Select(u => u.InstanceId).Distinct(); var query = from ti in instances join ct in UnitWork.Find <FlowInstance>(null) on ti equals ct.Id into tmp from ct in tmp.DefaultIfEmpty() select ct; result.data = query.OrderByDescending(u => u.CreateDate) .Skip((request.page - 1) * request.limit) .Take(request.limit).ToList(); result.count = instances.Count(); } else //我的流程 { result.count = UnitWork.Find <FlowInstance>(u => u.CreateUserId == user.User.Id).Count(); result.data = UnitWork.Find <FlowInstance>(request.page, request.limit, "CreateDate descending", u => u.CreateUserId == user.User.Id).ToList(); } return(result); }
/// <summary> /// 创建一个实例 /// </summary> /// <returns></returns> public bool CreateInstance(JObject obj) { var flowInstance = obj.ToObject <FlowInstance>(); //获取提交的表单数据 var frmdata = new JObject(); foreach (var property in obj.Properties().Where(U => U.Name.Contains("data_"))) { frmdata[property.Name] = property.Value; } flowInstance.FrmData = JsonHelper.Instance.Serialize(frmdata); //创建运行实例 var wfruntime = new FlowRuntime(flowInstance); var user = AuthUtil.GetCurrentUser(); #region 根据运行实例改变当前节点状态 flowInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; flowInstance.ActivityType = wfruntime.GetNextNodeType();//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 flowInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; flowInstance.PreviousId = wfruntime.runtimeModel.currentNodeId; flowInstance.CreateUserId = user.User.Id; flowInstance.CreateUserName = user.User.Account; flowInstance.MakerList = (wfruntime.GetNextNodeType() != 4 ? GetMakerList(wfruntime) : "");//当前节点可执行的人信息 flowInstance.IsFinish = (wfruntime.GetNextNodeType() == 4 ? 1 : 0); UnitWork.Add(flowInstance); #endregion #region 流程操作记录 FlowInstanceOperationHistory processOperationHistoryEntity = new FlowInstanceOperationHistory { InstanceId = flowInstance.Id, CreateUserId = user.User.Id, CreateUserName = user.User.Name, CreateDate = DateTime.Now, Content = "【创建】" + user.User.Name + "创建了一个流程进程【" + flowInstance.Code + "/" + flowInstance.CustomName + "】" }; UnitWork.Add(processOperationHistoryEntity); #endregion #region 流转记录 FlowInstanceTransitionHistory processTransitionHistoryEntity = new FlowInstanceTransitionHistory { InstanceId = flowInstance.Id, FromNodeId = wfruntime.runtimeModel.currentNodeId, FromNodeName = wfruntime.runtimeModel.currentNode.name, FromNodeType = wfruntime.runtimeModel.currentNodeType, ToNodeId = wfruntime.runtimeModel.nextNodeId, ToNodeName = wfruntime.runtimeModel.nextNode.name, ToNodeType = wfruntime.runtimeModel.nextNodeType, IsFinish = wfruntime.runtimeModel.nextNodeType == 4?1:0, TransitionSate = 0, CreateUserId = user.User.Id, CreateUserName = user.User.Name }; #endregion UnitWork.Add(processTransitionHistoryEntity); UnitWork.Save(); return(true); }
/// <summary> /// 驳回 /// </summary> /// <returns></returns> public bool NodeReject(VerificationReq reqest) { var user = AuthUtil.GetCurrentUser().User; FlowInstance flowInstance = Get(reqest.FlowInstanceId); FlowRuntime wfruntime = new FlowRuntime(flowInstance); string resnode = ""; if (string.IsNullOrEmpty(reqest.NodeRejectStep)) { resnode = wfruntime.RejectNode(); } else { resnode = reqest.NodeRejectStep; } var tag = new Tag { Description = reqest.VerificationOpinion, Taged = 0, UserId = user.Id, UserName = user.Name }; wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, tag); flowInstance.IsFinish = 4;//4表示驳回(需要申请者重新提交表单) if (resnode != "") { flowInstance.PreviousId = flowInstance.ActivityId; flowInstance.ActivityId = resnode; flowInstance.ActivityType = wfruntime.GetNodeType(resnode); flowInstance.ActivityName = wfruntime.runtimeModel.nodes[resnode].name; flowInstance.MakerList = GetMakerList(wfruntime.runtimeModel.nodes[resnode], flowInstance.PreviousId);//当前节点可执行的人信息 #region 流转记录 UnitWork.Add(new FlowInstanceTransitionHistory { InstanceId = flowInstance.Id, CreateUserId = user.Id, CreateUserName = user.Name, FromNodeId = wfruntime.runtimeModel.currentNodeId, FromNodeName = wfruntime.runtimeModel.currentNode.name, FromNodeType = wfruntime.runtimeModel.currentNodeType, ToNodeId = wfruntime.runtimeModel.nextNodeId, ToNodeName = wfruntime.runtimeModel.nextNode.name, ToNodeType = wfruntime.runtimeModel.nextNodeType, IsFinish = wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0, TransitionSate = 1 }); #endregion } UnitWork.Update(flowInstance); UnitWork.Add(new FlowInstanceOperationHistory { InstanceId = reqest.FlowInstanceId , CreateUserId = user.Id , CreateUserName = user.Name , CreateDate = DateTime.Now , Content = "【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】驳回,备注:" + reqest.VerificationOpinion }); UnitWork.Save(); return(true); }
/// <summary> /// 节点审核 /// </summary> /// <param name="instanceId"></param> /// <returns></returns> public bool NodeVerification(string instanceId, bool flag, string description = "") { var user = AuthUtil.GetCurrentUser().User; FlowInstance flowInstance = Get(instanceId); FlowInstanceOperationHistory flowInstanceOperationHistory = new FlowInstanceOperationHistory { InstanceId = instanceId, CreateUserId = user.Id, CreateUserName = user.Name, CreateDate = DateTime.Now };//操作记录 FlowRuntime wfruntime = new FlowRuntime(flowInstance); var tag = new Tag { UserName = user.Name, UserId = user.Id, Description = description }; #region 会签 if (flowInstance.ActivityType == 0)//当前节点是会签节点 { tag.Taged = 1; wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, tag); //标记会签节点状态 string verificationNodeId = ""; //寻找当前登陆用户可审核的节点Id List <string> nodelist = wfruntime.GetCountersigningNodeIdList(wfruntime.runtimeModel.currentNodeId); foreach (string item in nodelist) { var makerList = GetMakerList(wfruntime.runtimeModel.nodes[item] , wfruntime.runtimeModel.flowInstanceId); if (makerList == "-1") { continue; } if (makerList.Split(',').Any(one => user.Id == one)) { verificationNodeId = item; } } if (verificationNodeId != "") { if (flag) { tag.Taged = 1; flowInstanceOperationHistory.Content = "【" + wfruntime.runtimeModel.nodes[verificationNodeId].name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】同意,备注:" + description; } else { tag.Taged = -1; flowInstanceOperationHistory.Content = "【" + wfruntime.runtimeModel.nodes[verificationNodeId].name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】不同意,备注:" + description; } wfruntime.MakeTagNode(verificationNodeId, tag);//标记审核节点状态 string confluenceres = wfruntime.NodeConfluence(verificationNodeId, tag); switch (confluenceres) { case "-1": //不通过 flowInstance.IsFinish = 3; break; case "1": //等待,当前节点还是会签开始节点,不跳转 break; default: //通过 flowInstance.PreviousId = flowInstance.ActivityId; flowInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; flowInstance.ActivityType = wfruntime.runtimeModel.nextNodeType; //-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 flowInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; flowInstance.IsFinish = (wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0); flowInstance.MakerList = (wfruntime.runtimeModel.nextNodeType == 4 ? "" : GetMakerList(wfruntime)); //当前节点可执行的人信息 #region 流转记录 UnitWork.Add(new FlowInstanceTransitionHistory { InstanceId = flowInstance.Id, CreateUserId = user.Id, CreateUserName = user.Name, FromNodeId = wfruntime.runtimeModel.currentNodeId, FromNodeName = wfruntime.runtimeModel.currentNode.name, FromNodeType = wfruntime.runtimeModel.currentNodeType, ToNodeId = wfruntime.runtimeModel.nextNodeId, ToNodeName = wfruntime.runtimeModel.nextNode.name, ToNodeType = wfruntime.runtimeModel.nextNodeType, IsFinish = wfruntime.runtimeModel.nextNodeType == 4?1:0, TransitionSate = 0 }); #endregion break; } } else { throw (new Exception("审核异常,找不到审核节点")); } } #endregion #region 一般审核 else//一般审核 { if (flag) { tag.Taged = 1; wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, tag); flowInstance.PreviousId = flowInstance.ActivityId; flowInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; flowInstance.ActivityType = wfruntime.runtimeModel.nextNodeType; flowInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; flowInstance.MakerList = wfruntime.runtimeModel.nextNodeType == 4 ? "" : GetMakerList(wfruntime);//当前节点可执行的人信息 flowInstance.IsFinish = (wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0); #region 流转记录 UnitWork.Add(new FlowInstanceTransitionHistory { InstanceId = flowInstance.Id, CreateUserId = user.Id, CreateUserName = user.Name, FromNodeId = wfruntime.runtimeModel.currentNodeId, FromNodeName = wfruntime.runtimeModel.currentNode.name, FromNodeType = wfruntime.runtimeModel.currentNodeType, ToNodeId = wfruntime.runtimeModel.nextNodeId, ToNodeName = wfruntime.runtimeModel.nextNode.name, ToNodeType = wfruntime.runtimeModel.nextNodeType, IsFinish = wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0, TransitionSate = 0 }); #endregion flowInstanceOperationHistory.Content = "【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】同意,备注:" + description; } else { flowInstance.IsFinish = 3; //表示该节点不同意 tag.Taged = -1; wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, tag); flowInstanceOperationHistory.Content = "【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】不同意,备注:" + description; } } #endregion flowInstance.SchemeContent = JsonHelper.Instance.Serialize(wfruntime.runtimeModel.schemeContentJson); UnitWork.Update(flowInstance); UnitWork.Add(flowInstanceOperationHistory); UnitWork.Save(); return(true); }
/// <summary> /// 已办流程进度查看,根据当前访问人的权限查看表单内容 /// <para>李玉宝于2017-01-20 15:35:13</para> /// </summary> /// <param name="keyValue">The key value.</param> /// <returns>WFProcessScheme.</returns> public WFProcessScheme GetProcessSchemeByUserId(Guid keyValue) { var entity = GetProcessSchemeEntity(keyValue); entity.SchemeContent = GetProcessSchemeContentByUserId(entity.SchemeContent, AuthUtil.GetCurrentUser().User.Id.ToString()); return(entity); }
/// <summary> /// 创建一个实例 /// </summary> /// <param name="processId">进程GUID</param> /// <param name="schemeInfoId">模板信息ID</param> /// <param name="wfLevel"></param> /// <param name="code">进程编号</param> /// <param name="customName">自定义名称</param> /// <param name="description">备注</param> /// <param name="frmData">表单数据信息</param> /// <returns></returns> public bool CreateInstance(Guid processId, Guid schemeInfoId, WFProcessInstance WFProcessInstance, string frmData = null) { try { WFSchemeInfo WFSchemeInfo = _unitWork.FindSingle <WFSchemeInfo>(u => u.Id == schemeInfoId); WFSchemeContent WFSchemeContent = _unitWork.FindSingle <WFSchemeContent>(u => u.SchemeInfoId == schemeInfoId && u.SchemeVersion == WFSchemeInfo.SchemeVersion); WF_RuntimeInitModel wfRuntimeInitModel = new WF_RuntimeInitModel() { schemeContent = WFSchemeContent.SchemeContent, currentNodeId = "", frmData = frmData, processId = processId }; IWF_Runtime wfruntime = null; if (frmData == null) { throw new Exception("自定义表单需要提交表单数据"); } else { wfruntime = new WF_Runtime(wfRuntimeInitModel); } var user = AuthUtil.GetCurrentUser(); #region 实例信息 WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; WFProcessInstance.ActivityType = wfruntime.GetStatus();//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; WFProcessInstance.PreviousId = wfruntime.runtimeModel.currentNodeId; WFProcessInstance.SchemeType = WFSchemeInfo.SchemeType; WFProcessInstance.FrmType = WFSchemeInfo.FrmType; WFProcessInstance.EnabledMark = 1;//正式运行 WFProcessInstance.CreateUserId = user.User.Id.ToString(); WFProcessInstance.CreateUserName = user.User.Account; WFProcessInstance.MakerList = (wfruntime.GetStatus() != 4 ? GetMakerList(wfruntime) : "");//当前节点可执行的人信息 WFProcessInstance.IsFinish = (wfruntime.GetStatus() == 4 ? 1 : 0); #endregion #region 实例模板 var data = new { SchemeContent = WFSchemeContent.SchemeContent, frmData = frmData }; WFProcessScheme WFProcessScheme = new WFProcessScheme { SchemeInfoId = schemeInfoId, SchemeVersion = WFSchemeInfo.SchemeVersion, ProcessType = 1,//1正式,0草稿 SchemeContent = data.ToJson().ToString() }; #endregion #region 流程操作记录 WFProcessOperationHistory processOperationHistoryEntity = new WFProcessOperationHistory(); processOperationHistoryEntity.Content = "【创建】" + user.User.Name + "创建了一个流程进程【" + WFProcessInstance.Code + "/" + WFProcessInstance.CustomName + "】"; #endregion #region 流转记录 WFProcessTransitionHistory processTransitionHistoryEntity = new WFProcessTransitionHistory(); processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name.Value; processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name.Value; processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; processTransitionHistoryEntity.TransitionSate = 0; processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); #endregion #region 委托记录 //List<WFDelegateRecord> delegateRecordEntitylist = GetDelegateRecordList(schemeInfoId, WFProcessInstance.Code, WFProcessInstance.CustomName, WFProcessInstance.MakerList); //WFProcessInstance.MakerList += delegateUserList; #endregion SaveProcess(wfruntime.runtimeModel, WFProcessInstance, WFProcessScheme, processOperationHistoryEntity, processTransitionHistoryEntity); return(true); } catch { throw; } }
/// <summary> /// 节点审核 /// </summary> /// <param name="processId"></param> /// <returns></returns> public bool NodeVerification(Guid processId, bool flag, string description = "") { bool _res = false; try { string _sqlstr = "", _dbbaseId = ""; WFProcessInstance WFProcessInstance = GetEntity(processId); WFProcessScheme WFProcessScheme = _unitWork.FindSingle <WFProcessScheme>(u => u.Id == WFProcessInstance.ProcessSchemeId); WFProcessOperationHistory WFProcessOperationHistory = new WFProcessOperationHistory(); //操作记录 WFProcessTransitionHistory processTransitionHistoryEntity = null; //流转记录 dynamic schemeContentJson = WFProcessScheme.SchemeContent.ToJson(); //获取工作流模板内容的json对象; WF_RuntimeInitModel wfRuntimeInitModel = new WF_RuntimeInitModel() { schemeContent = schemeContentJson.SchemeContent.Value, currentNodeId = WFProcessInstance.ActivityId, frmData = schemeContentJson.frmData.Value, previousId = WFProcessInstance.PreviousId, processId = processId }; IWF_Runtime wfruntime = new WF_Runtime(wfRuntimeInitModel); #region 会签 if (WFProcessInstance.ActivityType == 0) //会签 { wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, 1, ""); //标记当前节点通过 ///寻找需要审核的节点Id string _VerificationNodeId = ""; List <string> _nodelist = wfruntime.GetCountersigningNodeIdList(wfruntime.runtimeModel.currentNodeId); string _makerList = ""; foreach (string item in _nodelist) { _makerList = GetMakerList(wfruntime.runtimeModel.nodeDictionary[item], wfruntime.runtimeModel.processId); if (_makerList != "-1") { var id = AuthUtil.GetCurrentUser().User.Id.ToString(); foreach (string one in _makerList.Split(',')) { if (id == one || id.IndexOf(one) != -1) { _VerificationNodeId = item; break; } } } } if (_VerificationNodeId != "") { if (flag) { WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.nodeDictionary[_VerificationNodeId].name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】同意,备注:" + description; } else { WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.nodeDictionary[_VerificationNodeId].name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】不同意,备注:" + description; } string _Confluenceres = wfruntime.NodeConfluence(_VerificationNodeId, flag, AuthUtil.GetCurrentUser().User.Id.ToString(), description); var _data = new { SchemeContent = wfruntime.runtimeModel.schemeContentJson.ToString(), frmData = wfruntime.runtimeModel.frmData }; WFProcessScheme.SchemeContent = _data.ToJson().ToString(); switch (_Confluenceres) { case "-1": //不通过 WFProcessInstance.IsFinish = 3; break; case "1": //等待 break; default: //通过 WFProcessInstance.PreviousId = WFProcessInstance.ActivityId; WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; WFProcessInstance.ActivityType = wfruntime.runtimeModel.nextNodeType; //-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; WFProcessInstance.IsFinish = (wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0); WFProcessInstance.MakerList = (wfruntime.runtimeModel.nextNodeType == 4 ?"": GetMakerList(wfruntime)); //当前节点可执行的人信息 #region 流转记录 processTransitionHistoryEntity = new WFProcessTransitionHistory(); processTransitionHistoryEntity.FromNodeId = wfruntime.runtimeModel.currentNodeId; processTransitionHistoryEntity.FromNodeName = wfruntime.runtimeModel.currentNode.name.Value; processTransitionHistoryEntity.FromNodeType = wfruntime.runtimeModel.currentNodeType; processTransitionHistoryEntity.ToNodeId = wfruntime.runtimeModel.nextNodeId; processTransitionHistoryEntity.ToNodeName = wfruntime.runtimeModel.nextNode.name.Value; processTransitionHistoryEntity.ToNodeType = wfruntime.runtimeModel.nextNodeType; processTransitionHistoryEntity.TransitionSate = 0; processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); #endregion if (wfruntime.runtimeModel.currentNode.setInfo != null && wfruntime.runtimeModel.currentNode.setInfo.NodeSQL != null) { _sqlstr = wfruntime.runtimeModel.currentNode.setInfo.NodeSQL.Value; _dbbaseId = wfruntime.runtimeModel.currentNode.setInfo.NodeDataBaseToSQL.Value; } break; } } else { throw (new Exception("审核异常,找不到审核节点")); } } #endregion #region 一般审核 else//一般审核 { if (flag) { wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, 1, AuthUtil.GetCurrentUser().User.Id.ToString(), description); WFProcessInstance.PreviousId = WFProcessInstance.ActivityId; WFProcessInstance.ActivityId = wfruntime.runtimeModel.nextNodeId; WFProcessInstance.ActivityType = wfruntime.runtimeModel.nextNodeType; //-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束 WFProcessInstance.ActivityName = wfruntime.runtimeModel.nextNode.name; WFProcessInstance.MakerList = wfruntime.runtimeModel.nextNodeType == 4 ? "" : GetMakerList(wfruntime); //当前节点可执行的人信息 WFProcessInstance.IsFinish = (wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0); #region 流转记录 processTransitionHistoryEntity = new WFProcessTransitionHistory { FromNodeId = wfruntime.runtimeModel.currentNodeId, FromNodeName = wfruntime.runtimeModel.currentNode.name.Value, FromNodeType = wfruntime.runtimeModel.currentNodeType, ToNodeId = wfruntime.runtimeModel.nextNodeId, ToNodeName = wfruntime.runtimeModel.nextNode.name.Value, ToNodeType = wfruntime.runtimeModel.nextNodeType, TransitionSate = 0 }; processTransitionHistoryEntity.IsFinish = (processTransitionHistoryEntity.ToNodeType == 4 ? 1 : 0); #endregion if (wfruntime.runtimeModel.currentNode.setInfo != null && wfruntime.runtimeModel.currentNode.setInfo.NodeSQL != null) { _sqlstr = wfruntime.runtimeModel.currentNode.setInfo.NodeSQL.Value; _dbbaseId = wfruntime.runtimeModel.currentNode.setInfo.NodeDataBaseToSQL.Value; } WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】同意,备注:" + description; } else { WFProcessInstance.IsFinish = 3; //表示该节点不同意 wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, -1, AuthUtil.GetUserName(), description); WFProcessOperationHistory.Content = "【" + "todo name" + "】【" + wfruntime.runtimeModel.currentNode.name + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】不同意,备注:" + description; } var data = new { SchemeContent = wfruntime.runtimeModel.schemeContentJson.ToString(), frmData = wfruntime.runtimeModel.frmData }; WFProcessScheme.SchemeContent = data.ToJson(); } #endregion _res = true; SaveProcess(_sqlstr, _dbbaseId, WFProcessInstance, WFProcessScheme, WFProcessOperationHistory, processTransitionHistoryEntity); return(_res); } catch { throw; } }
public string Load(string type, int pageCurrent = 1, int pageSize = 30) { return(JsonHelper.Instance.Serialize(_app.Load(AuthUtil.GetCurrentUser().User.Id.ToString(), type, pageCurrent, pageSize))); }
public string LoadOrg() { return(JsonHelper.Instance.Serialize(AuthUtil.GetCurrentUser().Orgs)); }
public string GetNavBar() { var user = AuthUtil.GetCurrentUser(); return(BuilderNavBar(user.ModuleWithChildren)); }
/// <summary> /// 加载当前登录用户可访问的一个部门及子部门全部用户 /// </summary> public TableData Load(QueryUserListReq request) { var loginUser = AuthUtil.GetCurrentUser(); string cascadeId = ".0."; if (!string.IsNullOrEmpty(request.orgId)) { var org = loginUser.Orgs.SingleOrDefault(u => u.Id == request.orgId); cascadeId = org.CascadeId; } var ids = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id).ToArray(); var userIds = ReleManagerApp.Get(Define.USERORG, false, ids); Expression <Func <User, bool> > where = p => true; if (!string.IsNullOrEmpty(request.key)) { where = i => i.Name.Contains(request.key); } Expression <Func <User, bool> > where1 = p => true; Expression <Func <User, bool> > where2 = p => true; if (request.UserStatus > 0) { if (request.UserStatus == 2) { where1 = i => i.Status == 0; where2 = i => i.Status == 0 && userIds.Contains(i.Id); } else if (request.UserStatus == 3) { where1 = i => i.Status == 0 || i.Status == 1; where2 = i => (i.Status == 0 || i.Status == 1) && userIds.Contains(i.Id); } else { where1 = i => i.Status == 1; where2 = i => i.Status == 1 && userIds.Contains(i.Id); } } var users = UnitWork.Find <User>(u => userIds.Contains(u.Id)).Where(where).Where(where1) .OrderBy(u => u.Name) .Skip((request.page - 1) * request.limit) .Take(request.limit); var records = Repository.GetCount(where2); var userviews = new List <UserView>(); foreach (var user in users.ToList()) { UserView uv = user; var orgs = LoadByUser(user.Id); uv.Organizations = string.Join(",", orgs.Select(u => u.Name).ToList()); uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList()); userviews.Add(uv); } return(new TableData { count = records, data = userviews, }); }
/// <summary> /// 加载一个节点下面的所有 /// </summary> public dynamic Load(int parentId, int pageindex, int pagesize) { return(_moduleManService.Load(AuthUtil.GetCurrentUser().User.Account, parentId, pageindex, pagesize)); }
public string LoadModule() { var orgs = AuthUtil.GetCurrentUser().Modules.MapToList <ModuleView>(); return(JsonHelper.Instance.Serialize(orgs)); }