xf 2 years ago
parent
commit
a1b0b71efa

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

@@ -133,7 +133,7 @@ public class OrderController : BaseController
             order.Workflow = await _workflowDomainService.GetWorkflowAsync(order.WorkflowId, withSteps: true, withSupplements: true, withAssigns: true, cancellationToken: HttpContext.RequestAborted);
 
             _mediator.Publish(new GetOrderDetailNotify(order.Workflow, _sessionContext.RequiredUserId,
-                _sessionContext.UserName, _sessionContext.RequiredOrgCode, _sessionContext.OrgName));
+                 _sessionContext.UserName, _sessionContext.RequiredOrgCode, _sessionContext.OrgName));
         }
 
         var dto = _mapper.Map<OrderDto>(order);

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

@@ -145,7 +145,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
                         .Includes(d => d.Accounts)
                         .Where(d => stepDefine.HandlerClassifies.Select(d => d.Id).Contains(d.Name))
                         .ToListAsync();
-                    handlers = roles.SelectMany(d => d.Accounts).Select(d => d.Id).ToList();
+                    handlers = roles.SelectMany(d => d.Accounts).Select(d => d.Id).Distinct().ToList();
                 }
 
                 return new FlowAssignMode(EFlowAssignType.User, handlers);

+ 2 - 0
src/Hotline/FlowEngine/Workflows/Workflow.cs

@@ -211,9 +211,11 @@ public class Workflow : CreationEntity
         {
             case EFlowAssignType.Org:
                 HandlerOrgs.AddRange(handlers);
+                HandlerOrgs = HandlerOrgs.Distinct().ToList();
                 break;
             case EFlowAssignType.User:
                 HandlerUsers.AddRange(handlers);
+                HandlerUsers = HandlerUsers.Distinct().ToList();
                 break;
             default:
                 throw new ArgumentOutOfRangeException(nameof(assignType), assignType, null);

+ 16 - 14
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -866,19 +866,19 @@ namespace Hotline.FlowEngine.Workflows
             await _workflowStepRepository.AddRangeAsync(subSteps, cancellationToken);
         }
 
-        private (WorkflowStep stepBox, WorkflowStep step) GetStep(List<WorkflowStep> stepBoxes, string stepId)
-        {
-            foreach (var stepBox in stepBoxes)
-            {
-                foreach (var step in stepBox.Steps)
-                {
-                    if (step.Id == stepId)
-                        return (stepBox, step);
-                }
-            }
-
-            throw new UserFriendlyException("未找到对应节点");
-        }
+        //private (WorkflowStep stepBox, WorkflowStep step) GetStep(List<WorkflowStep> stepBoxes, string stepId)
+        //{
+        //    foreach (var stepBox in stepBoxes)
+        //    {
+        //        foreach (var step in stepBox.Steps)
+        //        {
+        //            if (step.Id == stepId)
+        //                return (stepBox, step);
+        //        }
+        //    }
+
+        //    throw new UserFriendlyException("未找到对应节点");
+        //}
 
         /// <summary>
         /// 查询未完成节点
@@ -891,7 +891,9 @@ namespace Hotline.FlowEngine.Workflows
         {
             var (stepBox, step) = GetStep(stepBoxes, orgCode, userId, d => d != EWorkflowStepStatus.Completed);
             if (step == null)
-                throw new UserFriendlyException("未找到对应节点");
+                throw new UserFriendlyException(
+                    $"未找到对应节点, workflowId: {stepBoxes.FirstOrDefault()?.WorkflowId} orgCode:{orgCode}, userId: {userId}",
+                    "未找到对应节点");
             return (stepBox, step);
         }