xf há 2 anos atrás
pai
commit
be7d503041

+ 2 - 2
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -540,7 +540,7 @@ namespace Hotline.Api.Controllers
         /// <returns></returns>
         [Permission(EPermission.AddKnowledge)]
         [HttpGet("add-flow-start")]
-        public async Task<IReadOnlyList<KeyValuePair<string, string>>> GetAddFlowStartOptionsAsync()
+        public async Task<DefineWithSelectionStepDto> GetAddFlowStartOptionsAsync()
         {
             return await _workflowApplication.GetStartOptionsAsync(WorkflowModuleConsts.KnowledgeAdd, HttpContext.RequestAborted);
         }
@@ -551,7 +551,7 @@ namespace Hotline.Api.Controllers
         /// <returns></returns>
         [Permission(EPermission.KnowledgeDelete)]
         [HttpGet("remove-flow-start")]
-        public async Task<IReadOnlyList<KeyValuePair<string, string>>> GetRemoveFlowStartOptionsAsync()
+        public async Task<DefineWithSelectionStepDto> GetRemoveFlowStartOptionsAsync()
         {
             return await _workflowApplication.GetStartOptionsAsync(WorkflowModuleConsts.KnowledgeDelete, HttpContext.RequestAborted);
         }

+ 1 - 1
src/Hotline.Api/Controllers/OrderController.cs

@@ -232,7 +232,7 @@ public class OrderController : BaseController
     /// </summary>
     /// <returns></returns>
     [HttpGet("flow-start")]
-    public async Task<IReadOnlyList<KeyValuePair<string, string>>> GetFlowStartOptionsAsync()
+    public async Task<DefineWithSelectionStepDto> GetFlowStartOptionsAsync()
     {
         return await _workflowApplication.GetStartOptionsAsync(WorkflowModuleConsts.OrderManage, HttpContext.RequestAborted);
     }

+ 1 - 1
src/Hotline.Api/Controllers/PbxController.cs

@@ -225,7 +225,7 @@ namespace Hotline.Api.Controllers
         /// </summary>
         /// <returns></returns>
         [HttpGet("flow-start")]
-        public async Task<IReadOnlyList<KeyValuePair<string, string>>> GetFlowStartOptionsAsync()
+        public async Task<DefineWithSelectionStepDto> GetFlowStartOptionsAsync()
         {
             return await _workflowApplication.GetStartOptionsAsync(WorkflowModuleConsts.TelRestApply,
                 HttpContext.RequestAborted);

+ 14 - 5
src/Hotline.Api/Controllers/WorkflowController.cs

@@ -256,17 +256,21 @@ public class WorkflowController : BaseController
 
         return new PagedDto<WorkflowDto>(total, _mapper.Map<IReadOnlyList<WorkflowDto>>(items));
     }
-    
+
     /// <summary>
     /// 查询当前流程下一节点配置
     /// </summary>
     [HttpGet("{workflowId}/nextsteps")]
-    public async Task<IReadOnlyList<KeyValuePair<string, string>>> GetNextStepDefine(string workflowId)
+    public async Task<DefineWithSelectionStepDto> GetNextStepDefine(string workflowId)
     {
         var workflow = await _workflowDomainService.GetWorkflowAsync(workflowId, true, true,
             cancellationToken: HttpContext.RequestAborted);
         var nextStepDefines = _workflowDomainService.GetNextStepDefines(workflow);
-        return nextStepDefines.Select(d => new KeyValuePair<string, string>(d.Code, d.Name)).ToList();
+        return new DefineWithSelectionStepDto
+        {
+            Id = workflow.DefinitionId,
+            Steps = nextStepDefines.Select(d => new KeyValuePair<string, string>(d.Code, d.Name)).ToList()
+        };
     }
 
     /// <summary>
@@ -275,8 +279,13 @@ public class WorkflowController : BaseController
     [HttpGet("step-options")]
     public async Task<IReadOnlyList<KeyValuePair<string, string>>> GetNextStepOptions([FromQuery] QueryNextStepOptionDto dto)
     {
-        var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, true, cancellationToken: HttpContext.RequestAborted);
-        var defineStep = workflow.Definition.FindStep(dto.Code);
+        var definition = await _definitionRepository.GetAsync(dto.DefineId, HttpContext.RequestAborted);
+        if (definition == null)
+            throw new UserFriendlyException("无效DefineId");
+
+        //var workflow = await _workflowDomainService.GetWorkflowAsync(dto.WorkflowId, true, cancellationToken: HttpContext.RequestAborted);
+        //var defineStep = workflow.Definition.FindStep(dto.Code);
+        var defineStep = definition.FindStep(dto.Code);
         if (defineStep is null)
             throw UserFriendlyException.SameMessage("未查询到对应节点配置");
         return await _workflowApplication.GetNextStepOptionsAsync(defineStep, HttpContext.RequestAborted);

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

@@ -32,7 +32,7 @@ namespace Hotline.Application.FlowEngine
         /// <summary>
         /// 查询流程开始节点的下一节点配置
         /// </summary>
-        Task<IReadOnlyList<KeyValuePair<string, string>>> GetStartOptionsAsync(string moduleCode, CancellationToken cancellationToken);
+        Task<DefineWithSelectionStepDto> GetStartOptionsAsync(string moduleCode, CancellationToken cancellationToken);
 
         /// <summary>
         /// 查询节点配置可选参数

+ 7 - 2
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -132,7 +132,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         await _workflowDomainService.JumpAsync(workflow, dto, targetStepDefine, isStartCountersign, flowAssignMode, cancellationToken);
     }
 
-    public async Task<IReadOnlyList<KeyValuePair<string, string>>> GetStartOptionsAsync(string moduleCode, CancellationToken cancellationToken)
+    public async Task<DefineWithSelectionStepDto> GetStartOptionsAsync(string moduleCode, CancellationToken cancellationToken)
     {
         var definition =
             await _definitionDomainService.GetLastVersionByModuleCodeAsync(moduleCode, cancellationToken);
@@ -145,7 +145,12 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
         if (startStep == null)
             throw new UserFriendlyException("未正确配置开始节点");
         var nextStepDefines = definition.FindSteps(startStep.NextSteps);
-        return nextStepDefines.Select(d => new KeyValuePair<string, string>(d.Code, d.Name)).ToList();
+
+        return new DefineWithSelectionStepDto
+        {
+            Id = definition.Id,
+            Steps = nextStepDefines.Select(d => new KeyValuePair<string, string>(d.Code, d.Name)).ToList()
+        };
     }
 
     /// <summary>

+ 18 - 0
src/Hotline.Share/Dtos/FlowEngine/DefineWithSelectionStepDto.cs

@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Hotline.Share.Dtos.FlowEngine
+{
+    /// <summary>
+    /// 只含带选step的define
+    /// </summary>
+    public class DefineWithSelectionStepDto
+    {
+        public string Id { get; set; }
+
+        public IReadOnlyList<KeyValuePair<string, string>> Steps { get; set; }
+    }
+}

+ 1 - 1
src/Hotline.Share/Dtos/FlowEngine/QueryNextStepOptionDto.cs

@@ -8,7 +8,7 @@ namespace Hotline.Share.Dtos.FlowEngine
 {
     public class QueryNextStepOptionDto
     {
-        public string WorkflowId { get; set; }
+        public string DefineId { get; set; }
 
         /// <summary>
         /// define.stepCode