Procházet zdrojové kódy

自贡任务 501 调整【提起甄别审批统计】

tangjiang před 1 týdnem
rodič
revize
1aeaf9c17b

+ 258 - 234
src/Hotline.Application/OrderApp/OrderApplication.cs

@@ -1,4 +1,5 @@
-using DocumentFormat.OpenXml.Spreadsheet;
+using DocumentFormat.OpenXml.Drawing.Diagrams;
+using DocumentFormat.OpenXml.Spreadsheet;
 using DotNetCore.CAP;
 using FluentValidation;
 using Hotline.Application.FlowEngine;
@@ -4030,24 +4031,44 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     /// <returns></returns>
     public ISugarQueryable<OrderScreenAuditVo> OrderScreenAudit(OrderScreenAuditPagedRequest dto)
     {
-        var query = _workflowTraceRepository.Queryable()
-            .Where(x => x.ModuleCode == "OrderScreen")
-            .WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, x => x.HandleTime >= dto.StartTime && x.HandleTime <= dto.EndTime)
-            .WhereIF(!string.IsNullOrEmpty(dto.AuditUserName), x => x.HandlerName == dto.AuditUserName)
-            .Where(x => x.HandlerName != null && x.HandlerName != "")
-            .WhereIF(dto.AuditType is 1, x => x.Name == "班长审批")
-            .WhereIF(dto.AuditType is 2, x => x.Name == "中心领导")
-             .WhereIF(_appOptions.Value.IsZiGong && dto.AuditType is 3, x => x.Name == "中心初审")
-            .GroupBy(x => new { x.HandlerName })
-            .Select(x => new OrderScreenAuditVo
-            {
-                AuditName = x.HandlerName,
-                AuditNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.TraceType == EWorkflowTraceType.Normal && x.TraceState == EWorkflowTraceState.Normal, 1,
-                    0)),
-                AuditBackNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.TraceState == EWorkflowTraceState.StepRemoveByPrevious ||
-                x.TraceState == EWorkflowTraceState.StepRemoveByRecall, 1, 0)),
-            });
-        return query;
+        if (_appOptions.Value.IsZiGong)
+        {
+            return _workflowTraceRepository.Queryable()
+                .Where(x => x.ModuleCode == "OrderScreen")
+                .WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, x => x.HandleTime >= dto.StartTime && x.HandleTime <= dto.EndTime)
+                .WhereIF(!string.IsNullOrEmpty(dto.AuditUserName), x => x.HandlerName == dto.AuditUserName)
+                .Where(x => x.HandlerName != null && x.HandlerName != "")
+                .WhereIF(!string.IsNullOrEmpty(dto.StepName), x => x.Name == dto.StepName)
+                //.WhereIF(dto.AuditType is 1, x => x.Name == "班长审批")
+                //.WhereIF(dto.AuditType is 2, x => x.Name == "中心领导")
+                // .WhereIF(_appOptions.Value.IsZiGong && dto.AuditType is 3, x => x.Name == "中心初审")
+                .GroupBy(x => new { x.HandlerName, x.Name })
+                .Select(x => new OrderScreenAuditVo
+                {
+                    AuditName = x.HandlerName,
+                    StepName = x.Name,
+                    AuditNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.TraceType == EWorkflowTraceType.Normal && x.TraceState == EWorkflowTraceState.Normal, 1, 0)),
+                    AuditBackNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.TraceState == EWorkflowTraceState.StepRemoveByPrevious || x.TraceState == EWorkflowTraceState.StepRemoveByRecall, 1, 0)),
+                });
+        }
+        else
+        {
+            return _workflowTraceRepository.Queryable()
+               .Where(x => x.ModuleCode == "OrderScreen")
+               .WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, x => x.HandleTime >= dto.StartTime && x.HandleTime <= dto.EndTime)
+               .WhereIF(!string.IsNullOrEmpty(dto.AuditUserName), x => x.HandlerName == dto.AuditUserName)
+               .Where(x => x.HandlerName != null && x.HandlerName != "")
+               .WhereIF(dto.AuditType is 1, x => x.Name == "班长审批")
+               .WhereIF(dto.AuditType is 2, x => x.Name == "中心领导")
+                .WhereIF(_appOptions.Value.IsZiGong && dto.AuditType is 3, x => x.Name == "中心初审")
+               .GroupBy(x => new { x.HandlerName })
+               .Select(x => new OrderScreenAuditVo
+               {
+                   AuditName = x.HandlerName,
+                   AuditNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.TraceType == EWorkflowTraceType.Normal && x.TraceState == EWorkflowTraceState.Normal, 1, 0)),
+                   AuditBackNum = SqlFunc.AggregateSum(SqlFunc.IIF(x.TraceState == EWorkflowTraceState.StepRemoveByPrevious, 1, 0)),
+               });
+        }
     }
 
     /// <summary>
