Dun.Jason 1 жил өмнө
parent
commit
35b34d1c45

+ 1 - 77
src/Hotline.Application/Handlers/Order/AddVisitNotifyHandler.cs

@@ -32,83 +32,7 @@ namespace Hotline.Application.Handlers.Order
 
         public async Task Handle(AddVisitNotify notification, CancellationToken cancellationToken)
         {
-            var orderVisit = await _orderVisitRepository.Queryable()
-                .Includes(x=>x.Order)
-                .Includes(x=>x.OrderVisitDetails)
-                .Where(x => x.Order.ProvinceNo == notification.OrderVisited.ProvinceNo && 
-             x.VisitState != Share.Enums.Order.EVisitState.None).FirstAsync(cancellationToken);
-
-            if (orderVisit != null)
-            {
-                //处理评价结果
-                var processingResult = notification.OrderVisited.OrgProcessingResults;
-                Kv orgProcessingResults = null;
-                if (!string.IsNullOrEmpty(processingResult))
-                {
-                    var dicData = await _systemDicDataRepository.GetAsync(x => x.DicTypeCode == SysDicTypeConsts.VisitSatisfaction && x.DicDataValue == processingResult, cancellationToken);
-                    if (dicData!=null)
-                    {
-                        orgProcessingResults = new Kv();
-                        orgProcessingResults.Key = dicData.DicDataValue;
-                        orgProcessingResults.Value = dicData.DicDataName;
-                    }
-                    if (orgProcessingResults != null)
-                    {
-                        //主表
-                        orderVisit.VisitState = Share.Enums.Order.EVisitState.Visited;
-                        orderVisit.VisitTime = notification.OrderVisited.VisitTime;
-                        orderVisit.VisitType = notification.OrderVisited.VisitType;
-                        orderVisit.IsCanHandle = false;
-                        orderVisit.IsCanAiVisit = false;
-                        orderVisit.NowEvaluate = orgProcessingResults;
-                        await _orderVisitRepository.UpdateAsync(orderVisit, cancellationToken);
-                        //子表
-                        for (int i = 0; i < orderVisit.OrderVisitDetails.Count; i++)
-                        {
-                            if (orderVisit.OrderVisitDetails[i].VisitTarget == EVisitTarget.Seat)
-                            {
-                                orderVisit.OrderVisitDetails[i].VoiceEvaluate = (EVoiceEvaluate)int.Parse(orgProcessingResults.Key);
-                                orderVisit.OrderVisitDetails[i].SeatEvaluate = (ESeatEvaluate)int.Parse(orgProcessingResults.Key);
-                            }
-                            else
-                            {
-                                orderVisit.OrderVisitDetails[i].OrgProcessingResults = orgProcessingResults;
-                            }
-                            orderVisit.OrderVisitDetails[i].VisitContent = notification.OrderVisited.VisitContent;
-                        }
-                        await _orderVisitedDetailRepository.UpdateRangeAsync(orderVisit.OrderVisitDetails, cancellationToken);
-                        //工单
-                        orderVisit.Order.Visited(orgProcessingResults.Key, orgProcessingResults.Value);
-                        await _orderRepository.UpdateAsync(orderVisit.Order);
-
-                        //处理网站通知差评数据
-                        if(orderVisit.Order.Source== ESource.Hotline && orderVisit.OrderVisitDetails.Any(x=> x.OrgHandledAttitude?.Key=="1" || x.OrgHandledAttitude?.Key == "2" || x.OrgProcessingResults?.Key=="1" || x.OrgProcessingResults?.Key == "2"))
-                        {
-                            //包含不满意数据,重新生成新的回访
-                            var newOrderVisit = _mapper.Map<OrderVisit>(orderVisit);
-                            newOrderVisit.InitId();
-                            newOrderVisit.VisitState = EVisitState.NoSatisfiedWaitForVisit;
-                            newOrderVisit.VisitTime = null;
-                            newOrderVisit.IsCanHandle = false;
-                            newOrderVisit.IsCanAiVisit = false;
-                            newOrderVisit.AiVisitCount = 0;
-                            await _orderVisitRepository.AddAsync(newOrderVisit,cancellationToken);
-                            var list = _mapper.Map<List<OrderVisitDetail>>(orderVisit.OrderVisitDetails);
-                            list.ForEach(x =>
-                            {
-                                x.VisitId = newOrderVisit.Id;
-                                x.VoiceEvaluate = null;
-                                x.VoiceEvaluate = null;
-                                x.OrgHandledAttitude = null;
-                                x.OrgNoSatisfiedReason = null;
-                                x.OrgProcessingResults = null;
-                                x.VisitContent = "";
-                            });
-                            await _orderVisitedDetailRepository.AddRangeAsync(list, cancellationToken);
-                        }
-                    }
-                }
-            }
+            
         }
     }
 }

