Browse Source

489 新增坐席退回统计表

优化查询逻辑并调整返回类型

修改 `sendBack` 查询逻辑,替换为 `_orderSendBackAuditRepository`,并调整查询和分组条件。简化 `filed` 查询逻辑,去掉重复声明。将 `SeatSendBackStatisticsDetail` 方法的返回类型从 `ISugarQueryable<Order>` 修改为 `ISugarQueryable<OrderDto>`,并根据 `dto.StatisticsType` 调整查询逻辑,添加 `Select` 语句返回 `OrderDto` 对象。删除多余的 `return query;` 语句,方法末尾添加 `return null;`。
田爽 2 tuần trước cách đây
mục cha
commit
94d2b88494
1 tập tin đã thay đổi với 38 bổ sung22 xóa
  1. 38 22
      src/Hotline.Application/OrderApp/OrderApplication.cs

+ 38 - 22
src/Hotline.Application/OrderApp/OrderApplication.cs

@@ -6096,13 +6096,19 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .GroupBy((x, o) => new {o.AcceptorId ,x.ExternalId })
             .Select((x, o) => new { 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 = _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 { x.ApplyOrgId })
+			.Select((x, o) => new { UserId = x.ApplyOrgId, SendOrderBackNum = SqlFunc.AggregateDistinctCount(x.OrderId), SendOrderBackNumber = SqlFunc.AggregateCount(x.Id) });
+
 
-        var filed = _orderRepository.Queryable()
+		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 { UserId = x.AcceptorId, FiledNum = SqlFunc.AggregateDistinctCount(x.Id) });
@@ -6137,41 +6143,51 @@ public class OrderApplication : IOrderApplication, IScopeDependency
 	/// </summary>
 	/// <param name="dto"></param>
 	/// <returns></returns>
-	public ISugarQueryable<Order> SeatSendBackStatisticsDetail(SeatSendBackStatisticsDetail dto) {
-
-        var query = _orderRepository.Queryable();
+	public ISugarQueryable<OrderDto> SeatSendBackStatisticsDetail(SeatSendBackStatisticsDetail dto) {
 
 		if (dto.StatisticsType == "sendOrderNum")
         {
-            query = query.Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
-                .Where(x => SqlFunc.Subqueryable<WorkflowTrace>().Where(wt => wt.ExternalId == x.Id && wt.HandlerOrgId != OrgSeedData.CenterId && (wt.PrevStepName == "班长审批" || wt.PrevStepName == "派单组")).Any());
+           var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                .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() });
+            return query;
         }
         else if(dto.StatisticsType == "sendOrderBackNum")
         {
-			query = query.Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
-                .Where(x => SqlFunc.Subqueryable<WorkflowTrace>().Where(wt => wt.ExternalId == x.Id && wt.BusinessType == EBusinessType.Seat && (wt.PrevStepName == "班长审批" || wt.PrevStepName == "派单组")).Any());
+			var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+				.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() });
+			return query;
 		}
 		else if (dto.StatisticsType == "sendOrderBackNumber")
 		{
-            query = query.LeftJoin<WorkflowTrace>((x, wt) => x.Id == wt.ExternalId && wt.BusinessType == EBusinessType.Seat && (wt.PrevStepName == "班长审批" || wt.PrevStepName == "派单组"))
-                .Where((x, wt) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime).Select((x, wt) => x.SelectAll());
+			var query = _orderRepository.Queryable()
+                .LeftJoin<OrderSendBackAudit>((x, os) => x.Id == os.OrderId && os.ApplyOrgId != OrgSeedData.CenterId && (os.SendBackStepName == "班长审批" || os.SendBackStepName == "派单组"))
+				.Where((x, os) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+				.Select((x, os) => new OrderDto() { Id = x.Id.SelectAll(), SendBackOpinion = os.Content, SendBackAuditTime = os.AuditTime });
+			return query;
 		}
 		else if (dto.StatisticsType == "centreFileNum")
 		{
-			query = query.Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
-                .Where(x => x.Status >= EOrderStatus.Filed && x.FileOrgIsCenter == true);
+			var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                .Where(x => x.Status >= EOrderStatus.Filed && x.FileOrgIsCenter == true).Select(x => new OrderDto() { Id = x.Id.SelectAll() });
+			return query;
 		}
 		else if (dto.StatisticsType == "centreFileBackNum")
 		{
-			query = query.Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
-                .Where(x => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == x.Id && os.SpecialType == ESpecialType.SendBack && os.NextStepCode == "start").Any());
+			var query = _orderRepository.Queryable().Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                .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() });
+			return query;
 		}
 		else if (dto.StatisticsType == "centreFileBackNumber")
 		{
-			query = query.LeftJoin<OrderSpecial>((x, os) => x.Id == os.OrderId &&  os.SpecialType == ESpecialType.SendBack && os.NextStepCode == "start")
-				.Where((x, os) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime).Select((x, os) => x.SelectAll());
+			var query = _orderRepository.Queryable().LeftJoin<OrderSpecial>((x, os) => x.Id == os.OrderId &&  os.SpecialType == ESpecialType.SendBack && os.NextStepCode == "start")
+				.Where((x, os) => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime)
+                .Select((x, os) => new OrderDto() { Id = x.Id.SelectAll() , SendBackOpinion = os.Reason , SendBackAuditTime = os.CreationTime });
+			return query;
 		}
-        return query;
+        return null;
 	}
 	#endregion
 }