Parcourir la source

Merge branch 'dev' of http://110.188.24.182:10023/Fengwo/hotline into dev

tangjiang il y a 9 mois
Parent
commit
583bd33cb3

+ 10 - 0
src/Hotline.Api/Controllers/AiController.cs

@@ -27,6 +27,7 @@ using Newtonsoft.Json;
 using Novacode.NETCorePort;
 using Org.BouncyCastle.Utilities;
 using SqlSugar;
+using System.Runtime.CompilerServices;
 using System.Threading;
 using XF.Domain.Authentications;
 using XF.Domain.Constants;
@@ -693,6 +694,15 @@ namespace Hotline.Api.Controllers
                                 aiOrderVisitDetail.OrderVisit.VisitType = Share.Enums.Order.EVisitType.ChipVoiceVisit;
                                 aiOrderVisitDetail.OrderVisit.AiVisitTime();
                                 aiOrderVisitDetail.IsSuccess = true;
+                                aiOrderVisitDetail.AiVolved = isSolve;
+                                aiOrderVisitDetail.AiIsContact = isContact;
+                                aiOrderVisitDetail.AiVolveConent = visitContent;
+                                aiOrderVisitDetail.AiSeatEvaluate = seatEvaluate;
+                                aiOrderVisitDetail.AiOrgProcessingResults = orgProcessingResults;
+                                aiOrderVisitDetail.AiOrgNoSatisfiedReason = visitContent;
+                                aiOrderVisitDetail.AiSeatNoSatisfiedReason = seatVisitContent;
+                                aiOrderVisitDetail.CallTimes = dto.CallTimes;
+
                                 if (orgProcessingResults != null)
                                 {
                                     aiOrderVisitDetail.OrderVisit.NowEvaluate = orgProcessingResults;

+ 12 - 12
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -839,12 +839,12 @@ namespace Hotline.Api.Controllers.Bi
                 .Where(x => x.AiVisitTime >= StartTime && x.AiVisitTime <= EndTime && x.IsSuccess != null).CountAsync();
 
             returnModel.AiVisitSatisfiedCount = await _aiOrderVisitDetailRepository.Queryable()
-                .Includes(x => x.OrderVisit)
-                .Where(x => x.AiVisitTime >= StartTime && x.AiVisitTime <= EndTime && x.IsSuccess == true && SqlFunc.JsonField(x.OrderVisit.NowEvaluate, "Key") != "1" && SqlFunc.JsonField(x.OrderVisit.NowEvaluate, "Key") != "2").CountAsync();
+                //.Includes(x => x.OrderVisit)
+                .Where(x => x.AiVisitTime >= StartTime && x.AiVisitTime <= EndTime && x.IsSuccess == true && SqlFunc.JsonField(x.AiOrgProcessingResults, "Key") == "4").CountAsync();
 
             returnModel.AiVisitNoSatisfiedCount = await _aiOrderVisitDetailRepository.Queryable()
-                .Includes(x => x.OrderVisit)
-                .Where(x => x.AiVisitTime >= StartTime && x.AiVisitTime <= EndTime && x.IsSuccess == true && SqlFunc.JsonField(x.OrderVisit.NowEvaluate, "Key") == "1" && SqlFunc.JsonField(x.OrderVisit.NowEvaluate, "Key") == "2").CountAsync();
+                //.Includes(x => x.OrderVisit)
+                .Where(x => x.AiVisitTime >= StartTime && x.AiVisitTime <= EndTime && x.IsSuccess == true && SqlFunc.JsonField(x.AiOrgProcessingResults, "Key") == "2").CountAsync();
 
             returnModel.AIVisitFailCount = await _aiOrderVisitDetailRepository.Queryable()
                 .Where(x => x.AiVisitTime >= StartTime && x.AiVisitTime <= EndTime && x.IsSuccess == false).CountAsync();
@@ -1443,35 +1443,35 @@ namespace Hotline.Api.Controllers.Bi
                 OrgCode = "",
                 OrgType = "",
                 ZxAllCount = items.Sum(p => p.ZxAllCount),
-                ZxAllTimes = items.Sum(p => p.ZxAllTimes),
+                ZxAllTimes = Math.Round(items.Sum(p => p.ZxAllTimes).Value,2),
                 ZxAcceptanceTypeCode = "10",
 
                 JyAllCount = items.Sum(p => p.JyAllCount),
-                JyAllTimes = items.Sum(p => p.JyAllTimes),
+                JyAllTimes = Math.Round(items.Sum(p => p.JyAllTimes).Value,2),
                 JyAcceptanceTypeCode = "15",
 
                 QzAllCount = items.Sum(p => p.QzAllCount),
-                QzAllTimes = items.Sum(p => p.QzAllTimes),
+                QzAllTimes = Math.Round(items.Sum(p => p.QzAllTimes).Value,2),
                 QzAcceptanceTypeCode = "20",
 
                 ByAllCount = items.Sum(p => p.ByAllCount),
-                ByAllTimes = items.Sum(p => p.ByAllTimes),
+                ByAllTimes = Math.Round(items.Sum(p => p.ByAllTimes).Value,2),
                 ByAcceptanceTypeCode = "25",
 
                 JbAllCount = items.Sum(p => p.JbAllCount),
-                JbAllTimes = items.Sum(p => p.JbAllTimes),
+                JbAllTimes = Math.Round(items.Sum(p => p.JbAllTimes).Value,2),
                 JbAcceptanceTypeCode = "30",
 
                 TsAllCount = items.Sum(p => p.TsAllCount),
-                TsAllTimes = items.Sum(p => p.TsAllTimes),
+                TsAllTimes = Math.Round(items.Sum(p => p.TsAllTimes).Value,2),
                 TsAcceptanceTypeCode = "35",
 
                 QtAllCount = items.Sum(p => p.QtAllCount),
-                QtAllTimes = items.Sum(p => p.QtAllTimes),
+                QtAllTimes = Math.Round(items.Sum(p => p.QtAllTimes).Value,2),
                 QtAcceptanceTypeCode = "40",
 
                 YjAllCount = items.Sum(p => p.YjAllCount),
-                YjAllTimes = items.Sum(p => p.YjAllTimes),
+                YjAllTimes = Math.Round(items.Sum(p => p.YjAllTimes).Value,2),
                 YjAcceptanceTypeCode = "1"
             };
 

