|
@@ -809,6 +809,44 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 流程被签收至某个用户(更新流转对象,办理对象,节点办理对象以及stepHandlers)
|
|
|
+ /// </summary>
|
|
|
+ public async Task<Workflow> SignToSomebodyAsync(string workflowId, string userId, string username, string orgId, string orgName, CancellationToken cancellationToken)
|
|
|
+ {
|
|
|
+ var workflow = await GetWorkflowAsync(workflowId, withSteps: true, cancellationToken: cancellationToken);
|
|
|
+ workflow.Assign(EFlowAssignType.User, _sessionContext.RequiredUserId);
|
|
|
+
|
|
|
+ workflow.HandlerOrgs = new();
|
|
|
+ workflow.HandlerUsers = new List<HandlerGroupItem>
|
|
|
+ {
|
|
|
+ new()
|
|
|
+ {
|
|
|
+ GroupId = Guid.NewGuid().ToString(),
|
|
|
+ Key = userId,
|
|
|
+ Value = username
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ var startStep = workflow.Steps.First(d => d.StepType == EStepType.Start && d.IsOrigin);
|
|
|
+ startStep.Handlers = new List<Kv> { new(userId, username) };
|
|
|
+
|
|
|
+ var stepHandler = startStep.StepHandlers.First();
|
|
|
+ startStep.StepHandlers.RemoveAll(d => d.Id != stepHandler.Id);
|
|
|
+ stepHandler.UserId = userId;
|
|
|
+ stepHandler.Username = username;
|
|
|
+ stepHandler.OrgId = orgId;
|
|
|
+ stepHandler.OrgName = orgName;
|
|
|
+
|
|
|
+ await _workflowStepRepository.UpdateNav(startStep)
|
|
|
+ .Include(d => d.StepHandlers)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
+
|
|
|
+ await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
|
+
|
|
|
+ return workflow;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 查找当前会签内所有节点(含start,end)
|
|
|
/// </summary>
|