+ 97 - 12
src/Hotline.Application/Subscribers/DatasharingSubscriber.cs

@@ -16,6 +16,8 @@ using XF.Domain.Dependency;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
 using System.Security.Permissions;
+using MediatR;
+using Hotline.Settings;
 
 namespace Hotline.Application.Subscribers
 {
@@ -42,6 +44,7 @@ namespace Hotline.Application.Subscribers
         private readonly IRepository<OrderVisitDetail> _orderVisitedDetailRepository;
         private readonly IOrderScreenRepository _orderScreenRepository;
         private readonly IRepository<OrderExtension> _orderExtensionRepository;
+        private readonly IRepository<SystemDicData> _systemDicDataRepository;
 
         public DataSharingSubscriber(
             IRepository<OrderVisit> orderVisitRepository,
@@ -60,7 +63,8 @@ namespace Hotline.Application.Subscribers
             IRepository<OrderVisitDetail> orderVisitedDetailRepository,
             IOrderScreenRepository orderScreenRepository,
             IRepository<OrderExtension> orderExtensionRepository,
-            IFileRepository fileRepository)
+            IFileRepository fileRepository,
+            IRepository<SystemDicData> systemDicDataRepository)
         {
             _orderSendBackRepository = orderSendBackRepository;
             _workflowApplication = workflowApplication;
@@ -78,6 +82,7 @@ namespace Hotline.Application.Subscribers
             _mapper = mapper;
             _capPublisher = capPublisher;
             _orderDelayRepository = orderDelayRepository;
+            _systemDicDataRepository = systemDicDataRepository;
         }
 
         /// <summary>
@@ -196,6 +201,96 @@ namespace Hotline.Application.Subscribers
             }
         }
 
