|
@@ -434,7 +434,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
_sessionContext.OrgAreaCode, _sessionContext.OrgAreaName,
|
|
_sessionContext.OrgAreaCode, _sessionContext.OrgAreaName,
|
|
_sessionContext.OrgLevel);
|
|
_sessionContext.OrgLevel);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
//检查是否流转到流程终点
|
|
//检查是否流转到流程终点
|
|
if (nextStepDefine.StepType is EStepType.End)
|
|
if (nextStepDefine.StepType is EStepType.End)
|
|
{
|
|
{
|
|
@@ -550,10 +550,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
await DuplicateStepWithTraceAsync(workflow, prevStep, EWorkflowTraceStatus.Previous, cancellationToken);
|
|
await DuplicateStepWithTraceAsync(workflow, prevStep, EWorkflowTraceStatus.Previous, cancellationToken);
|
|
|
|
|
|
//remove workflow.steps
|
|
//remove workflow.steps
|
|
- //await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
|
|
|
|
- await _workflowStepRepository.RemoveNav(removeSteps)
|
|
|
|
- .Include(d => d.StepHandlers)
|
|
|
|
- .ExecuteCommandAsync();
|
|
|
|
|
|
+ await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
|
|
|
|
+ //await _workflowStepRepository.RemoveNav(removeSteps)
|
|
|
|
+ // .Include(d => d.StepHandlers)
|
|
|
|
+ // .ExecuteCommandAsync();
|
|
|
|
|
|
if (workflow.Status is EWorkflowStatus.Completed)
|
|
if (workflow.Status is EWorkflowStatus.Completed)
|
|
workflow.SetStatusRunnable();
|
|
workflow.SetStatusRunnable();
|
|
@@ -680,7 +680,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
await _workflowStepRepository.UpdateNav(steps)
|
|
await _workflowStepRepository.UpdateNav(steps)
|
|
.Include(d => d.WorkflowTrace)
|
|
.Include(d => d.WorkflowTrace)
|
|
.Include(d => d.Workflow)
|
|
.Include(d => d.Workflow)
|
|
- .Include(d=>d.StepHandlers)
|
|
|
|
|
|
+ .Include(d => d.StepHandlers)
|
|
.ExecuteCommandAsync();
|
|
.ExecuteCommandAsync();
|
|
|
|
|
|
return steps.Select(d => d.WorkflowId).ToList();
|
|
return steps.Select(d => d.WorkflowId).ToList();
|
|
@@ -697,7 +697,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
d.StepHandlers.Any(d =>
|
|
d.StepHandlers.Any(d =>
|
|
!string.IsNullOrEmpty(d.OrgId) && d.OrgId.CheckIfOrgLevelIs(1)))
|
|
!string.IsNullOrEmpty(d.OrgId) && d.OrgId.CheckIfOrgLevelIs(1)))
|
|
.Select(d => new Kv(d.StepHandlers.First().OrgId, d.StepHandlers.First().OrgName))
|
|
.Select(d => new Kv(d.StepHandlers.First().OrgId, d.StepHandlers.First().OrgName))
|
|
- .ToList();
|
|
|
|
|
|
+ .ToList();
|
|
return list.Where((x, i) => list.FindIndex(z => z.Key == x.Key) == i).ToList();
|
|
return list.Where((x, i) => list.FindIndex(z => z.Key == x.Key) == i).ToList();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1052,21 +1052,6 @@ namespace Hotline.FlowEngine.Workflows
|
|
await _mediator.Publish(new CancelWorkflowNotify(workflow), cancellationToken);
|
|
await _mediator.Publish(new CancelWorkflowNotify(workflow), cancellationToken);
|
|
}
|
|
}
|
|
|
|
|
|
- ///// <summary>
|
|
|
|
- ///// 更新期满时间
|
|
|
|
- ///// </summary>
|
|
|
|
- //public async Task UpdateExpiredTimeAsync(Workflow workflow, DateTime expiredTime, string timelimit,
|
|
|
|
- // int? timelimiteCount,
|
|
|
|
- // ETimeType? timelimitUnit, DateTime nearlyExpiredTime, CancellationToken cancellationToken)
|
|
|
|
- //{
|
|
|
|
- // workflow.ExpiredTime = expiredTime;
|
|
|
|
- // workflow.NearlyExpiredTime = nearlyExpiredTime;
|
|
|
|
- // workflow.TimeLimit = timelimit;
|
|
|
|
- // workflow.TimeLimitUnit = timelimitUnit;
|
|
|
|
- // workflow.TimeLimitCount = timelimiteCount;
|
|
|
|
- // await _workflowRepository.UpdateAsync(workflow, cancellationToken);
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 新增流程流转记录
|
|
/// 新增流程流转记录
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -1297,8 +1282,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
else
|
|
else
|
|
{
|
|
{
|
|
// csStartStep.prev
|
|
// csStartStep.prev
|
|
- var csStartStep =
|
|
|
|
- workflow.Steps.FirstOrDefault(d => d.Id == currentStep.CountersignStartStepId);
|
|
|
|
|
|
+ var csStartStep = workflow.Steps.FirstOrDefault(d => d.Id == currentStep.CountersignStartStepId);
|
|
if (csStartStep is null)
|
|
if (csStartStep is null)
|
|
throw new UserFriendlyException("未查询到会签节点");
|
|
throw new UserFriendlyException("未查询到会签节点");
|
|
|
|
|
|
@@ -1364,7 +1348,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
_ => throw new ArgumentOutOfRangeException()
|
|
_ => throw new ArgumentOutOfRangeException()
|
|
};
|
|
};
|
|
|
|
|
|
- return await CreateStepsAsync(workflow, nextStepDefine, prevStep, dto,
|
|
|
|
|
|
+ return await CreateStepsAsync(workflow, nextStepDefine, prevStep, dto, dto.IsStartCountersign,
|
|
flowAssignInfo.FlowAssignType, dto.NextHandlers, stepHandlers, null, EWorkflowStepStatus.WaitForAccept,
|
|
flowAssignInfo.FlowAssignType, dto.NextHandlers, stepHandlers, null, EWorkflowStepStatus.WaitForAccept,
|
|
ECountersignPosition.None, false, EWorkflowTraceStatus.Normal, handlerType, expiredTime,
|
|
ECountersignPosition.None, false, EWorkflowTraceStatus.Normal, handlerType, expiredTime,
|
|
cancellationToken: cancellationToken);
|
|
cancellationToken: cancellationToken);
|
|
@@ -1393,8 +1377,8 @@ namespace Hotline.FlowEngine.Workflows
|
|
_ => throw new ArgumentOutOfRangeException()
|
|
_ => throw new ArgumentOutOfRangeException()
|
|
};
|
|
};
|
|
|
|
|
|
- return CreateStepsAsync(workflow, stepDefine, prevStep, dto, flowAssignType, dto.NextHandlers, stepHandlers,
|
|
|
|
- countersignId, EWorkflowStepStatus.WaitForAccept, prevStep.GetNextStepCountersignPosition(),
|
|
|
|
|
|
+ return CreateStepsAsync(workflow, stepDefine, prevStep, dto, true, flowAssignType, dto.NextHandlers,
|
|
|
|
+ stepHandlers, countersignId, EWorkflowStepStatus.WaitForAccept, prevStep.GetNextStepCountersignPosition(),
|
|
false, EWorkflowTraceStatus.Normal, handlerType, expiredTime, cancellationToken: cancellationToken);
|
|
false, EWorkflowTraceStatus.Normal, handlerType, expiredTime, cancellationToken: cancellationToken);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1775,10 +1759,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
var removeSteps = GetStepsBehindTargetStep(workflow.Steps, targetStep);
|
|
var removeSteps = GetStepsBehindTargetStep(workflow.Steps, targetStep);
|
|
if (removeSteps.Any())
|
|
if (removeSteps.Any())
|
|
{
|
|
{
|
|
- //await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
|
|
|
|
- await _workflowStepRepository.RemoveNav(removeSteps)
|
|
|
|
- .Include(d => d.StepHandlers)
|
|
|
|
- .ExecuteCommandAsync();
|
|
|
|
|
|
+ await _workflowStepRepository.RemoveRangeAsync(removeSteps, cancellationToken);
|
|
|
|
+ //await _workflowStepRepository.RemoveNav(removeSteps)
|
|
|
|
+ // .Include(d => d.StepHandlers)
|
|
|
|
+ // .ExecuteCommandAsync();
|
|
workflow.Steps.RemoveAll(d => removeSteps.Contains(d));
|
|
workflow.Steps.RemoveAll(d => removeSteps.Contains(d));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1790,7 +1774,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
var targetStepNew = targetIsStartStep
|
|
var targetStepNew = targetIsStartStep
|
|
? await CreateStartStepAsync(workflow, targetStepDefine, dto, dto.NextHandlers, stepHandlers, traceStatus, expiredTime,
|
|
? await CreateStartStepAsync(workflow, targetStepDefine, dto, dto.NextHandlers, stepHandlers, traceStatus, expiredTime,
|
|
cancellationToken)
|
|
cancellationToken)
|
|
- : (await CreateStepsAsync(workflow, targetStepDefine, targetPrevStep, dto,
|
|
|
|
|
|
+ : (await CreateStepsAsync(workflow, targetStepDefine, targetPrevStep, dto, false,
|
|
flowAssignInfo.FlowAssignType, dto.NextHandlers, stepHandlers,
|
|
flowAssignInfo.FlowAssignType, dto.NextHandlers, stepHandlers,
|
|
null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None, true, traceStatus,
|
|
null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None, true, traceStatus,
|
|
null, expiredTime, cancellationToken: cancellationToken)).First();
|
|
null, expiredTime, cancellationToken: cancellationToken)).First();
|
|
@@ -1801,7 +1785,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
//calc workflow expired time
|
|
//calc workflow expired time
|
|
var isOrgToCenter = CheckIfFlowFromOrgToCenter(workflow, targetStep);
|
|
var isOrgToCenter = CheckIfFlowFromOrgToCenter(workflow, targetStep);
|
|
-
|
|
|
|
|
|
+
|
|
return isOrgToCenter;
|
|
return isOrgToCenter;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1898,8 +1882,9 @@ namespace Hotline.FlowEngine.Workflows
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- return await CreateStepsAsync(workflow, stepDefine, prevStep, dto, flowAssignInfo.FlowAssignType, handlers,
|
|
|
|
- stepHandlers, null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None,
|
|
|
|
|
|
+ return await CreateStepsAsync(workflow, stepDefine, prevStep, dto, dto.IsStartCountersign,
|
|
|
|
+ flowAssignInfo.FlowAssignType, handlers, stepHandlers, null,
|
|
|
|
+ EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None,
|
|
true, traceStatus, null, expiredTime, cancellationToken);
|
|
true, traceStatus, null, expiredTime, cancellationToken);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1908,6 +1893,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
StepDefine stepDefine,
|
|
StepDefine stepDefine,
|
|
WorkflowStep prevStep,
|
|
WorkflowStep prevStep,
|
|
BasicWorkflowDto dto,
|
|
BasicWorkflowDto dto,
|
|
|
|
+ bool isStartCountersign,
|
|
EFlowAssignType? flowAssignType,
|
|
EFlowAssignType? flowAssignType,
|
|
List<Kv> handlers,
|
|
List<Kv> handlers,
|
|
List<WorkflowStepHandler> stepHandlers,
|
|
List<WorkflowStepHandler> stepHandlers,
|
|
@@ -1922,7 +1908,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
)
|
|
)
|
|
{
|
|
{
|
|
List<WorkflowStep> steps = new();
|
|
List<WorkflowStep> steps = new();
|
|
- if (dto.IsStartCountersign)
|
|
|
|
|
|
+ if (isStartCountersign)
|
|
{
|
|
{
|
|
foreach (var handler in handlers)
|
|
foreach (var handler in handlers)
|
|
{
|
|
{
|
|
@@ -2055,10 +2041,10 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
HandleStepsByTerminalCs(startCountersignStep, workflow.Steps, workflow.Traces, ref updateSteps, ref updateTraces);
|
|
HandleStepsByTerminalCs(startCountersignStep, workflow.Steps, workflow.Traces, ref updateSteps, ref updateTraces);
|
|
if (updateSteps.Any())
|
|
if (updateSteps.Any())
|
|
- //await _workflowStepRepository.RemoveRangeAsync(updateSteps, cancellationToken);
|
|
|
|
- await _workflowStepRepository.RemoveNav(updateSteps)
|
|
|
|
- .Include(d => d.StepHandlers)
|
|
|
|
- .ExecuteCommandAsync();
|
|
|
|
|
|
+ await _workflowStepRepository.RemoveRangeAsync(updateSteps, cancellationToken);
|
|
|
|
+ //await _workflowStepRepository.RemoveNav(updateSteps)
|
|
|
|
+ // .Include(d => d.StepHandlers)
|
|
|
|
+ // .ExecuteCommandAsync();
|
|
if (updateTraces.Any())
|
|
if (updateTraces.Any())
|
|
await _workflowTraceRepository.UpdateRangeAsync(updateTraces, cancellationToken);
|
|
await _workflowTraceRepository.UpdateRangeAsync(updateTraces, cancellationToken);
|
|
|
|
|