|
@@ -556,7 +556,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
await DuplicateStepWithTraceAsync(workflow, prevStep, EWorkflowTraceStatus.Previous, cancellationToken);
|
|
|
|
|
|
//remove workflow.steps
|
|
|
- await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
|
|
|
+ //await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
|
|
|
+ await _workflowStepRepository.RemoveNav(removeSteps)
|
|
|
+ .Include(d => d.StepHandlers)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
|
|
|
if (workflow.Status is EWorkflowStatus.Completed)
|
|
|
workflow.SetStatusRunnable();
|
|
@@ -635,13 +638,14 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// 批量改变办理对象
|
|
|
/// </summary>
|
|
|
public async Task<ICollection<string>> ChangeHandlerRangeAsync(string sendPoolId,
|
|
|
- IReadOnlyList<(string userId, string username, IReadOnlyList<string> stepIds)> handlers,
|
|
|
+ IReadOnlyList<(string userId, string username, string orgId, string orgName, IReadOnlyList<string> stepIds)> handlers,
|
|
|
CancellationToken cancellationToken)
|
|
|
{
|
|
|
var stepsIds = handlers.SelectMany(d => d.stepIds).ToList();
|
|
|
var steps = await _workflowStepRepository.Queryable()
|
|
|
.Includes(d => d.Workflow)
|
|
|
.Includes(d => d.WorkflowTrace)
|
|
|
+ .Includes(d => d.StepHandlers)
|
|
|
.Where(d => stepsIds.Contains(d.Id))
|
|
|
.ToListAsync(cancellationToken);
|
|
|
foreach (var handler in handlers)
|
|
@@ -656,6 +660,11 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
var thisSteps = steps.Where(d => handler.stepIds.Contains(d.Id)).ToList();
|
|
|
foreach (var thisStep in thisSteps)
|
|
|
{
|
|
|
+ var stepHandler = WorkflowStepHandler.Create(thisStep.Workflow.Id, thisStep.Workflow.ExternalId,
|
|
|
+ thisStep.FlowAssignType ?? EFlowAssignType.User, handler.userId, handler.username, handler.orgId, handler.orgName);
|
|
|
+ thisStep.StepHandlers.Clear();
|
|
|
+ thisStep.StepHandlers.Add(stepHandler);
|
|
|
+
|
|
|
thisStep.Handlers = thisHandlers;
|
|
|
|
|
|
//update trace
|
|
@@ -677,6 +686,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
await _workflowStepRepository.UpdateNav(steps)
|
|
|
.Include(d => d.WorkflowTrace)
|
|
|
.Include(d => d.Workflow)
|
|
|
+ .Include(d=>d.StepHandlers)
|
|
|
.ExecuteCommandAsync();
|
|
|
|
|
|
return steps.Select(d => d.WorkflowId).ToList();
|
|
@@ -1770,7 +1780,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
var removeSteps = GetStepsBehindTargetStep(workflow.Steps, targetStep);
|
|
|
if (removeSteps.Any())
|
|
|
{
|
|
|
- await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
|
|
|
+ //await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
|
|
|
+ await _workflowStepRepository.RemoveNav(removeSteps)
|
|
|
+ .Include(d => d.StepHandlers)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
workflow.Steps.RemoveAll(d => removeSteps.Contains(d));
|
|
|
}
|
|
|
|
|
@@ -1804,7 +1817,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
return isOrgToCenter;
|
|
|
}
|
|
|
|
|
|
- private ICollection<WorkflowStep> GetStepsBehindTargetStep(List<WorkflowStep> steps, WorkflowStep targetStep)
|
|
|
+ private List<WorkflowStep> GetStepsBehindTargetStep(List<WorkflowStep> steps, WorkflowStep targetStep)
|
|
|
{
|
|
|
var behindSteps = new List<WorkflowStep> { targetStep };
|
|
|
if (!steps.Any()) return behindSteps;
|
|
@@ -2054,7 +2067,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
HandleStepsByTerminalCs(startCountersignStep, workflow.Steps, workflow.Traces, ref updateSteps, ref updateTraces);
|
|
|
if (updateSteps.Any())
|
|
|
- await _workflowStepRepository.RemoveRangeAsync(updateSteps, cancellationToken);
|
|
|
+ //await _workflowStepRepository.RemoveRangeAsync(updateSteps, cancellationToken);
|
|
|
+ await _workflowStepRepository.RemoveNav(updateSteps)
|
|
|
+ .Include(d => d.StepHandlers)
|
|
|
+ .ExecuteCommandAsync();
|
|
|
if (updateTraces.Any())
|
|
|
await _workflowTraceRepository.UpdateRangeAsync(updateTraces, cancellationToken);
|
|
|
|