TANG JIANG 1 year ago
parent
commit
6f8e3347c2

+ 1 - 1
src/DataSharing.Application/DataSharing.Application.csproj

@@ -8,7 +8,7 @@
 
   <ItemGroup>
     <PackageReference Include="Hotline.Api.Sdk" Version="1.0.7" />
-    <PackageReference Include="Hotline.Share" Version="1.0.44" />
+    <PackageReference Include="Hotline.Share" Version="1.0.45" />
     <PackageReference Include="Polly.Core" Version="8.2.0" />
   </ItemGroup>
 

+ 13 - 12
src/DataSharing.Application/Mappers/MapperConfigs.cs

@@ -15,6 +15,7 @@ using DataSharing.Share.Dtos.Province.Extend;
 using DataSharing.Share.Dtos.Province.XieTong.Receive;
 using DataSharing.RawData;
 using DataSharing.WebPortal;
+using Hotline.Share.Dtos.TrCallCenter;
 
 namespace DataSharing.Application.Mappers
 {
@@ -202,18 +203,18 @@ namespace DataSharing.Application.Mappers
             ;
 
             //通话记录
-            config.ForType<CallConnectOrderDto,SubmitCaseRecordInfo>()
-            .Map(d => d.PhoneNumber, x => x.CallRecord.CPN)
-            .Map(d => d.PhoneStatus, x => x.CallRecord.OnState == EOnState.On ? "10" : "20")
-            .Map(d => d.IsPhoneCall, x => x.CallRecord.Direction == ECallDirection.Out ? "1" : "0")
-            .Map(d => d.CallStart, x => x.CallRecord.AnsweredTime)
-            .Map(d => d.CallEnd, x => x.CallRecord.ByeTime)
-            .Map(d => d.InIvr, x => x.CallRecord.InIvrTime)
-            .Map(d => d.InQueue, x => x.CallRecord.InQueueTime)
-            .Map(d => d.CallTime, x => x.CallRecord.BeginRingTime)
-            .Map(d => d.CallLength, x => x.CallRecord.TalkTime)
-            .Map(d => d.SeatNumber, x => x.CallRecord.StaffNo)
-            .Map(d => d.AccordUrl, x => x.CallRecord.Direction == ECallDirection.Out ? x.CallRecord.RecordUrl : x.CallRecord.OtherRecordUrl)
+            config.ForType<TrCallDto, SubmitCaseRecordInfo>()
+            .Map(d => d.PhoneNumber, x => x.CPN)
+            .Map(d => d.PhoneStatus, x => x.OnState == EOnState.On ? "10" : "20")
+            .Map(d => d.IsPhoneCall, x => x.CallDirection == ECallDirection.Out ? "1" : "0")
+            .Map(d => d.CallStart, x => x.AnsweredTime)
+            .Map(d => d.CallEnd, x => x.OverTime)
+            .Map(d => d.InIvr, x => x.BeginIvrTime)
+            .Map(d => d.InQueue, x => x.BeginQueueTime)
+            .Map(d => d.CallTime, x => x.BeginRingTime)
+            .Map(d => d.CallLength, x => x.Duration)
+            .Map(d => d.SeatNumber, x => x.TelNo)
+            .Map(d => d.AccordUrl, x => x.RecordingFileUrl)
             ;
 
             //发起甄别

+ 55 - 24
src/DataSharing.Application/Receivers/ProvinceReceiver.cs

@@ -13,14 +13,17 @@ using DataSharing.Share.Enums;
 using DotNetCore.CAP;
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Dtos.Order;
+using Hotline.Share.Dtos.TrCallCenter;
 using Hotline.Share.Enums.FlowEngine;
 using Hotline.Share.Enums.Order;
 using MapsterMapper;
 using Microsoft.Extensions.Logging;
 using System.Security.Cryptography;
+using System.Security.Policy;
 using System.Text;
 using XF.Domain.Dependency;
 using XF.Domain.Repository;
+using static System.Runtime.InteropServices.JavaScript.JSType;
 
 namespace DataSharing.Application.Receivers
 {
@@ -256,15 +259,18 @@ namespace DataSharing.Application.Receivers
         /// <param name="dto"></param>
         /// <returns></returns>
         [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderFlowStarted)]
-        public async Task OrderFlowStartedAsync(OrderDto dto, CancellationToken cancellationToken)
+        public async Task OrderFlowStartedAsync(PublishCallRecrodDto pushdto, CancellationToken cancellationToken)
         {
+            var dto = pushdto.Order;
+
+            var configProvince = _channelConfigurationManager.GetConfigurationProvince();
+
             //如果不是省上派下来的工单,需要汇聚到省上
-            if (!dto.IsProvince)
+            if (dto is not null && !dto.IsProvince)
             {
                 var data = await InitDataAsync(dto, cancellationToken);
 
                 #region 处理请求参数
-                var configProvince = _channelConfigurationManager.GetConfigurationProvince();
                 var request = new ProvinceListRequest<SubmitCaseInfo>(configProvince.ClientId, configProvince.ClientSecret);
                 request.SetData(new List<SubmitCaseInfo>() { data });
                 var jsonData = request.ToString();
@@ -277,6 +283,23 @@ namespace DataSharing.Application.Receivers
                 await FileDataAsync(dto.FileJson, dto.ProvinceNo, data.CliengGuid, EMaterialType.Acceptance, data.AreaCode, cancellationToken);
             }
 
+            //再次推送通话记录
+            if (pushdto.TrCallRecordDto is not null)
+            {
+                var dataCall = _mapper.Map<SubmitCaseRecordInfo>(pushdto.TrCallRecordDto);
+                dataCall.AreaCode = dto.AreaCode;
+                dataCall.CaseSerial = dto.ProvinceNo;
+
+                #region 处理请求参数
+                var requestCall = new ProvinceListRequest<SubmitCaseRecordInfo>(configProvince.ClientId, configProvince.ClientSecret);
+                requestCall.SetData(new List<SubmitCaseRecordInfo>() { dataCall });
+                var jsonDataCall = requestCall.ToString();
+                var urlCall = configProvince.HuiJu + "submit_case_record";
+                //将待推送数据写入待推送表
+                await InitPushDataAsync("SubmitCaseRecord", urlCall, jsonDataCall, cancellationToken, pathType: EPathType.HuiJu, taskPriority: 20);
+                #endregion
+            }
+
             //本地保存工单基础数据
             if (!await _dsOrderRepository.AnyAsync(p => p.OrderId == dto.Id, cancellationToken))
             {
@@ -497,34 +520,36 @@ namespace DataSharing.Application.Receivers
         }
 
         /// <summary>
-        /// 挂电话推送----电话记录---1
+        /// 挂电话推送----电话记录---1List<CallConnectOrderDto> dtos
         /// </summary>
         /// <param name="dtos"></param>
         /// <returns></returns>
         [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineCallBye)]
-        public async Task SubmitCaseRecordAsync(List<CallConnectOrderDto> dtos, CancellationToken cancellationToken)
+        public async Task SubmitCaseRecordAsync(PublishCallRecrodDto dto, CancellationToken cancellationToken)
         {
-            List<SubmitCaseRecordInfo> recordList = new();
-            foreach (var item in dtos)
+            var data = _mapper.Map<SubmitCaseRecordInfo>(dto.TrCallRecordDto);
+            if (dto.Order != null)
             {
-                var data = _mapper.Map<SubmitCaseRecordInfo>(item);
+                data.AreaCode = dto.Order.AreaCode;
+                if (!string.IsNullOrEmpty(dto.Order.ProvinceNo))
+                    data.CaseSerial = dto.Order.ProvinceNo;
+            }
+            else
                 data.AreaCode = _channelConfigurationManager.GetConfigurationCityCode().AreaCode;
 
-                if (item.Order != null && !string.IsNullOrEmpty(item.Order.ProvinceNo))
-                    data.CaseSerial = item.Order.ProvinceNo;
 
-                #region 处理请求参数
-                var configProvince = _channelConfigurationManager.GetConfigurationProvince();
-                var request = new ProvinceListRequest<SubmitCaseRecordInfo>(configProvince.ClientId, configProvince.ClientSecret);
-                request.SetData(new List<SubmitCaseRecordInfo>() { data });
-                var jsonData = request.ToString();
-                var url = configProvince.HuiJu + "submit_case_record";
-                #endregion
+            #region 处理请求参数
+            var configProvince = _channelConfigurationManager.GetConfigurationProvince();
+            var request = new ProvinceListRequest<SubmitCaseRecordInfo>(configProvince.ClientId, configProvince.ClientSecret);
+            request.SetData(new List<SubmitCaseRecordInfo>() { data });
+            var jsonData = request.ToString();
+            var url = configProvince.HuiJu + "submit_case_record";
+            #endregion
+
+            //将待推送数据写入待推送表
+            await InitPushDataAsync("SubmitCaseRecord", url, jsonData, cancellationToken, pathType: EPathType.HuiJu, taskPriority: 20);
 
-                //将待推送数据写入待推送表
-                await InitPushDataAsync("SubmitCaseRecord", url, jsonData, cancellationToken, pathType: EPathType.HuiJu, taskPriority: 20);
 
-            }
         }
 
         /// <summary>