@@ -4769,15 +4790,16 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                     case EBusinessType.Send:
                         // 平均派单
                         var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
-                        if (averageSendOrder) {
-							var sendOrderTrace = workflow.Traces
-		                    .Where(x => x.BusinessType == EBusinessType.Send && x.HandlerId != AppDefaults.SendPoolId)
-		                    .MaxBy(x => x.CreationTime);
-							var prevSendOrder = sendOrderTrace is not null;
-							if (prevSendOrder)
-							{
-								prevSendOrder = await _orderDomainService.SchedulingAtWork(sendOrderTrace.HandlerId);
-							}
+                        if (averageSendOrder)
+                        {
+                            var sendOrderTrace = workflow.Traces
+                            .Where(x => x.BusinessType == EBusinessType.Send && x.HandlerId != AppDefaults.SendPoolId)
+                            .MaxBy(x => x.CreationTime);
+                            var prevSendOrder = sendOrderTrace is not null;
+                            if (prevSendOrder)
+                            {
+                                prevSendOrder = await _orderDomainService.SchedulingAtWork(sendOrderTrace.HandlerId);
+                            }
                             if (prevSendOrder)
                             {
                                 rsp = new StepAssignInfo()
@@ -4792,10 +4814,11 @@ public class OrderApplication : IOrderApplication, IScopeDependency
 
                                 };
                             }
-                            else {
-								rsp = await _orderDomainService.AverageOrder(cancellationToken);
-							}
-						}
+                            else
+                            {
+                                rsp = await _orderDomainService.AverageOrder(cancellationToken);
+                            }
+                        }
                         break;
                     case EBusinessType.Department:
                         rsp = new StepAssignInfo
@@ -4980,37 +5003,37 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                     case EBusinessType.Send:
                         // 平均派单
                         var averageSendOrder = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.AverageSendOrder).SettingValue[0]);
