Przeglądaj źródła

省工单撤单、重派,工单状态异常的bug

Dun.Jason 6 miesięcy temu
rodzic
commit
f08c0fb301

+ 12 - 1
src/Hotline.Application/Orders/OrderApplication.cs

@@ -2367,9 +2367,20 @@ public class OrderApplication : IOrderApplication, IScopeDependency
 
             //特提(撤回至发起)
             if (!string.IsNullOrEmpty(order.WorkflowId))
+            {
                 //await _workflowDomainService.RecallToStartStepAsync(order.WorkflowId, "省工单重派", current, order.Status >= EOrderStatus.Filed, cancellationToken);
-                await _workflowDomainService.RecallToCenterFirstToSendAsync(order.WorkflowId, "省工单重派", order.Status >= EOrderStatus.Filed,
+                var isPaiDan = await _workflowDomainService.RecallToCenterFirstToSendAsync(order.WorkflowId, "省工单重派", order.Status >= EOrderStatus.Filed,
                     order.ExpiredTime, cancellationToken);
+                if (isPaiDan)
+                {
+                    order.Status = EOrderStatus.Handling;
+                }
+                else
+                {
+                    order.Status = EOrderStatus.WaitForAccept;
+                }
+                await _orderRepository.UpdateAsync(order, cancellationToken);
+            }
             //await _workflowDomainService.RecallToStartStepAsync(order.WorkflowId, "省工单重派", current, cancellationToken);
         }
         return _mapper.Map<AddOrderResponse>(order);

+ 10 - 1
src/Hotline.Application/Subscribers/DatasharingSubscriber.cs

@@ -297,8 +297,17 @@ namespace Hotline.Application.Subscribers
             }
             else
             {
-                await _workflowDomainService.RecallToCenterFirstToSendAsync(order.WorkflowId, dto.Opinion,
+                var isPaiDan = await _workflowDomainService.RecallToCenterFirstToSendAsync(order.WorkflowId, dto.Opinion,
                     order.Status >= EOrderStatus.Filed, order.ExpiredTime, cancellationToken);
+                if (isPaiDan)
+                {
+                    order.Status = EOrderStatus.Handling;
+                }
+                else
+                {
+                    order.Status = EOrderStatus.WaitForAccept;
+                }
+                await _orderRepository.UpdateAsync(order, cancellationToken);
             }
         }
 

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

@@ -84,7 +84,7 @@ namespace Hotline.FlowEngine.Workflows
         /// 特提至中心(优先派单组其次坐席)
         /// </summary>
         /// <returns></returns>
-        Task RecallToCenterFirstToSendAsync(string workflowId, string opinion, bool isOrderFiled, DateTime? expiredTime,
+        Task<bool> RecallToCenterFirstToSendAsync(string workflowId, string opinion, bool isOrderFiled, DateTime? expiredTime,
             CancellationToken cancellationToken);
 
         ///// <summary>

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

@@ -1185,10 +1185,11 @@ namespace Hotline.FlowEngine.Workflows
         /// <summary>
         /// 特提至中心(优先派单组其次坐席)
         /// </summary>
-        /// <returns></returns>
-        public async Task RecallToCenterFirstToSendAsync(string workflowId, string opinion, bool isOrderFiled,
+        /// <returns>true 派单组  false 话务部</returns>
+        public async Task<bool> RecallToCenterFirstToSendAsync(string workflowId, string opinion, bool isOrderFiled,
             DateTime? expiredTime, CancellationToken cancellationToken)
         {
+            bool isPaiDan = true;
             var workflow = await GetWorkflowAsync(workflowId, withDefine: true, withSteps: true, withTraces: true, withCountersigns: true,
                 cancellationToken: cancellationToken);
             var sendStep = workflow.Steps.FirstOrDefault(d => d.BusinessType == EBusinessType.Send);
@@ -1260,7 +1261,9 @@ namespace Hotline.FlowEngine.Workflows
                 //flowAssignInfo.FlowAssignType = EFlowAssignType.Role;
                 await RecallAsync(workflow, dto, targetStepDefine, flowAssignInfo, EWorkflowTraceType.Recall, expiredTime, isOrderFiled,
                     cancellationToken);
+                isPaiDan = false;
             }
+            return isPaiDan;
         }
 
         //private async Task RecallToTargetStepAsync(Workflow workflow, WorkflowStep targetStep, string opinion, ISessionContext current,