|
@@ -69,8 +69,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
var nextStepBoxDefine = _workflowDomainService.GetStepBoxDefine(definition, dto.NextStepCode);
|
|
|
var workflow = await _workflowDomainService.CreateWorkflowAsync(definition, dto.Title, externalId, cancellationToken);
|
|
|
|
|
|
- var flowAssignMode = await GetFlowAssignModeAsync(nextStepBoxDefine,
|
|
|
- dto.NextHandlers.Select(d => d.Id).ToList(), cancellationToken);
|
|
|
+ var flowAssignMode = await GetFlowAssignModeAsync(nextStepBoxDefine, dto.NextHandlers, cancellationToken);
|
|
|
|
|
|
await _workflowDomainService.StartAsync(workflow, dto, nextStepBoxDefine, flowAssignMode, cancellationToken);
|
|
|
|
|
@@ -101,8 +100,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
//if (isStartCountersign && nextStepBoxDefine.StepType is EStepType.CountersignEnd)
|
|
|
// throw UserFriendlyException.SameMessage("汇总节点不允许发起会签");
|
|
|
|
|
|
- var flowAssignMode = await GetFlowAssignModeAsync(nextStepBoxDefine,
|
|
|
- dto.NextHandlers.Select(d => d.Id).ToList(), cancellationToken);
|
|
|
+ var flowAssignMode = await GetFlowAssignModeAsync(nextStepBoxDefine, dto.NextHandlers, cancellationToken);
|
|
|
|
|
|
await _workflowDomainService.NextAsync(workflow, dto, nextStepBoxDefine, isOutOfCallCenter, flowAssignMode, cancellationToken);
|
|
|
|
|
@@ -136,27 +134,46 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
/// <summary>
|
|
|
/// 查询指派办理人的处理方式及实际办理人
|
|
|
/// </summary>
|
|
|
- public async Task<FlowAssignMode> GetFlowAssignModeAsync(StepDefine stepDefine, List<string> handlers, CancellationToken cancellationToken)
|
|
|
+ public async Task<FlowAssignMode> GetFlowAssignModeAsync(StepDefine stepDefine, List<IdName> handlers, CancellationToken cancellationToken)
|
|
|
{
|
|
|
+ if (stepDefine.StepType is EStepType.Start or EStepType.End) return default;
|
|
|
switch (stepDefine.HandlerType)
|
|
|
{
|
|
|
case EHandlerType.Role:
|
|
|
if (!handlers.Any())
|
|
|
{
|
|
|
var roles = await _roleRepository.Queryable()
|
|
|
- .Includes(d => d.Accounts)
|
|
|
+ .Includes(d => d.Accounts, x => x.User)
|
|
|
.Where(d => stepDefine.HandlerClassifies.Select(d => d.Id).Contains(d.Name))
|
|
|
.ToListAsync();
|
|
|
- handlers = roles.SelectMany(d => d.Accounts).Select(d => d.Id).Distinct().ToList();
|
|
|
+ handlers = roles.SelectMany(d => d.Accounts).Distinct().Select(d => new IdName(d.Id, d.User.Name)).ToList();
|
|
|
}
|
|
|
|
|
|
- return new FlowAssignMode(EFlowAssignType.User, handlers);
|
|
|
+ return new FlowAssignMode(EFlowAssignType.User, new HandlerObjects
|
|
|
+ {
|
|
|
+ UserGroups = new List<HandlerUserGroup>
|
|
|
+ {
|
|
|
+ new HandlerUserGroup{ HandlerUsers = handlers }
|
|
|
+ }
|
|
|
+ });
|
|
|
case EHandlerType.OrgLevel:
|
|
|
case EHandlerType.OrgType:
|
|
|
case EHandlerType.AssignOrg:
|
|
|
- return new FlowAssignMode(EFlowAssignType.Org, handlers);
|
|
|
+ return new FlowAssignMode(EFlowAssignType.Org, new HandlerObjects
|
|
|
+ {
|
|
|
+ OrgGroups = new List<HandlerOrgGroup>
|
|
|
+ {
|
|
|
+ new HandlerOrgGroup{ HandlerOrgs = handlers }
|
|
|
+ }
|
|
|
+ });
|
|
|
case EHandlerType.AssignUser:
|
|
|
- return new FlowAssignMode(EFlowAssignType.User, handlers);
|
|
|
+ return new FlowAssignMode(EFlowAssignType.User, new HandlerObjects
|
|
|
+ {
|
|
|
+ UserGroups = new List<HandlerUserGroup>
|
|
|
+ {
|
|
|
+ new HandlerUserGroup{ HandlerUsers = handlers }
|
|
|
+ }
|
|
|
+ });
|
|
|
default:
|
|
|
throw new ArgumentOutOfRangeException();
|
|
|
}
|