-						if (averageSendOrder)
-						{
-							var sendOrderTrace = workflow.Traces
-							.Where(x => x.BusinessType == EBusinessType.Send && x.HandlerId != AppDefaults.SendPoolId)
-							.MaxBy(x => x.CreationTime);
-							var prevSendOrder = sendOrderTrace is not null;
-							if (prevSendOrder)
-							{
-								prevSendOrder = await _orderDomainService.SchedulingAtWork(sendOrderTrace.HandlerId);
-							}
-							if (prevSendOrder)
-							{
-								//todo
-								rsp = new StepAssignInfo()
-								{
-									Key = sendOrderTrace.HandlerId,
-									Value = sendOrderTrace.HandlerName,
-									UserId = sendOrderTrace.HandlerId,
-									Username = sendOrderTrace.HandlerName,
-									OrgId = sendOrderTrace.HandlerOrgId,
-									OrgName = sendOrderTrace.HandlerOrgName,
-									FlowAssignType = EFlowAssignType.User
-
-								};
-							}
-							else
-							{
-								rsp = await _orderDomainService.AverageOrder(cancellationToken);
-							}
-						}
-						break;
+                        if (averageSendOrder)
+                        {
+                            var sendOrderTrace = workflow.Traces
+                            .Where(x => x.BusinessType == EBusinessType.Send && x.HandlerId != AppDefaults.SendPoolId)
+                            .MaxBy(x => x.CreationTime);
+                            var prevSendOrder = sendOrderTrace is not null;
+                            if (prevSendOrder)
+                            {
+                                prevSendOrder = await _orderDomainService.SchedulingAtWork(sendOrderTrace.HandlerId);
+                            }
+                            if (prevSendOrder)
+                            {
+                                //todo
+                                rsp = new StepAssignInfo()
+                                {
+                                    Key = sendOrderTrace.HandlerId,
+                                    Value = sendOrderTrace.HandlerName,
+                                    UserId = sendOrderTrace.HandlerId,
+                                    Username = sendOrderTrace.HandlerName,
+                                    OrgId = sendOrderTrace.HandlerOrgId,
+                                    OrgName = sendOrderTrace.HandlerOrgName,
+                                    FlowAssignType = EFlowAssignType.User
+
+                                };
+                            }
+                            else
+                            {
+                                rsp = await _orderDomainService.AverageOrder(cancellationToken);
+                            }
+                        }
+                        break;
                     case EBusinessType.Department:
                         rsp = new StepAssignInfo
                         {
@@ -6489,199 +6512,200 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     }
 
 
-	#region 坐席退回统计表
-	/// <summary>
-	/// 坐席退回统计表
-	/// </summary>
-	/// <param name="dto"></param>
-	/// <returns></returns>
-	public ISugarQueryable<SeatSendBackStatisticsVo> SeatSendBackStatistics(PagedKeywordRequest dto) 
+    #region 坐席退回统计表
+    /// <summary>
+    /// 坐席退回统计表
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    public ISugarQueryable<SeatSendBackStatisticsVo> SeatSendBackStatistics(PagedKeywordRequest dto)
     {
-		var setting = _systemSettingCacheManager.GetSetting(SettingConstants.RoleZuoXi);
-		var roles = setting?.SettingValue.ToList();
-		var seats =  _userRepository.Queryable()
-			.Includes(d => d.Organization)
-			.Includes(d => d.Roles)
-			.Where(d => d.Roles.Any(x => roles.Contains(x.Name)));
+        var setting = _systemSettingCacheManager.GetSetting(SettingConstants.RoleZuoXi);
+        var roles = setting?.SettingValue.ToList();
+        var seats = _userRepository.Queryable()
+            .Includes(d => d.Organization)
+            .Includes(d => d.Roles)
+            .Where(d => d.Roles.Any(x => roles.Contains(x.Name)));
         var send = _workflowTraceRepository.Queryable()
             .LeftJoin<Order>((x, o) => x.ExternalId == o.Id)
-            .Where((x, o) => x.HandlerOrgId  != OrgSeedData.CenterId && (x.PrevStepName == "班长审批"|| x.PrevStepName == "派单组") && o.CreationTime >= dto.StartTime && o.CreationTime <= dto.EndTime && x.CreationTime >= dto.StartTime)
-            .GroupBy((x, o) => new {o.AcceptorId  })
-            .Select((x, o) => new SeatSendBackStatisticsVo { UserId = o.AcceptorId , SendOrderNum = SqlFunc.AggregateDistinctCount(x.ExternalId) });
-
-      //  var sendBack = _workflowTraceRepository.Queryable()
-			   //.LeftJoin<Order>((x, o) => x.ExternalId == o.Id)
-      //         .Where((x, o) => o.CreationTime >= dto.StartTime && o.CreationTime <= dto.EndTime && x.CreationTime >= dto.StartTime && x.BusinessType == EBusinessType.Seat && (x.PrevStepName == "班长审批" || x.PrevStepName == "派单组"))
-			   //.GroupBy((x, o) => new { o.AcceptorId})
-			   //.Select((x, o) => new { UserId = o.AcceptorId, SendOrderBackNum = SqlFunc.AggregateDistinctCount(x.ExternalId), SendOrderBackNumber = SqlFunc.AggregateCount(x.ExternalId) });
+            .Where((x, o) => x.HandlerOrgId != OrgSeedData.CenterId && (x.PrevStepName == "班长审批" || x.PrevStepName == "派单组") && o.CreationTime >= dto.StartTime && o.CreationTime <= dto.EndTime && x.CreationTime >= dto.StartTime)
+            .GroupBy((x, o) => new { o.AcceptorId })
+            .Select((x, o) => new SeatSendBackStatisticsVo { UserId = o.AcceptorId, SendOrderNum = SqlFunc.AggregateDistinctCount(x.ExternalId) });
+
+        //  var sendBack = _workflowTraceRepository.Queryable()
+        //.LeftJoin<Order>((x, o) => x.ExternalId == o.Id)
+        //         .Where((x, o) => o.CreationTime >= dto.StartTime && o.CreationTime <= dto.EndTime && x.CreationTime >= dto.StartTime && x.BusinessType == EBusinessType.Seat && (x.PrevStepName == "班长审批" || x.PrevStepName == "派单组"))
+        //.GroupBy((x, o) => new { o.AcceptorId})
+        //.Select((x, o) => new { UserId = o.AcceptorId, SendOrderBackNum = SqlFunc.AggregateDistinctCount(x.ExternalId), SendOrderBackNumber = SqlFunc.AggregateCount(x.ExternalId) });
         var sendBack = _orderSendBackAuditRepository.Queryable()
-			.LeftJoin<Order>((x, o) => x.OrderId == o.Id)
-			.Where((x, o) => x.ApplyOrgId != OrgSeedData.CenterId && (x.SendBackStepName == "班长审批" || x.SendBackStepName == "派单组") && o.CreationTime >= dto.StartTime && o.CreationTime <= dto.EndTime)
-			.GroupBy((x, o) => new { o.AcceptorId })
-			.Select((x, o) => new SeatSendBackStatisticsVo { UserId = o.AcceptorId, SendOrderBackNum = SqlFunc.AggregateDistinctCount(x.OrderId), SendOrderBackNumber = SqlFunc.AggregateCount(x.Id) });
+            .LeftJoin<Order>((x, o) => x.OrderId == o.Id)
+            .Where((x, o) => x.ApplyOrgId != OrgSeedData.CenterId && (x.SendBackStepName == "班长审批" || x.SendBackStepName == "派单组") && o.CreationTime >= dto.StartTime && o.CreationTime <= dto.EndTime)
+            .GroupBy((x, o) => new { o.AcceptorId })
+            .Select((x, o) => new SeatSendBackStatisticsVo { UserId = o.AcceptorId, SendOrderBackNum = SqlFunc.AggregateDistinctCount(x.OrderId), SendOrderBackNumber = SqlFunc.AggregateCount(x.Id) });
 
 
-		var filed = _orderRepository.Queryable()
-            .Where(x=> x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime && x.Status >= EOrderStatus.Filed && x.FileOrgIsCenter == true)
-            .GroupBy(x=>x.AcceptorId)
+        var filed = _orderRepository.Queryable()
+            .Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime && x.Status >= EOrderStatus.Filed && x.FileOrgIsCenter == true)
+            .GroupBy(x => x.AcceptorId)
             .Select(x => new SeatSendBackStatisticsVo { UserId = x.AcceptorId, CentreFileNum = SqlFunc.AggregateDistinctCount(x.Id) });
 
         var back = _orderSpecialRepository.Queryable()
              .LeftJoin<Order>((x, o) => x.OrderId == o.Id)
              .Where((x, o) => o.CreationTime >= dto.StartTime && o.CreationTime <= dto.EndTime && x.SpecialType == ESpecialType.SendBack && x.NextStepCode == "start")
              .GroupBy((x, o) => new { o.AcceptorId })
