/// <summary> /// 办结任务 /// </summary> /// <param name="task">当前任务Dto</param> /// <returns>业务操作结果</returns> protected OperationResult ExecuteCompleted(FlowExecuteDto task) { OperationResult re = new OperationResult(OperationResultType.NoChanged, "办结未做处理!"); var currentTask = FlowTaskRepository.Entities.SingleOrDefault(c => c.Id == task.TaskId); if (currentTask != null) { var currentItem = FlowItemRepository.Entities.Single(c => c.Id == currentTask.FlowItemId); currentItem.Status = 1; currentItem.CompletedTime = DateTime.Now; currentTask.Comment = task.Comment; currentTask.TaskNote = task.Note; currentTask.Status = 10; currentTask.CompletedTime = DateTime.Now; FlowTaskRepository.UnitOfWork.TransactionEnabled = true; //事务处理 if (currentTask.IsArchive) { FlowArchiveRepository.Insert(new WorkFlowArchive() { Id = CombHelper.NewComb(), FlowItemId = currentTask.FlowItemId, CreatorUserName = task.SenderName }); } FlowTaskRepository.Update(currentTask); FlowItemRepository.Update(currentItem); FlowTaskRepository.UnitOfWork.SaveChanges(); re = new OperationResult(OperationResultType.Success, "成功办结!"); } return(re); }
/// <summary> /// 创建第一个任务 /// </summary> /// <param name="task">当前任务Dto</param> /// <returns>业务操作结果</returns> protected OperationResult CreateFirstTask(FlowExecuteDto task) { OperationResult re = CheckFlow(task.FlowId, task.EntityId); if (re.ResultType == OperationResultType.Success) { var firstStep = FlowStepRepository.Entities.Where(c => c.FlowDesignId == task.FlowId && c.StepType == 0).Select(m => new { m.StepId, m.StepName }).SingleOrDefault(); //起始步骤 var flowItemId = CombHelper.NewComb(); var id = CombHelper.NewComb(); WorkFlowTask taskModel = new WorkFlowTask() { Id = id, FlowItemId = flowItemId, PrevStepId = -1, StepId = firstStep.StepId, StepName = firstStep.StepName, SenderId = task.SenderId, SenderName = task.SenderName, ReceiverId = task.SenderId, ReceiverName = task.SenderName, CreatedTime = DateTime.Now, IsComment = false, IsSeal = false, IsArchive = false, Status = 1 }; var model = new WorkFlowItem() { Id = flowItemId, FlowDesignId = task.FlowId, EntityId = task.EntityId, EntityName = task.Title, CreatorUserId = task.SenderId, CreatorUserName = task.SenderName, //StepDay,DelayDay,HandleDay 用触发器保证数据正确性 Status = 0 }; model.Tasks.Add(taskModel); FlowItemRepository.Insert(model); re = new OperationResult(OperationResultType.Success, "流程启动成功!"); //re.Data = taskModel; } return(re); }