|
@@ -292,7 +292,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
/// 工单退回(返回前一节点)
|
|
|
/// </summary>
|
|
|
public async Task<EFlowDirection> PreviousAsync(PreviousWorkflowDto dto, string applicantId, string applicantOrgId, string[] applicantRoleIds,
|
|
|
- ISessionContext current, CancellationToken cancellationToken)
|
|
|
+ ISessionContext current, CancellationToken cancellationToken)
|
|
|
{
|
|
|
var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, withSteps: true,
|
|
|
withTraces: true, withCountersigns: true, cancellationToken: cancellationToken);
|
|
@@ -1168,19 +1168,17 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
{
|
|
|
if (currentStep.IsCountersignEndStep)
|
|
|
{
|
|
|
+ //汇总节点(非顶级)
|
|
|
if (!currentStep.IsTopCountersignEndStep(workflow.TopCountersignStepId))
|
|
|
{
|
|
|
- //汇总节点(非顶级)
|
|
|
- //var csStartStep = workflow.Steps.FirstOrDefault(d => d.Id == currentStep.CountersignStartStepId);
|
|
|
- //if (csStartStep is null)
|
|
|
- // throw new UserFriendlyException("未查询到会签开始节点");
|
|
|
- var csStartStep = GetCsLoopStartStep(workflow, currentStep);
|
|
|
-
|
|
|
- var prevStep = workflow.Steps.FirstOrDefault(d => d.Id == csStartStep.PrevStepId);
|
|
|
- if (prevStep is null)
|
|
|
- throw new UserFriendlyException("未查询到目标节点的前一节点");
|
|
|
-
|
|
|
- return FlowAssignInfo.Create(prevStep.FlowAssignType.Value, prevStep.Handlers, isStartCountersign);
|
|
|
+ if (dto.BackToCountersignEnd)
|
|
|
+ {
|
|
|
+ var csStartStep = GetCsLoopStartStep(workflow, currentStep);
|
|
|
+ var prevStep = workflow.Steps.FirstOrDefault(d => d.Id == csStartStep.PrevStepId);
|
|
|
+ if (prevStep is null)
|
|
|
+ throw new UserFriendlyException("未查询到目标节点的前一节点");
|
|
|
+ return FlowAssignInfo.Create(prevStep.FlowAssignType.Value, prevStep.Handlers, isStartCountersign);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else
|
|
@@ -1208,46 +1206,6 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
|
|
|
cancellationToken);
|
|
|
}
|
|
|
|
|
|
- //private async ValueTask<List<WorkflowStepHandler>> GetNextStepHandlersAsync(Workflow workflow,
|
|
|
- // StepDefine nextStepDefine, BasicWorkflowDto dto, CancellationToken cancellationToken)
|
|
|
- //{
|
|
|
- // var assignType = FlowAssignInfo.GetAssignType(dto.HandlerType);
|
|
|
- // //var assignType = AssignInfo.GetAssignType(nextStepDefine.HandlerType, dto.NextHandlers.Any());
|
|
|
- // switch (assignType)
|
|
|
- // {
|
|
|
- // case EFlowAssignType.Org:
|
|
|
- // return dto.NextHandlers.Select(d => WorkflowStepHandler.Create(workflow.Id, workflow.ExternalId,
|
|
|
- // assignType, orgId: d.Key, orgName: d.Value)).ToList();
|
|
|
- // case EFlowAssignType.User:
|
|
|
- // if (!dto.NextHandlers.Any() && dto.HandlerType is EHandlerType.Role)
|
|
|
- // {
|
|
|
- // var stepOption = await GetConfigStepAsync(EFlowType.Handle, nextStepDefine, cancellationToken);
|
|
|
- // var uIds = stepOption.Items.Select(d => d.Key).ToList();
|
|
|
- // var users1 = await _userRepository.Queryable()
|
|
|
- // .Includes(d => d.Organization)
|
|
|
- // .Where(d => uIds.Contains(d.Id))
|
|
|
- // .ToListAsync(cancellationToken);
|
|
|
- // return users1.Select(d => WorkflowStepHandler.Create(workflow.Id, workflow.ExternalId,
|
|
|
- // assignType, d.Id, d.Name, d.OrgId, d.Organization.Name))
|
|
|
- // .ToList();
|
|
|
- // }
|
|
|
- // var userIds = dto.NextHandlers.Select(d => d.Key).ToList();
|
|
|
- // var users = await _userRepository.Queryable()
|
|
|
- // .Includes(d => d.Organization)
|
|
|
- // .Where(d => userIds.Contains(d.Id))
|
|
|
- // .ToListAsync(cancellationToken);
|
|
|
- // return users.Select(d => WorkflowStepHandler.Create(workflow.Id, workflow.ExternalId,
|
|
|
- // assignType, d.Id, d.Name, d.OrgId, d.Organization.Name))
|
|
|
- // .ToList();
|
|
|
- // //case EFlowAssignType.Role:
|
|
|
- // // handlers = dto.NextHandlers.Select(d => WorkflowStepHandler.Create(workflow.Id, workflow.ExternalId,
|
|
|
- // // assignType, roleId: d.Key, roleName: d.Value)).ToList();
|
|
|
- // // break;
|
|
|
- // default:
|
|
|
- // throw new ArgumentOutOfRangeException();
|
|
|
- // }
|
|
|
- //}
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 按流程模板配置创建下一步办理对象
|
|
|
/// </summary>
|