-             .Select((x, o) => new SeatSendBackStatisticsVo { UserId = o.AcceptorId, CentreFileBackNum = SqlFunc.AggregateDistinctCount(x.OrderId), CentreFileBackNumber = SqlFunc.AggregateCount(x.OrderId)});
-
-      var query =   seats.LeftJoin(send, (s, sd) => s.Id == sd.UserId)
-            .LeftJoin(sendBack, (s, sd, sb) => s.Id == sb.UserId)
-            .LeftJoin(filed, (s, sd, sb, f) => s.Id == f.UserId)
-            .LeftJoin(back, (s, sd, sb, f, b) => s.Id == b.UserId)
-            .GroupBy((s, sd, sb, f, b) => new { s.Id, s.Name })
-			.Select((s, sd, sb, f, b) => new SeatSendBackStatisticsVo
-			{
-				UserId = s.Id,
-				UserName = s.Name,
-				SendOrderNum = SqlFunc.AggregateSum(sd.SendOrderNum),
-				SendOrderBackNum = SqlFunc.AggregateSum(sb.SendOrderBackNum),
-				SendOrderBackNumber = SqlFunc.AggregateSum(sb.SendOrderBackNumber),
-				CentreFileNum = SqlFunc.AggregateSum(f.CentreFileNum),
-				CentreFileBackNum = SqlFunc.AggregateSum(b.CentreFileBackNum),
-				CentreFileBackNumber = SqlFunc.AggregateSum(b.CentreFileBackNumber),
-			});
+             .Select((x, o) => new SeatSendBackStatisticsVo { UserId = o.AcceptorId, CentreFileBackNum = SqlFunc.AggregateDistinctCount(x.OrderId), CentreFileBackNumber = SqlFunc.AggregateCount(x.OrderId) });
+
+        var query = seats.LeftJoin(send, (s, sd) => s.Id == sd.UserId)
+              .LeftJoin(sendBack, (s, sd, sb) => s.Id == sb.UserId)
+              .LeftJoin(filed, (s, sd, sb, f) => s.Id == f.UserId)
+              .LeftJoin(back, (s, sd, sb, f, b) => s.Id == b.UserId)
+              .GroupBy((s, sd, sb, f, b) => new { s.Id, s.Name })
+              .Select((s, sd, sb, f, b) => new SeatSendBackStatisticsVo
+              {
+                  UserId = s.Id,
+                  UserName = s.Name,
+                  SendOrderNum = SqlFunc.AggregateSum(sd.SendOrderNum),
+                  SendOrderBackNum = SqlFunc.AggregateSum(sb.SendOrderBackNum),
+                  SendOrderBackNumber = SqlFunc.AggregateSum(sb.SendOrderBackNumber),
+                  CentreFileNum = SqlFunc.AggregateSum(f.CentreFileNum),
+                  CentreFileBackNum = SqlFunc.AggregateSum(b.CentreFileBackNum),
+                  CentreFileBackNumber = SqlFunc.AggregateSum(b.CentreFileBackNumber),
+              });
         return query;
