Ver código fonte

Merge branch 'dev' of http://git.12345lm.cn/Fengwo/hotline into dev

tangjiang 10 meses atrás
pai
commit
22332016de

+ 8 - 4
src/Hotline.Api/Controllers/OrderController.cs

@@ -3098,7 +3098,8 @@ public class OrderController : BaseController
                 .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
                 .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
                 .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
-                .OrderByDescending(d => d.StartTime)
+				.WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
+				.OrderByDescending(d => d.StartTime)
                 .ToPagedListAsync(dto, HttpContext.RequestAborted);
             return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
         }
@@ -3125,7 +3126,8 @@ public class OrderController : BaseController
                 .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
                 .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
                 .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
-                .OrderByDescending(d => d.StartTime)
+                .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
+				.OrderByDescending(d => d.StartTime)
 
                 .ToPagedListAsync(dto, HttpContext.RequestAborted);
             return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
@@ -3187,7 +3189,8 @@ public class OrderController : BaseController
             .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)
-            .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
+            .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
+			.Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
             .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
             .OrderBy(d => d.Status)
             .OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
@@ -3234,7 +3237,8 @@ public class OrderController : BaseController
             .WhereIF(dto.ExpiredStatus is EExpiredStatus.Normal, d => DateTime.Now < d.NearlyExpiredTime)
             .WhereIF(dto.ExpiredStatus is EExpiredStatus.GoingToExpired, d => DateTime.Now > d.NearlyExpiredTime && DateTime.Now < d.ExpiredTime)
             .WhereIF(dto.ExpiredStatus is EExpiredStatus.Expired, d => DateTime.Now >= d.ExpiredTime)
-            .OrderBy(d => d.Status)
+	        .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent.Value)
+			.OrderBy(d => d.Status)
             .OrderBy(d => d.CreationTime, OrderByType.Desc)
             .ToPagedListAsync(dto, HttpContext.RequestAborted);
 

+ 4 - 0
src/Hotline.Application/Mappers/MapperConfigs.cs

@@ -3,6 +3,7 @@ using Hotline.JudicialManagement;
 using Hotline.Orders;
 using Hotline.Push.FWMessage;
 using Hotline.Settings;
+using Hotline.Share.Dtos.Ai;
 using Hotline.Share.Dtos.CallCenter;
 using Hotline.Share.Dtos.JudicialManagement;
 using Hotline.Share.Dtos.OrderExportWord;
@@ -37,6 +38,8 @@ namespace Hotline.Application.Mappers
 
             #endregion
 
+            
+
             config.ForType<EnforcementOrders, EnforcementOrderListDto>()
                 .Map(d => d.Id, x => x.Id)
                 .Map(d => d.WorkflowId, x => x.Order.WorkflowId)
@@ -84,6 +87,7 @@ namespace Hotline.Application.Mappers
              .Map(d => d.ExpiredTime, x => x.ExpiredTime == null ? "" : x.ExpiredTime.Value.ToString("yyyy-MM-dd HH:mm:ss"))
              ;
 
+           
         }
     }
 }

+ 33 - 0
src/Hotline.Application/Mappers/OrderMapperConfigs.cs

@@ -1,7 +1,9 @@
 using Hotline.FlowEngine.Workflows;
 using Hotline.Orders;
+using Hotline.Share.Dtos.Ai;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Dtos.Settings;
+using Hotline.Share.Enums.Order;
 using Mapster;
 
 namespace Hotline.Application.Mappers;
@@ -14,6 +16,37 @@ public class OrderMapperConfigs : IRegister
             .IgnoreIf((s, d) => s.OrderExtension == null, d => d.OrderExtension)
             .IgnoreIf((s, d) => s.Hotspot == null, d => d.Hotspot)
             ;