+ 18 - 0
src/Hotline.Api/Controllers/TestController.cs

@@ -232,6 +232,24 @@ IRepository<Hotspot> hotspotRepository
         _contingencyManagementHotspotRepository = contingencyManagementHotspotRepository;
         _hotspotRepository = hotspotRepository;
     }
+
+
+
+
+    //public async Task PublsihVisitToProvince()
+    //{
+    //    //查询需要推送的数据
+        
+
+
+    //}
+
+
+
+
+
+
+
     [HttpGet("addcontingencymanagementhotspot")]
     [AllowAnonymous]
     public async Task AddContingencyManagementHotspot([FromQuery] string? Id,string? ParentId)

+ 10 - 5
src/Hotline.Application/Mappers/OrderMapperConfigs.cs

@@ -31,13 +31,18 @@ public class OrderMapperConfigs : IRegister
             .Map(d => d.StartTime, s => s.Order.StartTime)
             .Map(d => d.FiledTime, s => s.Order.FiledTime)
             .Map(d => d.RecordUrl, s => s.OrderVisit.RecordUrl)
+            .Map(d=>d.SeatEvaluate,s=>s.AiSeatEvaluate)
             .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.IsSuccessText = s.IsSuccess == true ? "是" : "否";
+                //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 ? "是" : s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org)?.IsContact == false ? "否" : "";
+                //d.Volved = s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org)?.Volved == true ? "是" : s.OrderVisit.OrderVisitDetails.FirstOrDefault(x => x.VisitTarget == EVisitTarget.Org)?.Volved == false ? "否" :"";
+                //d.IsSuccessText = s.IsSuccess == true ? "是" : s.IsSuccess == false ? "否" : "";
+                d.OrgProcessingResults = s.AiOrgProcessingResults?.Value;
+                d.IsContact = s.AiIsContact == true ? "是" : s.AiIsContact == false ? "否" : "";
+                d.Volved = s.AiVolved == true ? "是" : s.AiVolved == false ? "否" : "";
+                d.IsSuccessText = s.IsSuccess == true ? "是" : s.IsSuccess == false ? "否" : "";
             });
 
         config.ForType<OrderVisitDetail, OrgVisitDetailListResp>()

