xf 1 tahun lalu
induk
melakukan
0ed7cfd5ec

+ 1 - 1
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -161,7 +161,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
 
         StepDefine nextStepDefine;
         if ((currentStep.InstanceMode is EInstanceMode.Dynamic && !DynamicShouldTerminal(currentStep))
-            || currentStep.IsInCountersign()
+            || (currentStep.IsInCountersign() && !currentStep.IsTopCountersignEndStep(workflow.TopCountersignStepId))
             || dto.IsStartCountersign)
         {
             //下一步配置为当前节点配置

+ 33 - 31
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -337,49 +337,51 @@ namespace Hotline.FlowEngine.Workflows
             }
 
             //操作为回到会签汇总时,更新开始会签节点的会签办理状态
-            //if (currentStep.IsInCountersign() && dto.BackToCountersignEnd)
-            //{
-            //    var targetStep = currentStep;
-            //    if (currentStep.IsCountersignEndStep)
-            //    {
-            //        var csStartStep = workflow.Steps.FirstOrDefault(d => d.Id == currentStep.CountersignStartStepId);
-            //        if (csStartStep is null)
-            //            throw new UserFriendlyException("未查询到会签开始节点");
-            //        targetStep = csStartStep;
-            //    }
-
-            //    PrevStepCsHandled(workflow, targetStep, ref updateSteps);
-            //}
-
-            if (currentStep.IsInCountersign())
+            if (currentStep.IsInCountersign() && dto.BackToCountersignEnd)
             {
                 if (currentStep.IsCountersignEndStep)
                 {
+                    //汇总节点(非顶级)
                     var csStartStep = workflow.Steps.FirstOrDefault(d => d.Id == currentStep.CountersignStartStepId);
                     if (csStartStep is null)
                         throw new UserFriendlyException("未查询到会签开始节点");
-
-                    if (currentStep.IsTopCountersignEndStep(workflow.TopCountersignStepId))
-                    {
-                        var csStep = csStartStep.CountersignSteps.FirstOrDefault(d => d.StepId == currentStep.Id);
-                        if (csStep is null)
-                            throw new UserFriendlyException("未查询到当前待办节点");
-                        csStep.Completed = true;
-                        updateSteps.Add(csStartStep);
-                    }
-                    else
-                    {
-                        //汇总节点(非顶级)
-                        PrevStepCsHandled(workflow, csStartStep, ref updateSteps);
-                    }
+                    PrevStepCsHandled(workflow, csStartStep, ref updateSteps);
                 }
-                else if (dto.BackToCountersignEnd)
+                else
                 {
-                    //普通节点里面流向汇总节点的
                     PrevStepCsHandled(workflow, currentStep, ref updateSteps);
                 }
             }
 
+            //if (currentStep.IsInCountersign())
+            //{
+            //    if (currentStep.IsCountersignEndStep)
+            //    {
+            //        var csStartStep = workflow.Steps.FirstOrDefault(d => d.Id == currentStep.CountersignStartStepId);
+            //        if (csStartStep is null)
+            //            throw new UserFriendlyException("未查询到会签开始节点");
+
+            //        if (currentStep.IsTopCountersignEndStep(workflow.TopCountersignStepId))
+            //        {
+            //            var csStep = csStartStep.CountersignSteps.FirstOrDefault(d => d.StepId == currentStep.Id);
+            //            if (csStep is null)
+            //                throw new UserFriendlyException("未查询到当前待办节点");
+            //            csStep.Completed = true;
+            //            updateSteps.Add(csStartStep);
+            //        }
+            //        else
+            //        {
+            //            //汇总节点(非顶级)
+            //            PrevStepCsHandled(workflow, csStartStep, ref updateSteps);
+            //        }
+            //    }
+            //    else if (dto.BackToCountersignEnd)
+            //    {
+            //        //普通节点里面流向汇总节点的
+            //        PrevStepCsHandled(workflow, currentStep, ref updateSteps);
+            //    }
+            //}
+
 
             await _workflowStepRepository.UpdateRangeAsync(updateSteps, cancellationToken);