xf 1 éve
szülő
commit
b24a1f321b

+ 8 - 10
src/Hotline.Api/Controllers/WorkflowController.cs

@@ -473,16 +473,14 @@ public class WorkflowController : BaseController
                 .ToList();
             return handlers.Where(d => !d.Key.IsCenter()).ToList();
         }
-        else
-        {
-            return workflow.Steps
-                .Where(d => d.StepType != EStepType.Start
-                            && d.StepType != EStepType.End
-                            && d.IsOrigin)
-                .SelectMany(d => d.Handlers)
-                .Distinct()
-                .ToList();
-        }
+
+        return workflow.Steps
+            .Where(d => d.StepType != EStepType.Start
+                        && d.StepType != EStepType.End
+                        && d.IsOrigin)
+            .SelectMany(d => d.Handlers)
+            .Distinct()
+            .ToList();
     }
 
     [HttpGet("base-data")]

+ 2 - 2
src/Hotline.Application.Contracts/Validators/FlowEngine/NextWorkflowDtoValidator.cs

@@ -13,8 +13,8 @@ namespace Hotline.Application.Contracts.Validators.FlowEngine
         public NextWorkflowDtoValidator()
         {
             RuleFor(d => d.WorkflowId).NotEmpty();
-            RuleFor(d=>d.ExpiredTime).NotEmpty();
-            RuleFor(d=>d.NextStepCode).NotEmpty();
+            //RuleFor(d=>d.ExpiredTime).NotEmpty();
+            //RuleFor(d=>d.NextStepCode).NotEmpty();
         }
     }
 }

+ 7 - 2
src/Hotline.Share/Dtos/FlowEngine/BasicWorkflowDto.cs

@@ -42,7 +42,7 @@ public class BasicWorkflowDto : EndWorkflowDto
     /// 外部业务参数
     /// </summary>
     public External External { get; set; }
-    
+
 }
 
 public class External
@@ -51,4 +51,9 @@ public class External
     /// 是否省延期
     /// </summary>
     public bool IsProvinceDelay { get; set; }
-}
+}
+
+//public class RejectDto : BasicWorkflowDto
+//{
+
+//}

+ 6 - 0
src/Hotline/FlowEngine/Workflows/IWorkflowDomainService.cs

@@ -68,6 +68,12 @@ namespace Hotline.FlowEngine.Workflows
         /// </summary>
         Task RedoAsync(Workflow workflow, RecallDto dto, StepDefine targetStepDefine, FlowAssignInfo flowAssignInfo, CancellationToken cancellationToken);
 
+        /// <summary>
+        /// 否决(审批流程不通过)
+        /// </summary>
+        /// <returns></returns>
+        Task RejectAsync(Workflow workflow, BasicWorkflowDto dto, CancellationToken cancellationToken);
+
         /// <summary>
         /// 补充
         /// </summary>

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

@@ -675,7 +675,8 @@ namespace Hotline.FlowEngine.Workflows
         {
             var currentStep = GetUnHandleStep(workflow.Steps, _sessionContext.RequiredOrgId, _sessionContext.RequiredUserId);
             //var (currentStepBox, currentStep) = GetUnCompleteStep(workflow.Steps, _sessionContext.RequiredOrgId, _sessionContext.RequiredUserId);
-
+            
+            await HandleStepAsync(currentStep, workflow, dto, null, cancellationToken);
 
             var endStepDefine = workflow.WorkflowDefinition.FindEndStepDefine();
 
@@ -874,7 +875,7 @@ namespace Hotline.FlowEngine.Workflows
         //}
         //new
         private async Task HandleStepAsync(WorkflowStep step, Workflow workflow, BasicWorkflowDto dto,
-             ECounterSignType counterSignType, CancellationToken cancellationToken)
+             ECounterSignType? counterSignType, CancellationToken cancellationToken)
         {
             if (step.Status is EWorkflowStepStatus.Handled)
                 throw UserFriendlyException.SameMessage("当前节点状态已办理");
@@ -882,6 +883,9 @@ namespace Hotline.FlowEngine.Workflows
             if (step.StepType is EStepType.End)
                 throw new UserFriendlyException("当前流程已流转到最终步骤");
 
+            if (dto.IsStartCountersign && !counterSignType.HasValue)
+                throw new UserFriendlyException("缺少会签类型参数");
+
             if (step.Status is EWorkflowStepStatus.WaitForAccept)
                 await AcceptAsync(workflow,
                     _sessionContext.RequiredUserId, _sessionContext.UserName,
@@ -891,7 +895,7 @@ namespace Hotline.FlowEngine.Workflows
 
             //创建会签数据
             if (dto.IsStartCountersign)
-                await StartCountersignAsync(workflow, step, dto, counterSignType, cancellationToken);
+                await StartCountersignAsync(workflow, step, dto, counterSignType.Value, cancellationToken);
 
             //办理参数
             _mapper.Map(dto, step);