Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }