Bläddra i källkod

fixed: 会签汇总再发起会签异常

xf 1 år sedan
förälder
incheckning
3fef4abf36

+ 0 - 6
src/Hotline.Share/Hotline.Share.csproj

@@ -10,12 +10,6 @@
     <Version>1.0.49</Version>
   </PropertyGroup>
 
-  <ItemGroup>
-    <Compile Remove="Enums\File\**" />
-    <EmbeddedResource Remove="Enums\File\**" />
-    <None Remove="Enums\File\**" />
-  </ItemGroup>
-
   <ItemGroup>
     <PackageReference Include="MediatR.Contracts" Version="1.0.1" />
     <PackageReference Include="XF.Utility.EnumExtensions" Version="1.0.4" />

+ 21 - 18
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -327,12 +327,12 @@ namespace Hotline.FlowEngine.Workflows
                 }
             }
 
-            if (currentStep.IsInCountersign())
+            //操作为回到会签汇总时,更新开始会签节点的会签办理状态
+            if (currentStep.IsInCountersign() && dto.BackToCountersignEnd)
             {
-                //操作为回到会签汇总时,更新开始会签节点的会签办理状态
-                if (dto.BackToCountersignEnd)
+                if (currentStep.IsCountersignEndStep)
                 {
-                    if (currentStep.IsCountersignEndStep)
+                    if (!currentStep.IsTopCountersignEndStep(workflow.TopCountersignStepId))
                     {
                         //汇总节点(非顶级)
                         var csStartStep =
@@ -341,25 +341,28 @@ namespace Hotline.FlowEngine.Workflows
                             throw new UserFriendlyException("未查询到会签开始节点");
                         PrevStepCsHandled(workflow, csStartStep, ref updateSteps);
                     }
-                    else
-                    {
-                        PrevStepCsHandled(workflow, currentStep, ref updateSteps);
-                    }
                 }
                 else
                 {
-                    //会签中正常办理节点,更新会签members办理状态
-                    var countersign = workflow.Countersigns.FirstOrDefault(d => d.Id == currentStep.CountersignId);
-                    if (countersign is null)
-                        throw new UserFriendlyException(
-                            $"会签数据异常, workflowId: {currentStep.WorkflowId}, countersignId: {currentStep.CountersignId}",
-                            "会签数据异常");
-                    countersign.MemberHandled(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgId);
-                    //update cs
-                    await _workflowCountersignRepository.UpdateAsync(countersign, cancellationToken);
+                    PrevStepCsHandled(workflow, currentStep, ref updateSteps);
                 }
             }
 
+            //会签办理节点办理时更新会签members字段
+            if (currentStep.CountersignPosition is ECountersignPosition.Inner)
+            {
+                //会签中正常办理节点,更新会签members办理状态
+                var countersign =
+                    workflow.Countersigns.FirstOrDefault(d => !d.IsCompleted() && d.Id == currentStep.CountersignId);
+                if (countersign is null)
+                    throw new UserFriendlyException(
+                        $"会签数据异常, workflowId: {currentStep.WorkflowId}, countersignId: {currentStep.CountersignId}",
+                        "会签数据异常");
+                countersign.MemberHandled(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgId);
+                //update cs
+                await _workflowCountersignRepository.UpdateAsync(countersign, cancellationToken);
+            }
+
             await _workflowStepRepository.UpdateRangeAsync(updateSteps, cancellationToken);
 
             await NextTraceAsync(workflow, dto, currentStep, cancellationToken);
@@ -1083,7 +1086,7 @@ namespace Hotline.FlowEngine.Workflows
 
             if (workflow.IsInCountersign)
             {
-                return dto.BackToCountersignEnd;
+                return !step.IsCountersignEndStep && dto.BackToCountersignEnd;
             }
             else
             {