田爽 9 месяцев назад
Родитель
Сommit
24b2a17517

+ 18 - 9
src/Hotline.Api/Controllers/OrderController.cs

@@ -1728,9 +1728,10 @@ public class OrderController : BaseController
             .Includes(x => x.OrderVisit)
             .Includes(x => x.OrderVisit, y => y.Order)
             .Includes(x => x.OrderVisit, y => y.Employee)
-            .LeftJoin<OrderScreen>((x, s) => x.Id == s.VisitDetailId && s.IsDeleted == false)
-            .WhereIF(dto.ScreenSendBack is 1, (x, s) => s.Status == EScreenStatus.SendBack && s.SendBackApply == true)
-            .WhereIF(dto.ScreenSendBack is 2, (x, s) => (s.Status != EScreenStatus.SendBack && s.SendBackApply != true) || s.Id == null)
+            //.LeftJoin<OrderScreen>((x, s) => x.Id == s.VisitDetailId && s.IsDeleted == false)
+            .Includes(x=>x.OrderScreens)
+            .WhereIF(dto.ScreenSendBack is 1, x => x.OrderScreens.Any(s=>s.Status == EScreenStatus.SendBack && s.SendBackApply == true))
+            .WhereIF(dto.ScreenSendBack is 2, x => x.OrderScreens.Any(s=> (s.Status != EScreenStatus.SendBack && s.SendBackApply != true) || s.Id == null))
             .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order!.No!.Contains(dto.No!))
             .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order!.Title!.Contains(dto.Title!))
             .WhereIF(dto.IsProvince.HasValue, x => x.OrderVisit.Order!.IsProvince == dto.IsProvince)
@@ -1757,13 +1758,13 @@ public class OrderController : BaseController
             //    x => SqlFunc.JsonListObjectAny(x.OrgHandledAttitude, "Key", dto.OrgHandledAttitude))
             //.WhereIF(!string.IsNullOrEmpty(dto.OrgNoSatisfiedReason),
             //    x => SqlFunc.JsonField(x.OrgNoSatisfiedReason, "Key") == dto.OrgNoSatisfiedReason)
-            .Where((x, s) => x.OrderVisit.VisitState == EVisitState.Visited && x.OrderVisit.IsCanHandle);
+            .Where(x=> x.OrderVisit.VisitState == EVisitState.Visited && x.OrderVisit.IsCanHandle);
         if (_sessionContext.OrgId != null && !_sessionContext.OrgIsCenter)
         {
             query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
-                    (x, s) => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
+                    x => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
                               x.OrderVisit.Order.No.Contains(dto.Keyword!))
-                .Where((x, s) => x.VisitTarget == EVisitTarget.Org && x.VisitOrgCode == _sessionContext.OrgId && (
+                .Where(x => x.VisitTarget == EVisitTarget.Org && x.VisitOrgCode == _sessionContext.OrgId && (
                     SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
                     SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2" ||
                     SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
@@ -1773,9 +1774,9 @@ public class OrderController : BaseController
         else
         {
             query.WhereIF(!string.IsNullOrEmpty(dto.Keyword),
-                    (x, s) => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
+                    x => x.OrderVisit.Order.Title.Contains(dto.Keyword!) ||
                               x.OrderVisit.Order.No.Contains(dto.Keyword!))
-                .Where((x, s) => x.VisitTarget == EVisitTarget.Org && (
+                .Where(x => x.VisitTarget == EVisitTarget.Org && (
                     SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "1" ||
                     SqlFunc.JsonField(x.OrgProcessingResults, "Key") == "2" ||
                     SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == "1" ||
@@ -1784,7 +1785,15 @@ public class OrderController : BaseController
         }
 
         var (total, items) = await query
-            .OrderByDescending((x, s) => x.CreationTime)
+            .OrderByIF(dto is { SortRule: 0, SortField: "order.startTime" }, x => x.OrderVisit.Order.StartTime, OrderByType.Asc)
+            .OrderByIF(dto is { SortRule: 1, SortField: "order.startTime" }, x => x.OrderVisit.Order.StartTime, OrderByType.Desc)
+            .OrderByIF(dto is { SortRule: 0, SortField: "order.actualHandleTime" }, x => x.OrderVisit.Order.ActualHandleTime, OrderByType.Asc)
+            .OrderByIF(dto is { SortRule: 1, SortField: "order.actualHandleTime" }, x => x.OrderVisit.Order.ActualHandleTime, OrderByType.Desc)
+            .OrderByIF(dto is { SortRule: 0, SortField: "order.filedTime" }, x => x.OrderVisit.Order.FiledTime, OrderByType.Asc)
+            .OrderByIF(dto is { SortRule: 1, SortField: "order.filedTime" }, x => x.OrderVisit.Order.FiledTime, OrderByType.Desc)
+            .OrderByIF(dto is { SortRule: 0, SortField: "orderVisit.visitTime" }, x => x.OrderVisit.VisitTime, OrderByType.Asc)
+            .OrderByIF(dto is { SortRule: 1, SortField: "orderVisit.visitTime" }, x => x.OrderVisit.VisitTime, OrderByType.Desc)
+			.OrderByDescending(x => x.CreationTime)
             .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
         return new PagedDto<OrderVisitDetailDto>(total, _mapper.Map<IReadOnlyList<OrderVisitDetailDto>>(items));
     }

+ 4 - 1
src/Hotline.Share/Dtos/Knowledge/KnowledgeBiDto.cs

@@ -33,8 +33,11 @@ namespace Hotline.Share.Dtos.Knowledge
 	}
 
 
-	public record KnowledgeBiDataListDto : PagedKeywordRequest
+	public record KnowledgeBiDataListDto : PagedRequest
 	{
+
+		public string? Keyword { get; set; }
+
 		/// <summary>
 		/// 开始时间
 		/// </summary>

+ 6 - 1
src/Hotline.Share/Dtos/Order/OrderVisitDto.cs

@@ -530,7 +530,12 @@ namespace Hotline.Share.Dtos.Order
 
         public OrderSecondaryHandlingDto SecondaryHandling { get; set; }
 
-        public OrderDto Order => OrderVisit != null ? OrderVisit.Order : null;
+        /// <summary>
+        /// 甄别记录
+        /// </summary>
+        public List<OrderScreenDto> OrderScreens { get; set; }
+
+		public OrderDto Order => OrderVisit != null ? OrderVisit.Order : null;
 
         /// <summary>
         /// 语音评价(话务评价)

+ 6 - 0
src/Hotline/Orders/OrderVisitDetail.cs

@@ -24,6 +24,12 @@ namespace Hotline.Orders
         /// </summary>
         [Navigate(NavigateType.OneToOne, nameof(Id),nameof(OrderSecondaryHandling.VisitDetailId))]
         public OrderSecondaryHandling SecondaryHandling { get; set; }
+
+        /// <summary>
+        /// 甄别记录
+        /// </summary>
+        [Navigate(NavigateType.OneToMany,  nameof(OrderScreen.VisitDetailId), nameof(Id))]
+        public List<OrderScreen> OrderScreens { get; set; }
 		/// <summary>
 		/// 语音评价(话务评价)
 		/// </summary>