public Deskwork CreateStep(DeskworkStep step) { EnsureActive(); if (Steps.Count > 0) { var last = Steps.OrderBy(x => x.Id).Last(); if (!last.Done) { throw new UserFriendlyException("请首先完成上一个流程"); } } Steps.Add(step); DomainEvents.Add(new StepChangeEventData()); return(this); }
public async Task <bool> FinishStep(FinishStepInput input) { var work = await _workRepository.GetAllIncluding(x => x.Steps) .FirstOrDefaultAsync(x => x.Id == input.WorkId); EnsureWorkActive(work); DeskworkStep next = null; if (input.ReceiverId != null) { var receiver = await UserCache.GetAsync(input.ReceiverId.Value); next = new DeskworkStep(AbpSession.UserId.Value, AbpSession.GetCurrentUser().Name, receiver.Id, receiver.Name, receiver.OrganizationUnitName ); } work.CompleteStep(AbpSession.UserId.Value, input.StepId, input.Result, next); return(true); }
public Deskwork CompleteStep(long currentUserId, long currentStepId, string result, DeskworkStep next) { EnsureActive(); var currentStep = Steps.Single(x => x.Id == currentStepId); if (!currentStep.Done) { throw new UserFriendlyException("当前流程已结束"); } if (currentStep.ReceiverId != currentUserId) { throw new UserFriendlyException("不能完成他人的流程"); } currentStep.Complete(result); if (next == null) { // 没有转交给他人,直接完成当前工单 Complete(); } else { CreateStep(next); } return(this); }