/// <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()); }