/// <summary>
        /// 获取申请单流程
        /// </summary>
        /// <param name="dbContext">数据库上下文对象</param>
        /// <param name="order">申请单</param>
        /// <param name="curUser">当前用户</param>
        /// <param name="operation">操作</param>
        /// <returns>流程对象</returns>
        private WorkflowModel GetWorkflow(MissionskyOAEntities dbContext, OrderModel order, UserModel curUser, OperateOrderModel operation)
        {
            var searchWorkflow = new SearchWorkflowModel();

            if (operation.Operation == WorkflowOperation.Apply) //申请
            {
                //获取流程Id
                searchWorkflow.WorkflowId = MatchWorkflow(dbContext, order, curUser); //匹配当前用户满足条件的申请流程
            }
            else
            {
                if (!order.WorkflowId.HasValue)
                {
                    Log.Error("无效的申请单流程。");
                    throw new InvalidOperationException("无效的申请单流程。");
                }

                searchWorkflow.WorkflowId = order.WorkflowId.Value;
            }

            var workflow = _workflowService.GetWorkflowDetail(dbContext, searchWorkflow.WorkflowId); //流程

            if (workflow == null)
            {
                Log.Error("找不到申请流程。");
                throw new KeyNotFoundException("找不到申请流程。");
            }

            return(workflow);
        }
        public ApiResponse <WorkflowModel> GetSingleWorkflow(SearchWorkflowModel model)
        {
            if (model == null || (model.Type == WorkflowType.None && model.WorkflowId < 1 && string.IsNullOrEmpty(model.Name)))
            {
                throw new KeyNotFoundException("Invalid query parameter");
            }

            return(new ApiResponse <WorkflowModel>
            {
                Result = this.WorkflowService.GetSingleWorkflow(model)
            });
        }
        /// <summary>
        /// 查找单个流程
        /// </summary>
        /// <param name="dbContext">数据库上下文</param>
        /// <param name="model">查询条件模型</param>
        /// <returns>单个流程</returns>
        public WorkflowModel GetSingleWorkflow(MissionskyOAEntities dbContext, SearchWorkflowModel model)
        {
            if (dbContext == null)
            {
                throw new NullReferenceException("Invalid db context for get single workflow.");
            }

            if (model == null)
            {
                throw new NullReferenceException("Invalid workflow search model for get single workflow.");
            }

            //1. 默认查询所有状态的流程 || 查询启用或禁用的流程
            var query =
                dbContext.Workflows.Where(
                    it => model.Status == WorkflowStatus.None || it.Status == (model.Status == WorkflowStatus.Enabled));

            //2. 查询所有的流程 || 指定流程名的流程
            query = query.Where(it => string.IsNullOrEmpty(model.Name) || it.Name.Contains(model.Name));

            //3. 查询所有的流程 || 指定流程ID的流程
            query = query.Where(it => model.WorkflowId < 1 || it.Id == model.WorkflowId);

            //4. 查询所有的流程 || 指定流程类型的流程
            query = query.Where(it => model.Type == WorkflowType.None || it.Type == (int)model.Type);

            //5. 查询单个流程
            var entity = query.FirstOrDefault();

            if (entity == null)
            {
                throw new KeyNotFoundException("Invalid query");
            }

            if (entity.WorkflowSteps == null)
            {
                var steps = dbContext.WorkflowSteps.Where(it => it.FlowId == entity.Id).OrderBy(it => it.Id);

                if (steps != null)
                {
                    entity.WorkflowSteps = steps.ToList();
                }
            }

            return(entity.ToModel());
        }