Kaynağa Gözat

工单的回访结果修改为了满意,需删除审批记录

libin 1 ay önce
ebeveyn
işleme
add72b5574

+ 55 - 39
src/Hotline.Application/OrderApp/OrderApplication.cs

@@ -48,6 +48,7 @@ using Hotline.Validators.FlowEngine;
 using Mapster;
 using MapsterMapper;
 using MediatR;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion.Internal;
 using Microsoft.Extensions.Options;
 using PanGu;
 using Quartz.Simpl;
@@ -1317,7 +1318,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         if (_appOptions.Value.IsYiBin && visit.VisitState == EVisitState.Visited)
             throw UserFriendlyException.SameMessage("已回访,不能重复回访");
 
-        var visitTemp = visit;
+        bool exisNoSatisfiedSeat = false;
+        bool exisNoSatisfiedOrg = false;
 
         //记录修改历史
         try
@@ -1335,6 +1337,35 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                     await _orderVisitDetailCopyRepository.AddRangeAsync(visitDetailsCopy, cancellationToken);
                     visit.IsUpdate = true;
                 }
+
+                //#  再次回访处理之前的甄别记录
+                //## 若用户将语音评价结果修改为了满意,此时甄别类型为中心话务甄别的工单,需从甄别待审批中删除;部门办件甄别的工单需保留
+                if (visit.OrderVisitDetails != null && visit.OrderVisitDetails.Count > 0)
+                {
+                    // 坐席
+                    // 判断老数据是否是不满意
+                    var visitDataSeat = visit.OrderVisitDetails.Where(x => x.VisitTarget == EVisitTarget.Seat).FirstOrDefault();
+                    if (visitDataSeat != null)
+                    {
+                        if (visitDataSeat.VoiceEvaluate == EVoiceEvaluate.NoSatisfied ||
+                            visitDataSeat.VoiceEvaluate == EVoiceEvaluate.VeryNoSatisfied)
+                        {
+                            exisNoSatisfiedSeat = true;
+                        }
+                    }
+
+                    // 部门
+                    // 判断老数据是否是不满意
+                    var visitDataOrg = visit.OrderVisitDetails.Where(x => x.VisitTarget == EVisitTarget.Org).FirstOrDefault();
+                    if (visitDataOrg != null)
+                    {
+                        if (visitDataOrg.OrgProcessingResults?.Value == "不满意" ||
+                            visitDataOrg.OrgProcessingResults?.Value == "非常不满意")
+                        {
+                            exisNoSatisfiedOrg = true;
+                        }
+                    }
+                }
             }
         }
         catch (Exception)
@@ -1488,56 +1519,41 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                 //## 若用户将语音评价结果修改为了满意,此时甄别类型为中心话务甄别的工单,需从甄别待审批中删除;部门办件甄别的工单需保留
                 if (dto.IsUpdate.HasValue && dto.IsUpdate == true)
                 {
-                    if (visitTemp.OrderVisitDetails != null && visitTemp.OrderVisitDetails.Count > 0)
+                    // 坐席
+                    // 判断老数据是否是不满意
+                    if (exisNoSatisfiedSeat)
                     {
-                        // 坐席
-                        // 判断老数据是否是不满意
-                        var visitDataSeat = visitTemp.OrderVisitDetails.Where(x => x.VisitTarget == EVisitTarget.Seat).FirstOrDefault();
-                        if (visitDataSeat != null)
+                        // 判断更新数据是否是满意
+                        var visitData = dto.VisitDetails.Where(x => x.VisitTarget == EVisitTarget.Seat).FirstOrDefault();
+                        if (visitData != null)
                         {
-                            if (visitDataSeat.VoiceEvaluate == EVoiceEvaluate.NoSatisfied ||
-                                visitDataSeat.VoiceEvaluate == EVoiceEvaluate.VeryNoSatisfied)
+                            if ((visitData.VoiceEvaluate == EVoiceEvaluate.VerySatisfied ||
+                                 visitData.VoiceEvaluate == EVoiceEvaluate.Satisfied) &&
+                                (visitData.SeatEvaluate == ESeatEvaluate.VerySatisfied ||
+                                 visitData.SeatEvaluate == ESeatEvaluate.Satisfied))
                             {
-                                // 判断更新数据是否是满意
-                                var visitData = dto.VisitDetails.Where(x => x.VisitTarget == EVisitTarget.Seat).FirstOrDefault();
-                                if (visitData != null)
-                                {
-                                    if ((visitData.VoiceEvaluate == EVoiceEvaluate.VerySatisfied ||
-                                         visitData.VoiceEvaluate == EVoiceEvaluate.Satisfied) &&
-                                        (visitData.SeatEvaluate == ESeatEvaluate.VerySatisfied ||
-                                         visitData.SeatEvaluate == ESeatEvaluate.Satisfied))
-                                    {
-                                        await _orderScreenRepository.RemoveAsync(x => x.VisitId == visitData.VisitId);
-                                    }
-                                }
+                                await _orderScreenRepository.RemoveAsync(x => x.VisitId == visitData.VisitId);
                             }
                         }
+                    }
 
-                        // 部门
-                        // 判断老数据是否是不满意
-                        var visitDataOrg = visitTemp.OrderVisitDetails.Where(x => x.VisitTarget == EVisitTarget.Org).FirstOrDefault();
-                        if (visitDataOrg != null)
+                    // 部门
+                    // 判断老数据是否是不满意
+                    if (exisNoSatisfiedOrg)
+                    {
+                        // 判断更新数据是否是满意
+                        var visitData = dto.VisitDetails.Where(x => x.VisitTarget == EVisitTarget.Org).FirstOrDefault();
+                        if (visitData != null)
                         {
-                            if (visitDataOrg.VoiceEvaluate == EVoiceEvaluate.NoSatisfied ||
-                                visitDataOrg.VoiceEvaluate == EVoiceEvaluate.VeryNoSatisfied)
+                            if (visitData.OrgProcessingResults != null)
                             {
-                                // 判断更新数据是否是满意
-                                var visitData = dto.VisitDetails.Where(x => x.VisitTarget == EVisitTarget.Org).FirstOrDefault();
-                                if (visitData != null)
+                                if (visitData.OrgProcessingResults.Value == "非常满意" ||
+                                    visitData.OrgProcessingResults.Value == "满意")
                                 {
-                                    if (visitData.OrgProcessingResults != null)
-                                    {
-                                        if (visitData.OrgProcessingResults.Value == "非常满意" ||
-                                            visitData.OrgProcessingResults.Value == "满意")
-                                        {
-                                            await _orderScreenRepository.RemoveAsync(x => x.VisitId == visitData.VisitId);
-                                        }
-                                    }
+                                    await _orderScreenRepository.RemoveAsync(x => x.VisitId == visitData.VisitId);
                                 }
                             }
                         }
-
-
                     }
                 }
             }