Эх сурвалжийг харах

fix: 自建工单自己查看不到

xf 9 сар өмнө
parent
commit
b6de28d27e

+ 16 - 5
src/Hotline.Api/Controllers/OrderController.cs

@@ -3155,8 +3155,7 @@ public class OrderController : BaseController
         //}
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
-
-
+    
     /// <summary>
     /// 查询坐席待办
     /// </summary>
@@ -3172,7 +3171,20 @@ public class OrderController : BaseController
         if (dto.EndTime.HasValue)
             dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
 
-        var (total, items) = await _orderRepository.Queryable(hasHandled: dto.IsHandled)
+        var query = _orderRepository.Queryable();
+        if(dto.IsHandled.HasValue)
+            query = query.Where(d => SqlFunc.Subqueryable<WorkflowTrace>()
+                .Where(step => step.ExternalId == d.Id &&
+                               (dto.IsHandled!.Value || step.Status != EWorkflowStepStatus.Handled) &&
+                               (!dto.IsHandled!.Value || step.Status == EWorkflowStepStatus.Handled && step.TraceState != EWorkflowTraceState.StepRemoveByPrevious) &&
+                               ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
+                                (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
+                                (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId)))).Any() || 
+                                     (string.IsNullOrEmpty(d.WorkflowId) && 
+                                      (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId))
+            );
+
+        var (total, items) = await query
             .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
             .WhereIF(dto.IsHandled.HasValue, d => handleStatuses.Contains(d.Status))
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword!))
@@ -3224,8 +3236,7 @@ public class OrderController : BaseController
 
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
-
-
+    
     /// <summary>
     /// 查询中心待办
     /// </summary>