-	}
+    }
 
 
-	/// <summary>
-	/// 坐席退回统计表明细
-	/// </summary>
-	/// <param name="dto"></param>
-	/// <returns></returns>
-	public ISugarQueryable<OrderDto> SeatSendBackStatisticsDetail(SeatSendBackStatisticsDetail dto) {
+    /// <summary>
+    /// 坐席退回统计表明细
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    public ISugarQueryable<OrderDto> SeatSendBackStatisticsDetail(SeatSendBackStatisticsDetail dto)
+    {
 
-		if (dto.StatisticsType == "sendOrderNum")
+        if (dto.StatisticsType == "sendOrderNum")
         {
-           var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
-                .WhereIF(!string.IsNullOrEmpty(dto.UserId ),x=> x.AcceptorId == dto.UserId)
-				.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No.Contains(dto.No!))
-				.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
-				.WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.AcceptTypeCode == dto.AcceptType) //受理类型
-				.WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.SourceChannelCode == dto.Channel) //来源渠道
-				 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
-					x => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
-				.Where(x => SqlFunc.Subqueryable<WorkflowTrace>().Where(wt => wt.ExternalId == x.Id && wt.HandlerOrgId != OrgSeedData.CenterId && (wt.PrevStepName == "班长审批" || wt.PrevStepName == "派单组")).Any())
-                .Select(x=> new OrderDto() { Id = x.Id.SelectAll() })
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
+            var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                 .WhereIF(!string.IsNullOrEmpty(dto.UserId), x => x.AcceptorId == dto.UserId)
+                 .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No.Contains(dto.No!))
+                 .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
+                 .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.AcceptTypeCode == dto.AcceptType) //受理类型
+                 .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.SourceChannelCode == dto.Channel) //来源渠道
+                  .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
+                     x => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
+                 .Where(x => SqlFunc.Subqueryable<WorkflowTrace>().Where(wt => wt.ExternalId == x.Id && wt.HandlerOrgId != OrgSeedData.CenterId && (wt.PrevStepName == "班长审批" || wt.PrevStepName == "派单组")).Any())
+                 .Select(x => new OrderDto() { Id = x.Id.SelectAll() })
+                 .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
+                 .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
+                 .OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
+                 .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
+                 .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
+                 .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
             return query;
         }