+ 1 - 1
src/Hotline.Application/Orders/AiOrderVisitApplication.cs

@@ -37,7 +37,7 @@ namespace Hotline.Application.Orders
         public ISugarQueryable<AiOrderVisitDetail> QueryAiOrderVisitDetail(AiVisitDetailListDto dto)
         {
             return _aiOrderVisitDetailRepository.Queryable()
-                .Includes(x => x.OrderVisit, x => x.OrderVisitDetails)
+                //.Includes(x => x.OrderVisit, x => x.OrderVisitDetails)
                 .Includes(x => x.Order)
                 .Where(x => x.AiOrderVisitId == dto.Id)
                 .WhereIF(dto.AiOrderVisitState.HasValue, x => x.AiOrderVisitState == dto.AiOrderVisitState)

+ 5 - 0
src/Hotline.Share/Dtos/Ai/AiDto.cs

@@ -407,6 +407,11 @@ namespace Hotline.Share.Dtos.Ai
         /// 是否成功
         /// </summary>
         public string? IsSuccessText { get; set; }
+
+        /// <summary>
+        /// 重呼次数
+        /// </summary>
+        public int CallTimes { get; set; }
     }
 
     public class CanAiVisitListDto

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

@@ -18,7 +18,7 @@
         /// 总量
         /// </summary>
         public int AllCount => ZxAllCount + JyAllCount + QzAllCount + ByAllCount + JbAllCount + TsAllCount + QtAllCount;
-        public double? AllTimes => ZxAllTimes + JyAllTimes + QzAllTimes + ByAllTimes + JbAllTimes + TsAllTimes + QtAllTimes;
+        public double? AllTimes => Math.Round(ZxAllTimes.Value + JyAllTimes.Value + QzAllTimes.Value + ByAllTimes.Value + JbAllTimes.Value + TsAllTimes.Value + QtAllTimes.Value, 2);
         public double? AverageTime => GetCalculateAverage(AllCount, AllTimes);
        public string? AcceptanceTypeCode { get; set; }
 

+ 44 - 2
src/Hotline/Orders/AiOrderVisitDetail.cs

@@ -1,4 +1,7 @@
-using Hotline.Share.Enums.Ai;
+using Hotline.Share.Dtos;
+using Hotline.Share.Enums.Ai;
+using Hotline.Share.Enums.Order;
+using Oracle.ManagedDataAccess.Types;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -57,8 +60,47 @@ namespace Hotline.Orders
         /// 批此上传成功后任务ID
         /// </summary>
         public string? TaskUid { get; set; }
-       
 
+        /// <summary>
+        /// 话务员评价(话务评价)
+        /// </summary>
+        public ESeatEvaluate? AiSeatEvaluate { get; set; }
+
+        /// <summary>
+        /// 话务员不满意原因
+        /// </summary>
+        public string? AiSeatNoSatisfiedReason { get; set; }
+
+        /// <summary>
+        /// 是否联系
+        /// </summary>
+        public bool? AiIsContact { get; set; }
+
+        /// <summary>
+        /// 处理结果
+        /// </summary>
+        public bool? AiVolved { get; set; }
 
+        /// <summary>
+        /// 未处理内容
+        /// </summary>
+        public string? AiVolveConent { get; set; }
+
+        /// <summary>
+        /// 部门办件结果
+        /// </summary>
+        [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+        public Kv? AiOrgProcessingResults { get; set; }
+
+        /// <summary>
+        /// 不满意原因
+        /// </summary>
+        public string? AiOrgNoSatisfiedReason { get; set; }
+
+        /// <summary>
+        /// 重呼次数
+        /// </summary>
+        [SugarColumn(DefaultValue = "0")]
+        public int CallTimes { get; set; }
     }
 }