Ejemplo n.º 1
0
        public ActionResult Index()
        {
            var currentUser = AuthUtil.GetCurrentUser();

            ViewBag.CurrentUser = currentUser;
            return(View());
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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("");
        }
Ejemplo n.º 5
0
        static QueryExtensions()
        {
            var userContex = AuthUtil.GetCurrentUser();

            List <string> rights = userContex.Rights.Select(a => a.Name).ToList();

            if (rights.Contains(Rights.ReadAll))
            {
                readAll = true;
            }
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 8
0
        /// <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,
            });
        }
Ejemplo n.º 9
0
 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());
 }
Ejemplo n.º 10
0
        /// <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();
        }
Ejemplo n.º 11
0
        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));
        }
Ejemplo n.º 12
0
        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);
            //}
        }
Ejemplo n.º 13
0
        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);
            }
        }
Ejemplo n.º 14
0
        /// <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,
            });
        }
Ejemplo n.º 15
0
        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());
        }
Ejemplo n.º 16
0
        /// <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,
            });
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        /// <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);
        }
Ejemplo n.º 19
0
        /// <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);
        }
Ejemplo n.º 20
0
        /// <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);
        }
Ejemplo n.º 21
0
        /// <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);
        }
Ejemplo n.º 22
0
        /// <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;
            }
        }
Ejemplo n.º 23
0
        /// <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;
            }
        }
Ejemplo n.º 24
0
 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)));
 }
Ejemplo n.º 25
0
 public string LoadOrg()
 {
     return(JsonHelper.Instance.Serialize(AuthUtil.GetCurrentUser().Orgs));
 }
Ejemplo n.º 26
0
        public string GetNavBar()
        {
            var user = AuthUtil.GetCurrentUser();

            return(BuilderNavBar(user.ModuleWithChildren));
        }
Ejemplo n.º 27
0
        /// <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,
            });
        }
Ejemplo n.º 28
0
 /// <summary>
 /// 加载一个节点下面的所有
 /// </summary>
 public dynamic Load(int parentId, int pageindex, int pagesize)
 {
     return(_moduleManService.Load(AuthUtil.GetCurrentUser().User.Account, parentId, pageindex, pagesize));
 }
Ejemplo n.º 29
0
        public string LoadModule()
        {
            var orgs = AuthUtil.GetCurrentUser().Modules.MapToList <ModuleView>();

            return(JsonHelper.Instance.Serialize(orgs));
        }