+        //TODO 等待测试
+        config.ForType<AiOrderVisitDetail, AiOrderVisitDetailDto>()
+            .IgnoreIf((s, d) => s.Order == null, d => d.No)
+            .IgnoreIf((s, d) => s.Order == null, d => d.Title)
+            .IgnoreIf((s, d) => s.Order == null, d => d.FromName)
+            .IgnoreIf((s, d) => s.Order == null, d => d.FromGender)
+            .IgnoreIf((s, d) => s.Order == null, d => d.StartTime)
+            .IgnoreIf((s, d) => s.Order == null, d => d.FiledTime)
+            .Map(d => d.No, s => s.Order.No)
+            .Map(d => d.Title, s => s.Order.Title)
+            .Map(d => d.FromName, s => s.Order.FromName)
+            .Map(d => d.FromGender, s => s.Order.FromGender)
+            .Map(d => d.StartTime, s => s.Order.StartTime)
+            .Map(d => d.FiledTime, s => s.Order.FiledTime)
+            //.IgnoreIf((s, d) => s.OrderVisit.OrderVisitDetails == null || !s.OrderVisit.OrderVisitDetails.Any() || s.OrderVisit.OrderVisitDetails.All(x=>x.VisitTarget != Share.Enums.Order.EVisitTarget.Seat), d => d.SeatEvaluate)
+            // .IgnoreIf((s, d) => s.OrderVisit.OrderVisitDetails == null && s.OrderVisit.OrderVisitDetails.Count > 0, d => d.OrgProcessingResults)
+            //.IgnoreIf((s, d) => s.OrderVisit.OrderVisitDetails == null && s.OrderVisit.OrderVisitDetails.Count > 0, d => d.IsContact)
+            //.IgnoreIf((s, d) => s.OrderVisit.OrderVisitDetails == null && s.OrderVisit.OrderVisitDetails.Count > 0, d => d.Volved)
+            //.Ignore(d=>d.SeatEvaluate)
+            //.Map(d=>d.SeatEvaluate, s=>s.OrderVisit.OrderVisitDetails.First(x=> x.VisitTarget == EVisitTarget.Seat))
+            .AfterMapping((s, d) =>
+            {
+                d.SeatEvaluate = s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Seat)?.SeatEvaluate;
+                d.OrgProcessingResults = s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org)?.OrgProcessingResults?.Value;
+                d.IsContact = s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org)?.IsContact == true ? "是" : "否";
+                d.Volved = s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org)?.Volved == true ? "是" : "否";
+                d.IsSuccess = s.IsSuccess == true ? "是" : "否";
+            })
+            ;
+
+
 
         config.ForType<AddOrderDto, Order>()
             .IgnoreIf((s, d) => s.OrderExtension == null, d => d.OrderExtension)

+ 5 - 4
src/Hotline.Application/Orders/OrderApplication.cs

@@ -449,10 +449,11 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .WhereIF(dto.IdentityType != null, d => d.IdentityType == dto.IdentityType) //来电主体
             .WhereIF(!string.IsNullOrEmpty(dto.FromName), d => d.FromName == dto.FromName) //来电人姓名
             .WhereIF(dto.AreaCodes.Any(), d => dto.AreaCodes.Contains(d.AreaCode)) //区域
-            .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, x => x.IsProvince == true)
-            .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, x => x.IsProvince == false)
-            .WhereIF(!string.IsNullOrEmpty(dto.SensitiveWord), x => SqlFunc.JsonArrayAny(x.Sensitive, dto.SensitiveWord))
-            .WhereIF(dto.IsSensitiveWord.HasValue && dto.IsSensitiveWord == true, x => x.Sensitive != null && SqlFunc.JsonArrayLength(x.Sensitive) > 0)
+            .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == true, d => d.IsProvince == true)
+            .WhereIF(dto.IsProvinceOrder.HasValue && dto.IsProvinceOrder == false, d => d.IsProvince == false)
+            .WhereIF(!string.IsNullOrEmpty(dto.SensitiveWord), d => SqlFunc.JsonArrayAny(d.Sensitive, dto.SensitiveWord))
+            .WhereIF(dto.IsSensitiveWord.HasValue && dto.IsSensitiveWord == true, d => d.Sensitive != null && SqlFunc.JsonArrayLength(d.Sensitive) > 0)
+            .WhereIF(dto.IsUrgent.HasValue , d=>d.IsUrgent == dto.IsUrgent.Value)
             .OrderByDescending(d => d.CreationTime);
     }
 

