Jason 1 سال پیش
والد
کامیت
0c742a0794

+ 21 - 10
src/Hotline.Api/Controllers/OrderController.cs

@@ -281,10 +281,10 @@ public class OrderController : BaseController
             throw UserFriendlyException.SameMessage("未知数据!");
         }
         var pubentity = _mapper.Map<PublishedEntityDto>(publishedOrder);
-        var visit = await _orderVisitRepository.Queryable().Includes(x => x.VisitDetails).FirstAsync(x => x.Id == publishedOrder.OrderId, HttpContext.RequestAborted);
+        var visit = await _orderVisitRepository.Queryable().Includes(x => x.OrderVisitDetails).FirstAsync(x => x.Id == publishedOrder.OrderId, HttpContext.RequestAborted);
         if (visit!=null)
         {
-            var details = visit.VisitDetails.Where(x => x.VisitTarget == EVisitTarget.Org).ToList();
+            var details = visit.OrderVisitDetails.Where(x => x.VisitTarget == EVisitTarget.Org).ToList();
             if (details!=null && details.Count>0)
             {
                 pubentity.IdNames = new List<IdName>();
@@ -357,6 +357,7 @@ public class OrderController : BaseController
         var (total, items) = await _orderVisitRepository.Queryable()
             .Includes(x => x.Order)
             .Includes(x => x.Employee)
+            .Includes(x => x.OrderVisitDetails)
             .WhereIF(dto.VisitState == EVisitStateQuery.NoVisit, x => x.VisitState == Share.Enums.Order.EVisitState.WaitForVisit || x.VisitState == Share.Enums.Order.EVisitState.NoSatisfiedWaitForVisit)
             .WhereIF(dto.VisitState == EVisitStateQuery.Visited, x => x.VisitState == Share.Enums.Order.EVisitState.Visited)
             .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Order.Title.Contains(dto.Keyword!) || d.Order.No.Contains(dto.Keyword!))
@@ -376,7 +377,7 @@ public class OrderController : BaseController
         var orderVisit = await _orderVisitRepository.Queryable()
            .Includes(x => x.Order)
            .Includes(x => x.Employee)
-           .Includes(x=>x.VisitDetails)
+           .Includes(x=>x.OrderVisitDetails)
            .FirstAsync(x => x.Id == id, HttpContext.RequestAborted);
 
         if (orderVisit is null)
@@ -427,12 +428,12 @@ public class OrderController : BaseController
         //var visit = await _orderVisitRepository.GetAsync(dto.Id, HttpContext.RequestAborted);
         var visit = await _orderVisitRepository.Queryable()
             .Includes(d => d.Order)
-            .Includes(d=>d.VisitDetails)
+            .Includes(d => d.OrderVisitDetails)
             .FirstAsync(d => d.Id == dto.Id, HttpContext.RequestAborted);
         if (visit is null)
             throw UserFriendlyException.SameMessage("未知回访信息");
 
-        var first = dto.VisitDetails.First(x => x.VisitTarget == EVisitTarget.Seat);
+        var first = dto.VisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org);
 
 
         //更新主表
@@ -445,19 +446,29 @@ public class OrderController : BaseController
         visit.IsPutThrough = dto.IsPutThrough;
         visit.AgainState = dto.IsAgain ? EAgainState.NeedAgain : EAgainState.NoAgain;
         visit.EmployeeId = _sessionContext.UserId;
