Quellcode durchsuchen

Merge branch 'feature/task_25_orderlist' into dev

qinchaoyue vor 6 Monaten
Ursprung
Commit
e1bf55ccba

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

@@ -3987,13 +3987,11 @@ public class OrderController : BaseController
     /// 查询坐席待办
     /// </summary>
     [HttpGet("waited/sign")]
-    public async Task<PagedDto<OrderListOutDto>> QueryWaitedForSeat([FromQuery] QueryOrderWaitedDto dto)
+    public async Task<List<OrderListOutDto>> QueryWaitedForSeat([FromQuery] QueryOrderWaitedDto dto)
     {
-        return (await _orderApplication
+        return await _orderApplication
             .QueryWaitedForSeat(dto)
-            .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted)
-            ).ToPaged();
-            //.ToFixedListAsync(dto, HttpContext.RequestAborted);
+            .ToFixedListAsync(dto, HttpContext.RequestAborted);
     }
 
     [HttpGet("waited/sign/count")]

+ 35 - 31
src/Hotline.Application/Orders/OrderApplication.cs

@@ -2630,45 +2630,49 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         if (dto.IsHandled.HasValue)
         {
             var hasHandled = dto.IsHandled.Value;
-            query = query.Where(d => SqlFunc.Subqueryable<WorkflowTrace>()
-                                         .Where(step => step.ExternalId == d.Id &&
-                                                        (hasHandled || step.Status != EWorkflowStepStatus.Handled) &&
-                                                        (!hasHandled || 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))
+            query = query.Where(d => SqlFunc.Subqueryable<WorkflowTrace>() 
+            .Where(step => step.ExternalId == d.Id && 
+                (hasHandled || step.Status != EWorkflowStepStatus.Handled) && 
+                (!hasHandled || 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))
             );
         }
 
         return 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!))
-           .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
-           .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode)
-           .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
-           .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => d.CounterSignType == null)
-           .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true,
+            // 交办件:已派单其他节点的工单,该选项卡下工单若办结就不显示
+            .WhereIF(dto.TypeCode.HasValue && dto.TypeCode == 1, d => d.ProcessType == EProcessType.Jiaoban && d.Status < EOrderStatus.Filed)
+            // 办结件:当前登录坐席作为最初受理人已办结的工单
+            .WhereIF(dto.TypeCode.HasValue && dto.TypeCode == 2, d=> d.Status >= EOrderStatus.Filed && d.AcceptorId == _sessionContext.RequiredUserId)
+            .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!)) 
+            .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No) 
+            .WhereIF(!string.IsNullOrEmpty(dto.AreaCode), d => d.AreaCode == dto.AreaCode) 
+            .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue) 
+            .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => d.CounterSignType == null) 
+            .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true,
                d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) ||
                     (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
-           .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false,
+            .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false,
                d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now) //即将超期 未办
-           .WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
-           .WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
+            .WhereIF(dto.StartTime.HasValue, d => d.CreationTime >= dto.StartTime)
+            .WhereIF(dto.EndTime.HasValue, d => d.CreationTime <= dto.EndTime)
            //.Where(d => (string.IsNullOrEmpty(d.WorkflowId) && (string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)))
            //.Where(d => string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)
-           .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
-           .Where(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
-           .Where(x => x.Status != EOrderStatus.BackToProvince && x.Status < EOrderStatus.Filed)
-           .OrderBy(d => d.Status)
-           .OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
-           .OrderByIF(dto.IsHandled == false, d => new { IsUrgent = d.IsUrgent, CreationTime = d.CreationTime }, OrderByType.Desc)
-           .Select<OrderListOutDto>();
+            .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
+            .Where(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
+            .Where(x => x.Status != EOrderStatus.BackToProvince && x.Status < EOrderStatus.Filed)
+            .OrderBy(d => d.Status)
+            .OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
+            .OrderByIF(dto.IsHandled == false, d => new { IsUrgent = d.IsUrgent, CreationTime = d.CreationTime }, OrderByType.Desc)
+            .Select<OrderListOutDto>();
     }
 }

+ 6 - 0
src/Hotline.Share/Dtos/Order/OrderWaitedDto.cs

@@ -57,6 +57,12 @@ namespace Hotline.Share.Dtos.Order
         public int QueryIndex { get; set; }
 
         public int QueryCount { get; set; }
+
+        /// <summary>
+        /// 1: 交办件
+        /// 2: 直办件
+        /// </summary>
+        public int? TypeCode { get; set; }
     }
 
     /// <summary>