-        else if(dto.StatisticsType == "sendOrderBackNum")
+        else if (dto.StatisticsType == "sendOrderBackNum")
         {
-			var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime )
-				.WhereIF(!string.IsNullOrEmpty(dto.UserId), x => x.AcceptorId == dto.UserId)
-				.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No.Contains(dto.No!))
-				.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
-				.WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.AcceptTypeCode == dto.AcceptType) //受理类型
-				.WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.SourceChannelCode == dto.Channel) //来源渠道
-				 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
-					x => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
-				.Where(x => SqlFunc.Subqueryable<OrderSendBackAudit>().Where(os => os.OrderId == x.Id && os.ApplyOrgId != OrgSeedData.CenterId && (os.SendBackStepName == "班长审批" || os.SendBackStepName == "派单组")).Any())
-				.Select(x => new OrderDto() { Id = x.Id.SelectAll() })
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
-			return query;
-		}
-		else if (dto.StatisticsType == "sendOrderBackNumber")
-		{
-			var query = _orderRepository.Queryable()
+            var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                .WhereIF(!string.IsNullOrEmpty(dto.UserId), x => x.AcceptorId == dto.UserId)
+                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No.Contains(dto.No!))
+                .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
+                .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.AcceptTypeCode == dto.AcceptType) //受理类型
+                .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.SourceChannelCode == dto.Channel) //来源渠道
+                 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
+                    x => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
+                .Where(x => SqlFunc.Subqueryable<OrderSendBackAudit>().Where(os => os.OrderId == x.Id && os.ApplyOrgId != OrgSeedData.CenterId && (os.SendBackStepName == "班长审批" || os.SendBackStepName == "派单组")).Any())
+                .Select(x => new OrderDto() { Id = x.Id.SelectAll() })
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
+            return query;
+        }
+        else if (dto.StatisticsType == "sendOrderBackNumber")
+        {
+            var query = _orderRepository.Queryable()
                 .LeftJoin<OrderSendBackAudit>((x, os) => x.Id == os.OrderId && os.ApplyOrgId != OrgSeedData.CenterId && (os.SendBackStepName == "班长审批" || os.SendBackStepName == "派单组"))
-				.WhereIF(!string.IsNullOrEmpty(dto.No), (x, os) => x.No.Contains(dto.No!))
-				.WhereIF(!string.IsNullOrEmpty(dto.Title), (x, os) => x.Title.Contains(dto.Title!))
-				.WhereIF(!string.IsNullOrEmpty(dto.AcceptType), (x, os) => x.AcceptTypeCode == dto.AcceptType) //受理类型
-				.WhereIF(!string.IsNullOrEmpty(dto.Channel), (x, os) => x.SourceChannelCode == dto.Channel) //来源渠道
-				 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
-					(x, os) => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
-				.Where((x, os) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
-				.WhereIF(!string.IsNullOrEmpty(dto.UserId), (x, os) => x.AcceptorId == dto.UserId)
-				.Select((x, os) => new OrderDto() { Id = x.Id.SelectAll(), SendBackOpinion = os.Content, SendBackAuditTime = os.AuditTime })
+                .WhereIF(!string.IsNullOrEmpty(dto.No), (x, os) => x.No.Contains(dto.No!))
+                .WhereIF(!string.IsNullOrEmpty(dto.Title), (x, os) => x.Title.Contains(dto.Title!))
+                .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), (x, os) => x.AcceptTypeCode == dto.AcceptType) //受理类型
+                .WhereIF(!string.IsNullOrEmpty(dto.Channel), (x, os) => x.SourceChannelCode == dto.Channel) //来源渠道
+                 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
+                    (x, os) => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
+                .Where((x, os) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                .WhereIF(!string.IsNullOrEmpty(dto.UserId), (x, os) => x.AcceptorId == dto.UserId)
+                .Select((x, os) => new OrderDto() { Id = x.Id.SelectAll(), SendBackOpinion = os.Content, SendBackAuditTime = os.AuditTime })
                 .MergeTable()
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
-			return query;
-		}
-		else if (dto.StatisticsType == "centreFileNum")
-		{
-			var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime )
-				.WhereIF(!string.IsNullOrEmpty(dto.UserId), x => x.AcceptorId == dto.UserId)
-				.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No.Contains(dto.No!))
-				.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
-				.WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.AcceptTypeCode == dto.AcceptType) //受理类型
-				.WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.SourceChannelCode == dto.Channel) //来源渠道
-				 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
-					x => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
-				.Where(x => x.Status >= EOrderStatus.Filed && x.FileOrgIsCenter == true).Select(x => new OrderDto() { Id = x.Id.SelectAll() })
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
-			return query;
-		}
-		else if (dto.StatisticsType == "centreFileBackNum")
-		{
-			var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime )
-				.WhereIF(!string.IsNullOrEmpty(dto.UserId), x => x.AcceptorId == dto.UserId)
-				.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No.Contains(dto.No!))
-				.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
-				.WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.AcceptTypeCode == dto.AcceptType) //受理类型
-				.WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.SourceChannelCode == dto.Channel) //来源渠道
-				 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
-					x => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
-				.Where(x => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == x.Id && os.SpecialType == ESpecialType.SendBack && os.NextStepCode == "start").Any())
-				.Select(x => new OrderDto() { Id = x.Id.SelectAll() })
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
-			return query;
-		}
-		else if (dto.StatisticsType == "centreFileBackNumber")
-		{
-			var query = _orderRepository.Queryable().LeftJoin<OrderSpecial>((x, os) => x.Id == os.OrderId &&  os.SpecialType == ESpecialType.SendBack && os.NextStepCode == "start")
-				.WhereIF(!string.IsNullOrEmpty(dto.No), (x, os) => x.No.Contains(dto.No!))
-				.WhereIF(!string.IsNullOrEmpty(dto.Title), (x, os) => x.Title.Contains(dto.Title!))
-				.WhereIF(!string.IsNullOrEmpty(dto.AcceptType), (x, os) => x.AcceptTypeCode == dto.AcceptType) //受理类型
-				.WhereIF(!string.IsNullOrEmpty(dto.Channel), (x, os) => x.SourceChannelCode == dto.Channel) //来源渠道
-				 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
-					(x, os) => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
-				.Where((x, os) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
-				.WhereIF(!string.IsNullOrEmpty(dto.UserId), (x, os) => x.AcceptorId == dto.UserId)
-				.Select((x, os) => new OrderDto() { Id = x.Id.SelectAll() , SendBackOpinion = os.Reason , SendBackAuditTime = os.CreationTime })
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
+            return query;
+        }
+        else if (dto.StatisticsType == "centreFileNum")
+        {
+            var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                .WhereIF(!string.IsNullOrEmpty(dto.UserId), x => x.AcceptorId == dto.UserId)
+                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No.Contains(dto.No!))
+                .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
+                .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.AcceptTypeCode == dto.AcceptType) //受理类型
+                .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.SourceChannelCode == dto.Channel) //来源渠道
+                 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
+                    x => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
+                .Where(x => x.Status >= EOrderStatus.Filed && x.FileOrgIsCenter == true).Select(x => new OrderDto() { Id = x.Id.SelectAll() })
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
+            return query;
+        }
+        else if (dto.StatisticsType == "centreFileBackNum")
+        {
+            var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                .WhereIF(!string.IsNullOrEmpty(dto.UserId), x => x.AcceptorId == dto.UserId)
+                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.No.Contains(dto.No!))
+                .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
+                .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), x => x.AcceptTypeCode == dto.AcceptType) //受理类型
+                .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.SourceChannelCode == dto.Channel) //来源渠道
+                 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
+                    x => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
+                .Where(x => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == x.Id && os.SpecialType == ESpecialType.SendBack && os.NextStepCode == "start").Any())
+                .Select(x => new OrderDto() { Id = x.Id.SelectAll() })
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
+            return query;
+        }
+        else if (dto.StatisticsType == "centreFileBackNumber")
+        {
+            var query = _orderRepository.Queryable().LeftJoin<OrderSpecial>((x, os) => x.Id == os.OrderId && os.SpecialType == ESpecialType.SendBack && os.NextStepCode == "start")
+                .WhereIF(!string.IsNullOrEmpty(dto.No), (x, os) => x.No.Contains(dto.No!))
+                .WhereIF(!string.IsNullOrEmpty(dto.Title), (x, os) => x.Title.Contains(dto.Title!))
+                .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), (x, os) => x.AcceptTypeCode == dto.AcceptType) //受理类型
+                .WhereIF(!string.IsNullOrEmpty(dto.Channel), (x, os) => x.SourceChannelCode == dto.Channel) //来源渠道
+                 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot),
+                    (x, os) => x.HotspotSpliceName != null && x.HotspotSpliceName.Contains(dto.Hotspot)) //热点分类
+                .Where((x, os) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                .WhereIF(!string.IsNullOrEmpty(dto.UserId), (x, os) => x.AcceptorId == dto.UserId)
+                .Select((x, os) => new OrderDto() { Id = x.Id.SelectAll(), SendBackOpinion = os.Reason, SendBackAuditTime = os.CreationTime })
                 .MergeTable()
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
-				.OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
-			return query;
-		}
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.FiledTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 0 }, x => x.SendBackAuditTime, OrderByType.Asc)
+                .OrderByIF(dto is { SortField: "sendBackAuditTime", SortRule: 1 }, x => x.SendBackAuditTime, OrderByType.Desc);
+            return query;
+        }
         return null;
-	}
-	#endregion
+    }
+    #endregion
 }

+ 5 - 0
src/Hotline.Share/Dtos/Order/OrderBiDto.cs

@@ -1570,6 +1570,11 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public string AuditName { get; set; }
 
+        /// <summary>
+        /// 节点名称
+        /// </summary>
+        public string StepName { get; set; }
+
         /// <summary>
         /// 审批数量
         /// </summary>

+ 5 - 0
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -1046,6 +1046,11 @@ public record OrderScreenAuditPagedRequest : PagedKeywordRequest
     /// </summary>
     public int? AuditType { get; set; }
 
+    /// <summary>
+    /// 节点名称
+    /// </summary>
+    public string? StepName { get; set; }
+
 }
 
 public record OrderCenterAcceptPagedRequest : PagedKeywordRequest