-        visit.NowEvaluate = first.OrgProcessingResults;
+        if (first!=null)
+        {
+            visit.NowEvaluate = first.OrgProcessingResults;
+        }
         //await _orderVisitRepository.UpdateAsync(visit,HttpContext.RequestAborted);
 
         //update order
         if (dto.IsPutThrough)
         {
-            visit.Order.Visited(((int)first.SeatEvaluate).ToString(), first.SeatEvaluate.GetDescription());
-            visit.VisitDetails = _mapper.Map<List<OrderVisitDetail>>(dto.VisitDetails);
+            if (first!=null)
+            {
+                visit.Order.Visited(first.OrgProcessingResults.Id, first.OrgProcessingResults.Name);
+            }
+            _mapper.Map(dto.VisitDetails,visit.OrderVisitDetails);
             await _orderVisitRepository.UpdateAsync(visit,HttpContext.RequestAborted);
+            await _orderVisitedDetailRepository.UpdateRangeAsync(visit.OrderVisitDetails, HttpContext.RequestAborted);
             await _orderRepository.UpdateAsync(visit.Order, HttpContext.RequestAborted);
             var orderDto = _mapper.Map<OrderDto>(visit.Order);
-            //推省上
-            _capPublisher.Publish(EventNames.HotlineOrderVisited, new PublishVisitDto() { Order = orderDto, No = visit.No, VisitType = visit.VisitType, VisitName = visit.CreatorName, VisitTime = visit.VisitTime, VisitRemark = first.VisitContent, AreaCode = visit.Order.AreaCode!, SubjectResultSatifyCode = (int)first.SeatEvaluate, FirstSatisfactionCode = visit.Order.FirstVisitResultCode!, ClientGuid = "" });
+            if (first!=null)
+            {
+                //推省上
+                _capPublisher.Publish(EventNames.HotlineOrderVisited, new PublishVisitDto() { Order = orderDto, No = visit.No, VisitType = visit.VisitType, VisitName = visit.CreatorName, VisitTime = visit.VisitTime, VisitRemark = first.VisitContent, AreaCode = visit.Order.AreaCode!, SubjectResultSatifyCode = first.OrgProcessingResults.Id, FirstSatisfactionCode = visit.Order.FirstVisitResultCode!, ClientGuid = "" });
+            }
         }
     }
 

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

@@ -86,5 +86,9 @@ public class OrderMapperConfigs : IRegister
         config.ForType<OrderVisit, OrderVisitDto>()
             .IgnoreIf((s, d) => s.Employee == null, d => d.EmployeeName)
             .Map(d => d.EmployeeName, s => s.Employee.Name);
+
+        config.ForType<VisitDetailDto, OrderVisitDetail>()
+            .Map(d => d.VoiceEvaluate, s => s.VoiceEvaluate)
+            .Map(d => d.SeatEvaluate, s => s.SeatEvaluate);
     }
 }

+ 15 - 1
src/Hotline.Share/Dtos/Order/OrderDto.cs

@@ -769,6 +769,20 @@ namespace Hotline.Share.Dtos.Order
         /// 回访时间
         /// </summary>
         public DateTime? VisitTime { get; set; }
+
+        /// <summary>
+        /// 回访明细
+        /// </summary>
+        public List<OrderVisitDetailDto> OrderVisitDetails { get; set; }
+    }
+
+    public class OrderVisitDetailDto
+    {
+        public EVoiceEvaluate? VoiceEvaluate { get; set; }
+
+        public ESeatEvaluate? SeatEvaluate { get; set; }
+
+        public EVisitTarget VisitTarget { get; set; }
     }
 
     public class PublishVisitDto
@@ -806,7 +820,7 @@ namespace Hotline.Share.Dtos.Order
         /// <summary>
         /// 回访结果满意度
         /// </summary>
-        public int SubjectResultSatifyCode { get; set; }
+        public string SubjectResultSatifyCode { get; set; }
 
         /// <summary>
         /// 行政区划代码

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

@@ -174,7 +174,7 @@ namespace Hotline.Share.Dtos.Order
         /// 语音评价(话务评价)
         /// </summary>
         public EVoiceEvaluate? VoiceEvaluate { get; set; }
-
+                               
         /// <summary>
         /// 话务员评价(话务评价)
         /// </summary>

+ 1 - 1
src/Hotline/Orders/OrderDomainService.cs

@@ -121,7 +121,7 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
 
         if (order.OrderVisits.Any())
             await _orderVisitRepository.RemoveNav(order.OrderVisits)
-                .Include(d => d.VisitDetails)
+                .Include(d => d.OrderVisitDetails)
                 .ExecuteCommandAsync();
     }
 

+ 1 - 1
src/Hotline/Orders/OrderVisit.cs

@@ -79,7 +79,7 @@ public class OrderVisit : CreationEntity
     /// 回访明细
     /// </summary>
     [Navigate(NavigateType.OneToMany, nameof(OrderVisitDetail.VisitId))]
-    public List<OrderVisitDetail> VisitDetails { get; set; }
+    public List<OrderVisitDetail> OrderVisitDetails { get; set; }
 
     /// <summary>
     /// 当前评价结果