Prechádzať zdrojové kódy

fixed: 审批类流程,审批不通过时直接归档,nextStepDefine不再取currentStepDefine

xf 4 mesiacov pred
rodič
commit
fdb2400f40

+ 7 - 6
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -275,8 +275,9 @@ namespace Hotline.FlowEngine.Workflows
             var currentStepDefine = GetStepDefine(workflow.WorkflowDefinition, currentStep.Code);
 
             //下一节点是否为动态节点
-            var isNextDynamic = currentStepDefine.InstanceMode is EInstanceMode.Dynamic &&
-                                !DynamicShouldTerminal(currentStepDefine, current.OrgLevel);
+            var isNextDynamic = (string.IsNullOrEmpty(dto.NextStepCode) || dto.NextStepCode.ToLower() != "end")
+               && currentStepDefine.InstanceMode is EInstanceMode.Dynamic
+                && !DynamicShouldTerminal(currentStepDefine, current.OrgLevel);
 
             StepDefine nextStepDefine;
             if (isNextDynamic
@@ -1272,9 +1273,9 @@ namespace Hotline.FlowEngine.Workflows
             CancellationToken cancellation)
         {
             return await _workflowStepRepository.Queryable()
-                .Where(d => d.WorkflowId == workflowId 
-                            && d.HandlerOrgId == orgId 
-                            && d.StepType != EStepType.End 
+                .Where(d => d.WorkflowId == workflowId
+                            && d.HandlerOrgId == orgId
+                            && d.StepType != EStepType.End
                             && d.StepType != EStepType.Summary
                             && !d.IsCountersignEndStep)
                 //.Where(d => d.StepHandlers.Any(sh => sh.OrgId == orgId) && d.WorkflowId == workflowId)
@@ -2337,7 +2338,7 @@ namespace Hotline.FlowEngine.Workflows
             //var csInnerSteps = workflow.Steps.Where(d => d.PrevStepId == countersignStartStep.Id).ToList();
             //if (csInnerSteps.Any(d =>
             //        d.Status != EWorkflowStepStatus.Handled || (d.IsStartCountersign && !d.IsStartedCountersignEnd)))
-            if(!HasStepsAllHandled(workflow.Steps, countersignStartStep))
+            if (!HasStepsAllHandled(workflow.Steps, countersignStartStep))
                 return nextSteps;
 
             string? opinion = null;