|
@@ -282,6 +282,13 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
nextStepDefine = GetStepDefine(workflow.WorkflowDefinition, dto.NextStepCode);
|
|
|
}
|
|
|
|
|
|
+ //普通节点往汇总节点办理时可以不选,不选的场景主动去查之前的办理对象
|
|
|
+ if (nextStepDefine.StepType is EStepType.Summary && !dto.NextHandlers.Any())
|
|
|
+ {
|
|
|
+ var handler = GetSummaryTargetFlowStepHandler(workflow, nextStepDefine.SummaryTargetCode);
|
|
|
+ dto.NextHandlers.Add(handler);
|
|
|
+ }
|
|
|
+
|
|
|
//需求:按角色选择办理人可以不选,表示该角色下所有人都可以办理,同时依据配置:是否本部门人办理显示待选办理人。角色下只要一人办理即可(即:角色下不发起会签)
|
|
|
if (nextStepDefine.HandlerType != EHandlerType.Role && !dto.NextHandlers.Any())
|
|
|
throw new UserFriendlyException("未指定节点处理者");
|
|
@@ -1366,6 +1373,37 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
.ToListAsync(cancellationToken);
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 根据汇总对象id找到被汇总节点,生成指派到用户的办理对象
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="workflow"></param>
|
|
|
+ /// <param name="stepDefine"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public FlowStepHandler GetSummaryTargetFlowStepHandler(Workflow workflow, string summaryTargetStepCode)
|
|
|
+ {
|
|
|
+ //根据汇总对象id找到被汇总节点
|
|
|
+ var summaryTargetStep = workflow.Steps.FirstOrDefault(d =>
|
|
|
+ d.StepType == EStepType.Normal &&
|
|
|
+ d.Code == summaryTargetStepCode &&
|
|
|
+ d.Status == EWorkflowStepStatus.Handled &&
|
|
|
+ d.IsOrigin);
|
|
|
+ if (summaryTargetStep is null)
|
|
|
+ throw UserFriendlyException.SameMessage("未查询到汇总对象节点");
|
|
|
+
|
|
|
+ var handler = new FlowStepHandler
|
|
|
+ {
|
|
|
+ Key = summaryTargetStep.HandlerId,
|
|
|
+ Value = summaryTargetStep.HandlerName,
|
|
|
+ UserId = summaryTargetStep.HandlerId,
|
|
|
+ Username = summaryTargetStep.HandlerName,
|
|
|
+ OrgId = summaryTargetStep.HandlerOrgId,
|
|
|
+ OrgName = summaryTargetStep.HandlerOrgName,
|
|
|
+ RoleId = summaryTargetStep.RoleId,
|
|
|
+ RoleName = summaryTargetStep.RoleName
|
|
|
+ };
|
|
|
+ return handler;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 查找当前会签内所有节点(含start,end)
|
|
|
/// </summary>
|