Browse Source

修复 BUG_9 三方会议出现两条记录

qinchaoyue 6 months ago
parent
commit
aa5848944c

+ 15 - 1
src/Hotline.Application/CallCenter/DefaultCallApplication.cs

@@ -11,6 +11,7 @@ using Hotline.Share.Enums.CallCenter;
 using Hotline.Users;
 using MapsterMapper;
 using Microsoft.Extensions.Logging;
+using SqlSugar;
 using XF.Domain.Authentications;
 using XF.Domain.Cache;
 using XF.Domain.Exceptions;
@@ -205,6 +206,7 @@ public abstract class DefaultCallApplication : ICallApplication
     {
         var query = _callNativeRepository.Queryable(includeDeleted: true)
             .LeftJoin<Order>((d, o) => d.Id == o.CallId)
+            .Where((d, o) => d.GroupId == "1")
             .WhereIF(!string.IsNullOrEmpty(dto.OrderNo), (d, o) => o.No == dto.OrderNo)
             .WhereIF(!string.IsNullOrEmpty(dto.FromNo), d => d.FromNo == dto.FromNo)
             .WhereIF(!string.IsNullOrEmpty(dto.ToNo), d => d.ToNo == dto.ToNo)
@@ -224,13 +226,25 @@ public abstract class DefaultCallApplication : ICallApplication
         query = query.WhereIF(dto.Type == 3, (d, o) => d.AnsweredTime == null);
         query = query.WhereIF(dto.Type == 1, (d, o) => d.Direction == ECallDirection.In);
         query = query.WhereIF(dto.Type == 2, (d, o) => d.Direction == ECallDirection.Out);
-        return await query.Select((d, o) => new CallNativeDto
+        var items = await query.Select((d, o) => new CallNativeDto
         {
             OrderId = o.Id,
             OrderNo = o.No,
             Title = o.Title,
+            Gateway = SqlFunc.Subqueryable<CallNative>()
+            .Where(m => m.GroupId == "0" && m.CallNo == d.CallNo)
+            .Select(m => m.ToNo)
         }, true)
         .ToFixedListAsync(dto, cancellationToken);
+
+        items.Where(m => m.Gateway != null)
+            .ToList().ForEach(m => 
+            {
+                var toNo = m.Gateway;
+                m.Gateway = m.ToNo;
+                m.ToNo = toNo;
+            });
+        return items;
     }
 
     /// <summary>

+ 3 - 4
src/Hotline.Application/StatisticalReport/CallReport/CallReportApplicationBase.cs

@@ -161,9 +161,8 @@ public abstract class CallReportApplicationBase : ICallReportApplication
         int connectByeTimes = _systemSettingCacheManager.ConnectByeTimes;
 
         var callData = await _callNativeRepository.Queryable()
-                .Where(p => p.CreationTime >= dto.StartTime && p.CreationTime <= dto.EndTime)
+                .Where(p => p.CreationTime >= dto.StartTime && p.CreationTime <= dto.EndTime && p.GroupId == "1")
                 .GroupBy(p => p.CreationTime.ToString("yyyy-MM-dd"))
-                //.GroupBy(p => new { CreationTime = p.CreationTime.ToString("yyyy-MM-dd"), CallNo = p.CallNo })
                 .Select(p => new QueryCallsDetailStatistics
                 {
                     Date = p.CreationTime.ToString("yyyy-MM-dd"),
@@ -172,8 +171,8 @@ public abstract class CallReportApplicationBase : ICallReportApplication
                     NotAcceptedHang = SqlFunc.AggregateSum(SqlFunc.IIF(p.Duration == 0 && p.RingDuration <= noConnectByeTimes && p.RingDuration > 0 && p.Direction == ECallDirection.In, 1, 0)), //呼入队列挂断
                     InNotAnswered = SqlFunc.AggregateSum(SqlFunc.IIF(p.Duration == 0 && p.TelNo != "0" && p.Direction == ECallDirection.In, 1, 0)), // 挂机量
                     IvrByeCount = SqlFunc.AggregateSum(SqlFunc.IIF(p.Direction == ECallDirection.In && p.BeginIvrTime.HasValue && !p.BeginQueueTime.HasValue && !p.BeginRingTime.HasValue && p.AnsweredTime == null, 1, 0)), //IVR挂断
-                    OutConnectionQuantity = SqlFunc.AggregateSum(SqlFunc.IIF(p.TelNo != "0" && p.AnsweredTime != null && p.Direction == ECallDirection.Out, 1, 0)), // 呼出接通量
-                    OutNotAnswered = SqlFunc.AggregateSum(SqlFunc.IIF(p.TelNo != "0" && p.AnsweredTime == null && p.Direction == ECallDirection.Out, 1, 0)), // 呼出未接量
+                    OutConnectionQuantity = SqlFunc.AggregateSum(SqlFunc.IIF(p.AnsweredTime != null && p.Direction == ECallDirection.Out, 1, 0)), // 呼出接通量
+                    OutNotAnswered = SqlFunc.AggregateSum(SqlFunc.IIF(p.AnsweredTime == null && p.Direction == ECallDirection.Out, 1, 0)), // 呼出未接量
                 })
                 .OrderBy(p => p.Date)
                 .ToListAsync(cancellationToken);

+ 5 - 0
src/Hotline.Share/Dtos/CallCenter/CallNativeDto.cs

@@ -132,5 +132,10 @@ namespace Hotline.Share.Dtos.CallCenter
         public string? OrderNo { get; set; }
 
         public string? Title { get; set; }
+
+        /// <summary>
+        /// 中继号码
+        /// </summary>
+        public string Gateway { get; set; }
     }
 }