Browse Source

重构工单办理,区分宜宾平均派单业务

xf 6 months ago
parent
commit
6e2bc9e73e

+ 50 - 44
src/Hotline.Api/Controllers/OrderController.cs

@@ -3585,9 +3585,9 @@ public class OrderController : BaseController
             var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
             startDto.DefinitionModuleCode = WorkflowModuleConsts.OrderHandle;
             startDto.Title = order.Title;
-            var startStep = await _workflowDomainService.StartAsync(startDto, order.Id, order.ExpiredTime, HttpContext.RequestAborted);
+            var (workflow,startStep) = await _workflowDomainService.StartAsync(startDto, order.Id, order.ExpiredTime, HttpContext.RequestAborted);
 
-            await HandleOrderAsync(order, startStep, dto.Data, dto.Workflow, HttpContext.RequestAborted);
+            await HandleOrderAsync(order, workflow, startStep, dto.Data, dto.Workflow, HttpContext.RequestAborted);
         }
         catch (Exception e)
         {
@@ -3635,43 +3635,10 @@ public class OrderController : BaseController
 
         var workflow = await _workflowDomainService.GetWorkflowAsync(dto.Workflow.WorkflowId, withSteps: true, withTraces: true,
             cancellationToken: HttpContext.RequestAborted);
-        //1.是否是判断节点  2.是否存在历史派单节点  3.存在获取上个派单节点  4.不存在走平均派单
-        if (dto.Data.OrderAssignMode is EOrderAssignMode.AdjoinLevel && dto.Workflow.BusinessType == EBusinessType.Send)
-        {
-            var sendOrderTraces = workflow.Traces.Where(x => x.BusinessType == EBusinessType.Send);
-            if (sendOrderTraces.Any())
-            {
-                var sendOrderTrace = workflow.Traces.Where(x => x.BusinessType == EBusinessType.Send)
-                    .OrderByDescending(x => x.CreationTime)
-                    .FirstOrDefault();
-                dto.Workflow.NextHandlers = new List<FlowStepHandler>
-                {
-                    new FlowStepHandler()
-                    {
-                        Key = sendOrderTrace.HandlerId, Value = sendOrderTrace.HandlerName,
-                        UserId = sendOrderTrace.HandlerId, Username = sendOrderTrace.HandlerName,
-                        OrgId = sendOrderTrace.HandlerOrgId, OrgName = sendOrderTrace.HandlerOrgName
-                    }
-                };
-            }
-            else
-            {
-                // 平均派单
-                var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
-                if (averageSendOrder)
-                {
-                    if (!dto.Workflow.NextHandlers.Any())
-                    {
-                        var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
-                        dto.Workflow.NextHandlers = new List<FlowStepHandler> { handler };
-                    }
-                }
-            }
-        }
 
         //await _workflowApplication.NextAsync(dto.WorkflowDto, order.ExpiredTime, HttpContext.RequestAborted);
         var startStep = workflow.Steps.First(d => d.Id == dto.Workflow.StepId);
-        await HandleOrderAsync(order, startStep, dto.Data, dto.Workflow, HttpContext.RequestAborted);
+        await HandleOrderAsync(order, workflow, startStep, dto.Data, dto.Workflow, HttpContext.RequestAborted);
 
         if (_appOptions.Value.IsZiGong && dto.Data.Transpond.HasValue && dto.Data.Transpond.Value)
         {
@@ -3684,7 +3651,8 @@ public class OrderController : BaseController
         }
     }
 
