public TaskActionResultDto SendFirst(TaskSendDto input) { TaskActionResultDto actionResult = new TaskActionResultDto(); var task = _repository.FirstOrDefault(x => x.TenantId == AbpSession.TenantId && x.InstanceCode == input.InstanceCode); if (task == null) { throw new Abp.UI.UserFriendlyException("TaskInstanceIsNotExists."); } var originator = task.Originator; var phases = _repoPhase.GetAllList(x => x.TenantId == AbpSession.TenantId && x.TaskCode == task.TaskCode).OrderBy(x => x.PhaseCode).ToList(); var nextPhase = phases.FirstOrDefault(x => int.Parse(x.PhaseCode) > int.Parse(task.CurrentPhaseCode)); //查询原记录插入到执行记录 _repoExecute.Insert(new TaskExecuteLog { InstanceCode = task.InstanceCode, PhaseCode = task.CurrentPhaseCode, Actor = originator, HandleResult = "0", Memo = input.Memo, TenantId = AbpSession.TenantId, CreationTime = Abp.Timing.Clock.Now, Creator = originator }); //更新新路由控制 task.CurrentActors = input.NextActors; task.CurrentPhaseCode = nextPhase.PhaseCode; task.LastPhaseHandleTime = Abp.Timing.Clock.Now; task.NeedToCallMiddleService = nextPhase.NeedToCallMiddleService; //如果有StartService的返回调用端继续执行 actionResult.FollowedServiceConfig = task.StartService; //发出通知 //to do actionResult.ResultCode = 1; return(actionResult); }
public TaskActionResultDto Send(TaskSendDto input) { TaskActionResultDto actionResult = new TaskActionResultDto(); var task = _repository.FirstOrDefault(x => x.TenantId == AbpSession.TenantId && x.InstanceCode == input.InstanceCode); if (task == null) { throw new Abp.UI.UserFriendlyException("TaskInstanceIsNotExists."); } var originator = task.Originator; var phases = _repoPhase.GetAllList(x => x.TenantId == AbpSession.TenantId && x.TaskCode == task.TaskCode).OrderBy(x => x.PhaseCode).ToList(); var nextPhase = phases.FirstOrDefault(x => int.Parse(x.PhaseCode) > int.Parse(task.CurrentPhaseCode)); //查询原记录插入到执行记录 var handleResult = input.HandleResult; if (handleResult == "1" && AbpSession.UserName == originator) { handleResult = "0"; } _repoExecute.Insert(new TaskExecuteLog { InstanceCode = task.InstanceCode, PhaseCode = task.CurrentPhaseCode, Actor = AbpSession.UserName, HandleResult = handleResult, Memo = input.Memo, TenantId = AbpSession.TenantId, CreationTime = Abp.Timing.Clock.Now, Creator = originator }); //更新新路由控制 task.LastPhaseHandleTime = Abp.Timing.Clock.Now; if (input.HandleResult == "1") { if (nextPhase != null) { task.CurrentActors = input.NextActors; task.CurrentPhaseCode = nextPhase.PhaseCode; task.Status = "1";//进行中 //当前节点需要调用中间服务时 if (task.NeedToCallMiddleService == true) { actionResult.FollowedServiceConfig = task.PhaseService; } //更新下一节点是否需要调用中间服务 task.NeedToCallMiddleService = nextPhase.NeedToCallMiddleService; } else { task.CurrentActors = ""; task.CurrentPhaseCode = ""; task.Status = "9";//完成 //如果有finalservice actionResult.FollowedServiceConfig = task.FinalService; } } else if (input.HandleResult == "2") { string returnPhase = input.ReturnedActor.Substring(0, 2); string returnActor = input.ReturnedActor.Substring(3); task.CurrentActors = returnActor; task.CurrentPhaseCode = returnPhase; task.Status = "2";//退回 } else if (input.HandleResult == "3") { task.CurrentActors = ""; task.CurrentPhaseCode = ""; task.Status = "6";//终止 actionResult.FollowedServiceConfig = task.AbortService; } //发出通知 //to do actionResult.ResultCode = 1; return(actionResult); }