Selaa lähdekoodia

fix: 创建开始节点改为指派到用户,特提到开始节点改为指派到部门

xf 8 kuukautta sitten
vanhempi
commit
a21b07c1b1

+ 3 - 0
src/Hotline.Api/Controllers/OrderController.cs

@@ -4495,6 +4495,9 @@ public class OrderController : BaseController
                     cancellationToken: HttpContext.RequestAborted);
             }
 
+            //todo
+            //宜宾需求:1. 坐席申请特提:指派给申请人办理 2. 派单员申请特提:所有派单员都能办 3.其他特提场景:按节点原配置办理
+
             var processType = dto.FlowDirection == EFlowDirection.OrgToCenter || dto.FlowDirection == EFlowDirection.CenterToCenter
                 ? EProcessType.Zhiban
                 : EProcessType.Jiaoban;

+ 1 - 1
src/Hotline/FlowEngine/Workflows/IWorkflowDomainService.cs

@@ -156,7 +156,7 @@ namespace Hotline.FlowEngine.Workflows
         /// 创建开始节点
         /// </summary>
         WorkflowStep CreateStartStep(Workflow workflow, StepDefine startStepDefine, BasicWorkflowDto dto,
-            FlowStepHandler handler, DateTime? expiredTime);
+            FlowStepHandler handler, DateTime? expiredTime, EFlowAssignType? flowAssignType = EFlowAssignType.User);
 
         /// <summary>
         /// 查询未完成节点

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

@@ -1407,7 +1407,8 @@ namespace Hotline.FlowEngine.Workflows
         /// 创建开始节点
         /// </summary>
         public WorkflowStep CreateStartStep(Workflow workflow, StepDefine startStepDefine,
-            BasicWorkflowDto dto, FlowStepHandler handler, DateTime? expiredTime)
+            BasicWorkflowDto dto, FlowStepHandler handler, DateTime? expiredTime,
+            EFlowAssignType? flowAssignType = EFlowAssignType.User)
         {
             //startstep
             var nextSteps = _mapper.Map<List<StepSimple>>(startStepDefine.NextSteps);
@@ -1420,7 +1421,7 @@ namespace Hotline.FlowEngine.Workflows
 
             var startStep = _mapper.Map<WorkflowStep>(startStepDefine);
             _mapper.Map(workflow, startStep);
-            startStep.FlowAssignType = EFlowAssignType.Org;
+            startStep.FlowAssignType = flowAssignType;
             startStep.Handlers = new List<Kv> { new(handler.Key, handler.Value) };
             //startStep.StepHandlers = stepHandlers;
             startStep.NextSteps = nextSteps;
@@ -1589,9 +1590,9 @@ namespace Hotline.FlowEngine.Workflows
 
         private async Task<WorkflowStep> CreateStartStepAsync(Workflow workflow, StepDefine startStepDefine,
             BasicWorkflowDto dto, FlowStepHandler handler, EWorkflowTraceType traceType,
-            DateTime? expiredTime, CancellationToken cancellationToken)
+            DateTime? expiredTime, EFlowAssignType? flowAssignType, CancellationToken cancellationToken)
         {
-            var startStep = CreateStartStep(workflow, startStepDefine, dto, handler, expiredTime);
+            var startStep = CreateStartStep(workflow, startStepDefine, dto, handler, expiredTime, flowAssignType);
             await _workflowStepRepository.AddAsync(startStep, cancellationToken);
             //await _workflowStepRepository.AddNav(startStep)
             //    .Include(d => d.StepHandlers)
@@ -1961,9 +1962,14 @@ namespace Hotline.FlowEngine.Workflows
             {
                 //newStep.FlowAssignType = EFlowAssignType.User;
                 // 是否中心  临时紧急修改 后续在流程模版定义是否原办理人退回类型 来实现流程 禅道200
-                newStep.FlowAssignType = !step.HandlerOrgIsCenter!.Value ? EFlowAssignType.Org : EFlowAssignType.Role;
-                if (newStep is { FlowAssignType: EFlowAssignType.Role, BusinessType: EBusinessType.Send })
-                    newStep.FlowAssignType = EFlowAssignType.User;
+                newStep.FlowAssignType = step.HandlerOrgIsCenter!.Value
+                    ? step.BusinessType is EBusinessType.Send
+                        ? EFlowAssignType.User
+                        : EFlowAssignType.Role
+                    : EFlowAssignType.Org;
+                //if (newStep is { FlowAssignType: EFlowAssignType.Role, BusinessType: EBusinessType.Send })
+                //    newStep.FlowAssignType = EFlowAssignType.User;
+
                 newStep.Assign(step.HandlerId, step.HandlerName, step.HandlerOrgId, step.HandlerOrgName, step.RoleId, step.RoleName);
             }
 
@@ -2236,7 +2242,7 @@ namespace Hotline.FlowEngine.Workflows
 
             var targetStepNew = targetIsStartStep
                 ? await CreateStartStepAsync(workflow, targetStepDefine, dto,
-                    dto.NextHandlers.First(), traceType, expiredTime, cancellationToken)
+                    dto.NextHandlers.First(), traceType, expiredTime, EFlowAssignType.Org, cancellationToken)
                 : (await CreateStepsAsync(workflow, targetStepDefine, targetPrevStep, dto,
                     flowAssignInfo.FlowAssignType, dto.NextHandlers,
                     null, EWorkflowStepStatus.WaitForAccept, ECountersignPosition.None, true, traceType,