@@ -533,11 +558,17 @@ namespace DataSharing.Application.Receivers
         /// <param name="dto"></param>
         /// <returns></returns>
         [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineCallConnectWithOrder)]
-        public async Task SubmitCaseRecordOrderAsync(CallConnectOrderDto dto, CancellationToken cancellationToken)
+        public async Task SubmitCaseRecordOrderAsync(PublishCallRecrodDto dto, CancellationToken cancellationToken)
         {
-            var data = _mapper.Map<SubmitCaseRecordInfo>(dto);
-            data.AreaCode = _channelConfigurationManager.GetConfigurationCityCode().AreaCode;
-            data.CaseSerial = dto.Order.ProvinceNo;
+            var data = _mapper.Map<SubmitCaseRecordInfo>(dto.TrCallRecordDto);
+            if (dto.Order != null)
+            {
+                data.AreaCode = dto.Order.AreaCode;
+                if (!string.IsNullOrEmpty(dto.Order.ProvinceNo))
+                    data.CaseSerial = dto.Order.ProvinceNo;
+            }
+            else
+                data.AreaCode = _channelConfigurationManager.GetConfigurationCityCode().AreaCode;
 
             #region 处理请求参数
             var configProvince = _channelConfigurationManager.GetConfigurationProvince();

+ 0 - 4
src/DataSharing/Province/PusherProviderService.cs

@@ -2,18 +2,14 @@
 using DataSharing.Share.Dtos.Province;
 using DataSharing.Share.Dtos.Province.XieTong;
 using DataSharing.Share.Dtos.Province.XieTong.Receive;
-using DataSharing.Share.Dtos.Province.XieTong.Send;
 using DataSharing.Share.Enums;
 using DotNetCore.CAP;
 using MapsterMapper;
-using Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
-using StackExchange.Redis;
 using System.Net;
 using XF.Domain.Dependency;
 using XF.Domain.Repository;
-using static System.Runtime.InteropServices.JavaScript.JSType;
 
 namespace DataSharing.Province
 {

+ 10 - 10
src/DataSharing/SendTask/TaskLoadJob.cs

@@ -23,16 +23,16 @@ public class TaskLoadJob : IJob, IDisposable
 
     public async Task Execute(IJobExecutionContext context)
     {
-        //var tasks = await _taskRepository.Queryable()
-        //    .Where(d => !d.IsSuccess && d.SendTimes <= 60)
-        //    .OrderByDescending(d => d.TaskPriority)
-        //    .Take(10)
-        //    .ToListAsync(context.CancellationToken);
-
-        var tasks = new List<DsSendTask>
-        {
-            new DsSendTask { Id = "123" }
-        };
+        var tasks = await _taskRepository.Queryable()
+            .Where(d => !d.IsSuccess && d.SendTimes <= 60)
+            .OrderByDescending(d => d.TaskPriority)
+            .Take(10)
+            .ToListAsync(context.CancellationToken);
+
+        //var tasks = new List<DsSendTask>
+        //{
+        //    new DsSendTask { Id = "123" }
+        //};
 
         if (tasks.Any())
         {