Dun.Jason 9 months ago
parent
commit
45918e682f

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

@@ -27,6 +27,7 @@ using Newtonsoft.Json;
 using Novacode.NETCorePort;
 using Novacode.NETCorePort;
 using Org.BouncyCastle.Utilities;
 using Org.BouncyCastle.Utilities;
 using SqlSugar;
 using SqlSugar;
+using System.Runtime.CompilerServices;
 using System.Threading;
 using System.Threading;
 using XF.Domain.Authentications;
 using XF.Domain.Authentications;
 using XF.Domain.Constants;
 using XF.Domain.Constants;
@@ -693,6 +694,15 @@ namespace Hotline.Api.Controllers
                                 aiOrderVisitDetail.OrderVisit.VisitType = Share.Enums.Order.EVisitType.ChipVoiceVisit;
                                 aiOrderVisitDetail.OrderVisit.VisitType = Share.Enums.Order.EVisitType.ChipVoiceVisit;
                                 aiOrderVisitDetail.OrderVisit.AiVisitTime();
                                 aiOrderVisitDetail.OrderVisit.AiVisitTime();
                                 aiOrderVisitDetail.IsSuccess = true;
                                 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)
                                 if (orgProcessingResults != null)
                                 {
                                 {
                                     aiOrderVisitDetail.OrderVisit.NowEvaluate = orgProcessingResults;
                                     aiOrderVisitDetail.OrderVisit.NowEvaluate = orgProcessingResults;

+ 4 - 4
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();
                 .Where(x => x.AiVisitTime >= StartTime && x.AiVisitTime <= EndTime && x.IsSuccess != null).CountAsync();
 
 
             returnModel.AiVisitSatisfiedCount = await _aiOrderVisitDetailRepository.Queryable()
             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()
             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()
             returnModel.AIVisitFailCount = await _aiOrderVisitDetailRepository.Queryable()
                 .Where(x => x.AiVisitTime >= StartTime && x.AiVisitTime <= EndTime && x.IsSuccess == false).CountAsync();
                 .Where(x => x.AiVisitTime >= StartTime && x.AiVisitTime <= EndTime && x.IsSuccess == false).CountAsync();

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

@@ -232,6 +232,24 @@ IRepository<Hotspot> hotspotRepository
         _contingencyManagementHotspotRepository = contingencyManagementHotspotRepository;
         _contingencyManagementHotspotRepository = contingencyManagementHotspotRepository;
         _hotspotRepository = hotspotRepository;
         _hotspotRepository = hotspotRepository;
     }
     }
+
+
+
+
+    public async Task PublsihVisitToProvince()
+    {
+        //查询需要推送的数据
+        
+
+
+    }
+
+
+
+
+
+
+
     [HttpGet("addcontingencymanagementhotspot")]
     [HttpGet("addcontingencymanagementhotspot")]
     [AllowAnonymous]
     [AllowAnonymous]
     public async Task AddContingencyManagementHotspot([FromQuery] string? Id,string? ParentId)
     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.StartTime, s => s.Order.StartTime)
             .Map(d => d.FiledTime, s => s.Order.FiledTime)
             .Map(d => d.FiledTime, s => s.Order.FiledTime)
             .Map(d => d.RecordUrl, s => s.OrderVisit.RecordUrl)
             .Map(d => d.RecordUrl, s => s.OrderVisit.RecordUrl)
+            .Map(d=>d.SeatEvaluate,s=>s.AiSeatEvaluate)
             .AfterMapping((s, d) =>
             .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>()
         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)
         public ISugarQueryable<AiOrderVisitDetail> QueryAiOrderVisitDetail(AiVisitDetailListDto dto)
         {
         {
             return _aiOrderVisitDetailRepository.Queryable()
             return _aiOrderVisitDetailRepository.Queryable()
-                .Includes(x => x.OrderVisit, x => x.OrderVisitDetails)
+                //.Includes(x => x.OrderVisit, x => x.OrderVisitDetails)
                 .Includes(x => x.Order)
                 .Includes(x => x.Order)
                 .Where(x => x.AiOrderVisitId == dto.Id)
                 .Where(x => x.AiOrderVisitId == dto.Id)
                 .WhereIF(dto.AiOrderVisitState.HasValue, x => x.AiOrderVisitState == dto.AiOrderVisitState)
                 .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>
         /// </summary>
         public string? IsSuccessText { get; set; }
         public string? IsSuccessText { get; set; }
+
+        /// <summary>
+        /// 重呼次数
+        /// </summary>
+        public int CallTimes { get; set; }
     }
     }
 
 
     public class CanAiVisitListDto
     public class CanAiVisitListDto

+ 43 - 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 SqlSugar;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
@@ -57,8 +60,46 @@ namespace Hotline.Orders
         /// 批此上传成功后任务ID
         /// 批此上传成功后任务ID
         /// </summary>
         /// </summary>
         public string? TaskUid { get; set; }
         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>
+        public int CallTimes { get; set; }
     }
     }
 }
 }