-    private async Task HandleOrderAsync(Order order, WorkflowStep startStep, OrderHandleFlowDto orderHandleFlowDto, BasicWorkflowDto workflowDto,
+    private async Task HandleOrderAsync(Order order, Workflow workflow, WorkflowStep startStep, OrderHandleFlowDto orderHandleFlowDto,
+        BasicWorkflowDto workflowDto,
         CancellationToken cancellationToken)
     {
         switch (orderHandleFlowDto.OrderAssignMode)
@@ -3694,15 +3662,53 @@ public class OrderController : BaseController
                 nextDto.WorkflowId = startStep.WorkflowId;
                 nextDto.StepId = startStep.Id;
 
-                // 平均派单
-                var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder)
-                    .SettingValue[0]);
-                if (workflowDto.BusinessType == EBusinessType.Send && averageSendOrder)
+                // 宜宾需求: 1.是否是判断节点  2.是否存在历史派单节点  3.存在获取上个派单节点  4.不存在走平均派单
+                if (workflowDto.BusinessType == EBusinessType.Send)
                 {
-                    if (!nextDto.NextHandlers.Any())
+                    if (_appOptions.Value.IsYiBin)
                     {
-                        var handler = await _orderDomainService.AverageOrder(cancellationToken);
-                        nextDto.NextHandlers = new List<FlowStepHandler> { handler };
+                        var sendOrderTraces = workflow.Traces.Where(x => x.BusinessType == EBusinessType.Send);
+                        if (sendOrderTraces.Any())
+                        {
+                            var sendOrderTrace = workflow.Traces.Where(x => x.BusinessType == EBusinessType.Send)
+                                .OrderByDescending(x => x.CreationTime)
+                                .FirstOrDefault();
+                            nextDto.NextHandlers = new List<FlowStepHandler>
+                            {
+                                new FlowStepHandler()
+                                {
+                                    Key = sendOrderTrace.HandlerId, Value = sendOrderTrace.HandlerName,
+                                    UserId = sendOrderTrace.HandlerId, Username = sendOrderTrace.HandlerName,
+                                    OrgId = sendOrderTrace.HandlerOrgId, OrgName = sendOrderTrace.HandlerOrgName
+                                }
+                            };
+                        }
+                        else
+                        {
+                            // 平均派单
+                            var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
+                            if (averageSendOrder)
+                            {
+                                if (!nextDto.NextHandlers.Any())
+                                {
+                                    var handler = await _orderDomainService.AverageOrder(HttpContext.RequestAborted);
+                                    nextDto.NextHandlers = new List<FlowStepHandler> { handler };
+                                }
+                            }
+                        }
+                    }
+                    else
+                    {
+                        // 平均派单
+                        var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
+                        if (averageSendOrder)
+                        {
+                            if (!nextDto.NextHandlers.Any())
+                            {
+                                var handler = await _orderDomainService.AverageOrder(cancellationToken);
+                                nextDto.NextHandlers = new List<FlowStepHandler> { handler };
+                            }
+                        }
                     }
                 }
 

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

@@ -30,7 +30,7 @@ namespace Hotline.FlowEngine.Workflows
         /// <summary>
         /// new
         /// </summary>
-        Task<WorkflowStep> StartAsync(StartWorkflowDto dto, string externalId, DateTime? expiredTime, CancellationToken cancellationToken = default);
+        Task<(Workflow, WorkflowStep)> StartAsync(StartWorkflowDto dto, string externalId, DateTime? expiredTime, CancellationToken cancellationToken = default);
 
         /// <summary>
         /// new

+ 2 - 2
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -148,7 +148,7 @@ namespace Hotline.FlowEngine.Workflows
         /// <summary>
         /// new(开启流程并停留在开始节点,开始节点为待办节点,指派给当前操作人)
         /// </summary>
-        public async Task<WorkflowStep> StartAsync(StartWorkflowDto dto,
+        public async Task<(Workflow, WorkflowStep)> StartAsync(StartWorkflowDto dto,
             string externalId, DateTime? expiredTime, CancellationToken cancellationToken = default)
         {
             //     var validator = new StartWorkflowDtoValidator();
@@ -246,7 +246,7 @@ namespace Hotline.FlowEngine.Workflows
             await _publisher.PublishAsync(new StartWorkflowNotify(workflow, dto, flowAssignInfo.FlowAssignType, startTrace),
                 PublishStrategy.ParallelWhenAll, cancellationToken);
 
-            return startStep;
+            return (workflow, startStep);
         }
 
         /// <summary>