+ 58 - 1
src/Hotline.Share/Dtos/Ai/AiDto.cs

@@ -1,5 +1,6 @@
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Enums.Ai;
+using Hotline.Share.Enums.Order;
 using Hotline.Share.Requests;
 using System;
 using System.Collections.Generic;
@@ -310,6 +311,62 @@ namespace Hotline.Share.Dtos.Ai
         /// </summary>
         public string OrderId { get; set; }
 
+        /// <summary>
+        /// 工单号
+        /// </summary>
+        public string No { get; set; }
+        /// <summary>
+        /// 工单标题
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// 姓名
+        /// </summary>
+        public string FromName { get; set; }
+
+        /// <summary>
+        /// 来电/信人性别
+        /// </summary>
+        public EGender FromGender { get; set; }
+
+        /// <summary>
+        /// 来电/信人性别
+        /// </summary>
+        public string FromGenderText => FromGender.GetDescription();
+
+        /// <summary>
+        /// 工单开始时间(受理/接办时间=流程开启时间)
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+
+        /// <summary>
+        /// 归档时间(暂为流程结束时间,因流程结束自动归档)
+        /// </summary>
+        public DateTime? FiledTime { get; set; }
+
+        /// <summary>
+        /// 话务员评价
+        /// </summary>
+        public ESeatEvaluate? SeatEvaluate { get; set; }
+
+        public string SeatEvaluateText => SeatEvaluate.GetDescription();
+
+        /// <summary>
+        /// 部门办件结果
+        /// </summary>
+        public string? OrgProcessingResults { get; set; }
+
+        /// <summary>
+        /// 是否联系
+        /// </summary>
+        public string? IsContact { get; set; }
+
+        /// <summary>
+        /// 处理结果
+        /// </summary>
+        public string? Volved { get; set; }
+
         /// <summary>
         /// 工单
         /// </summary>
@@ -339,7 +396,7 @@ namespace Hotline.Share.Dtos.Ai
         /// <summary>
         /// 是否成功
         /// </summary>
-        public bool? IsSuccess { get; set; }
+        public string? IsSuccess { get; set; }
     }
 
     public class CanAiVisitListDto

+ 2 - 0
src/Hotline.Share/Dtos/Order/OrderDto.cs

@@ -364,6 +364,8 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public bool IsUrgent { get; set; }
 
+        public string IsUrgentText => IsUrgent ? "紧急" : "";
+
 		/// <summary>
 		/// 发布范围
 		/// </summary>

+ 11 - 1
src/Hotline.Share/Dtos/Order/OrderWaitedDto.cs

@@ -31,6 +31,11 @@ namespace Hotline.Share.Dtos.Order
 	    public bool? IsCounterSign { get; set; }
 	    public bool? ExpiredOrAlmostOverdue { get; set; }
         public string? No { get; set; }
+
+        /// <summary>
+        /// 是否紧急
+        /// </summary>
+        public bool? IsUrgent { get; set; }
 	}
 
     /// <summary>
@@ -93,5 +98,10 @@ namespace Hotline.Share.Dtos.Order
         /// </summary>
         public EExpiredStatus? ExpiredStatus { get; set; }
 
-    }
+        /// <summary>
+        /// 是否紧急
+        /// </summary>
+        public bool? IsUrgent { get; set; }
+
+	}
 }

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

@@ -149,7 +149,12 @@ namespace Hotline.Share.Dtos.Order
         /// 敏感词
         /// </summary>
         public string? SensitiveWord { get; set; }
-    }
+
+        /// <summary>
+        /// 是否紧急
+        /// </summary>
+        public bool? IsUrgent { get; set; }
+	}
 
 
     public enum FiledType