|
@@ -28,6 +28,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
private readonly IRepository<WorkflowTrace> _workflowTraceRepository;
|
|
|
private readonly IRepository<WorkflowSupplement> _workflowSupplementRepository;
|
|
|
private readonly IRepository<WorkflowCountersign> _workflowCountersignRepository;
|
|
|
+ private readonly IRepository<WorkflowStepHandler> _workflowStepHandlerRepository;
|
|
|
private readonly ISessionContext _sessionContext;
|
|
|
private readonly IMapper _mapper;
|
|
|
private readonly IMediator _mediator;
|
|
@@ -41,6 +42,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
IRepository<WorkflowTrace> workflowTraceRepository,
|
|
|
IRepository<WorkflowSupplement> workflowSupplementRepository,
|
|
|
IRepository<WorkflowCountersign> workflowCountersignRepository,
|
|
|
+ IRepository<WorkflowStepHandler> workflowStepHandlerRepository,
|
|
|
ISessionContext sessionContext,
|
|
|
IMapper mapper,
|
|
|
IMediator mediator,
|
|
@@ -52,6 +54,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
_workflowTraceRepository = workflowTraceRepository;
|
|
|
_workflowSupplementRepository = workflowSupplementRepository;
|
|
|
_workflowCountersignRepository = workflowCountersignRepository;
|
|
|
+ _workflowStepHandlerRepository = workflowStepHandlerRepository;
|
|
|
_sessionContext = sessionContext;
|
|
|
_mapper = mapper;
|
|
|
_mediator = mediator;
|
|
@@ -705,14 +708,24 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
/// </summary>
|
|
|
public async Task<ICollection<Kv>> GetLevelOneOrgsAsync(string workflowId, CancellationToken cancellation)
|
|
|
{
|
|
|
- var workflow = await GetWorkflowAsync(workflowId, withSteps: true, cancellationToken: cancellation);
|
|
|
- var list = workflow.Steps.Distinct().Where(d => d.BusinessType == EBusinessType.Department &&
|
|
|
- d.HandlerType == EHandlerType.OrgLevel &&
|
|
|
- d.StepHandlers.Any(d =>
|
|
|
- !string.IsNullOrEmpty(d.OrgId) && d.OrgId.CheckIfOrgLevelIs(1)))
|
|
|
- .Select(d => new Kv(d.StepHandlers.First().OrgId, d.StepHandlers.First().OrgName))
|
|
|
- .ToList();
|
|
|
- return list.Where((x, i) => list.FindIndex(z => z.Key == x.Key) == i).ToList();
|
|
|
+ return await _workflowStepHandlerRepository.Queryable()
|
|
|
+ .LeftJoin<WorkflowTrace>((wsh, wt) => wsh.WorkflowStepId == wt.StepId)
|
|
|
+ .Where((wsh, wt) => wsh.WorkflowId == workflowId &&
|
|
|
+ wt.BusinessType == EBusinessType.Department &&
|
|
|
+ wt.HandlerType == EHandlerType.OrgLevel &&
|
|
|
+ !string.IsNullOrEmpty(wsh.OrgId) && wsh.OrgId.CheckIfOrgLevelIs(1))
|
|
|
+ .Select((wsh, wt) => new Kv(wsh.OrgId, wsh.OrgName))
|
|
|
+ .Distinct()
|
|
|
+ .ToListAsync(cancellation);
|
|
|
+
|
|
|
+ //var workflow = await GetWorkflowAsync(workflowId, withSteps: true, cancellationToken: cancellation);
|
|
|
+ //var list = workflow.Steps.Distinct().Where(d => d.BusinessType == EBusinessType.Department &&
|
|
|
+ // d.HandlerType == EHandlerType.OrgLevel &&
|
|
|
+ // d.StepHandlers.Any(d =>
|
|
|
+ // !string.IsNullOrEmpty(d.OrgId) && d.OrgId.CheckIfOrgLevelIs(1)))
|
|
|
+ // .Select(d => new Kv(d.StepHandlers.First().OrgId, d.StepHandlers.First().OrgName))
|
|
|
+ // .ToList();
|
|
|
+ //return list.Where((x, i) => list.FindIndex(z => z.Key == x.Key) == i).ToList();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|