+        /// <summary>
+        /// 省下行回访
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        [CapSubscribe(Hotline.Share.Mq.EventNames.SharingOrderEvlResult)]
+        public async Task OrderVisitProvince(ProvinceOrderVisitDto dto, CancellationToken cancellationToken)
+        {
+            var orderVisit = await _orderVisitRepository.Queryable()
+                .Includes(x => x.Order)
+                .Includes(x => x.OrderVisitDetails)
+                .Where(x => x.Order.ProvinceNo == dto.ProvinceNo &&
+             x.VisitState != Share.Enums.Order.EVisitState.None).FirstAsync(cancellationToken);
+
+            if (orderVisit != null)
+            {
+                //处理评价结果
+                var processingResult = dto.OrgProcessingResults;
+                Kv orgProcessingResults = null;
+                if (!string.IsNullOrEmpty(processingResult))
+                {
+                    var dicData = await _systemDicDataRepository.GetAsync(x => x.DicTypeCode == SysDicTypeConsts.VisitSatisfaction && x.DicDataValue == processingResult, cancellationToken);
+                    if (dicData != null)
+                    {
+                        orgProcessingResults = new Kv();
+                        orgProcessingResults.Key = dicData.DicDataValue;
+                        orgProcessingResults.Value = dicData.DicDataName;
+                    }
+                    if (orgProcessingResults != null)
+                    {
+                        //主表
+                        orderVisit.VisitState = Share.Enums.Order.EVisitState.Visited;
+                        orderVisit.VisitTime = dto.VisitTime;
+                        orderVisit.VisitType = dto.VisitType;
+                        orderVisit.IsCanHandle = false;
+                        orderVisit.IsCanAiVisit = false;
+                        orderVisit.NowEvaluate = orgProcessingResults;
+                        await _orderVisitRepository.UpdateAsync(orderVisit, cancellationToken);
+                        //子表
+                        for (int i = 0; i < orderVisit.OrderVisitDetails.Count; i++)
+                        {
+                            if (orderVisit.OrderVisitDetails[i].VisitTarget == EVisitTarget.Seat)
+                            {
+                                orderVisit.OrderVisitDetails[i].VoiceEvaluate = (EVoiceEvaluate)int.Parse(orgProcessingResults.Key);
+                                orderVisit.OrderVisitDetails[i].SeatEvaluate = (ESeatEvaluate)int.Parse(orgProcessingResults.Key);
+                            }
+                            else
+                            {
+                                orderVisit.OrderVisitDetails[i].OrgProcessingResults = orgProcessingResults;
+                            }
+                            orderVisit.OrderVisitDetails[i].VisitContent = dto.VisitContent;
+                        }
+                        await _orderVisitedDetailRepository.UpdateRangeAsync(orderVisit.OrderVisitDetails, cancellationToken);
+                        //工单
+                        orderVisit.Order.Visited(orgProcessingResults.Key, orgProcessingResults.Value);
+                        await _orderRepository.UpdateAsync(orderVisit.Order);
+
+                        ////处理网站通知差评数据
+                        //if (orderVisit.Order.Source == ESource.Hotline && orderVisit.OrderVisitDetails.Any(x => x.OrgHandledAttitude?.Key == "1" || x.OrgHandledAttitude?.Key == "2" || x.OrgProcessingResults?.Key == "1" || x.OrgProcessingResults?.Key == "2"))
+                        //{
+                        //    //包含不满意数据,重新生成新的回访
+                        //    var newOrderVisit = _mapper.Map<OrderVisit>(orderVisit);
+                        //    newOrderVisit.InitId();
+                        //    newOrderVisit.VisitState = EVisitState.NoSatisfiedWaitForVisit;
+                        //    newOrderVisit.VisitTime = null;
+                        //    newOrderVisit.IsCanHandle = false;
+                        //    newOrderVisit.IsCanAiVisit = false;
+                        //    newOrderVisit.AiVisitCount = 0;
+                        //    await _orderVisitRepository.AddAsync(newOrderVisit, cancellationToken);
+                        //    var list = _mapper.Map<List<OrderVisitDetail>>(orderVisit.OrderVisitDetails);
+                        //    list.ForEach(x =>
+                        //    {
+                        //        x.VisitId = newOrderVisit.Id;
+                        //        x.VoiceEvaluate = null;
+                        //        x.VoiceEvaluate = null;
+                        //        x.OrgHandledAttitude = null;
+                        //        x.OrgNoSatisfiedReason = null;
+                        //        x.OrgProcessingResults = null;
+                        //        x.VisitContent = "";
+                        //    });
+                        //    await _orderVisitedDetailRepository.AddRangeAsync(list, cancellationToken);
+                        //}
+                    }
+                }
+            }
+        }
+
+
+
         /// <summary>
         /// 工单回访
         /// </summary>
@@ -314,17 +409,7 @@ namespace Hotline.Application.Subscribers
             }
         }
 
-        /// <summary>
-        /// 省下行回访
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <param name="cancellationToken"></param>
-        /// <returns></returns>
-        [CapSubscribe(Hotline.Share.Mq.EventNames.SharingOrderEvlResult)]
-        public async Task OrderVisitProvince(OrderVisitProvinceDto dto,CancellationToken cancellationToken)
-        {
-
-        }
+        
 
 
         /// <summary>

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

@@ -589,7 +589,6 @@ namespace Hotline.Share.Dtos.Order
 
         public EVisitType VisitType { get; set; }
 
-        public string VisitName { get; set; }
 
         public DateTime VisitTime { get; set; }