ソースを参照

Merge branch 'master' of http://110.188.24.182:10023/Fengwo/hotline

xf 1 年間 前
コミット
ef026af915

+ 18 - 2
src/Hotline.Api/Controllers/DataSharing/ProvinceController.cs

@@ -92,7 +92,11 @@ namespace Hotline.Api.Controllers.DataSharing
             //处理组装数据,推送数据
             var data = _mapper.Map<AddOrderDto>(dto);
             if (dto.TrowGuid != "【政民互动直派】")
+            {
                 data.IsProvince = true;
+                data.SourceChannel = "政民互动直派";
+                data.SourceChannelCode = "ZMHD";
+            }
 
             //处理性别
             switch (dto.AppLicantSex)
@@ -374,6 +378,18 @@ namespace Hotline.Api.Controllers.DataSharing
 
             if (!string.IsNullOrEmpty(id))
             {
+                var dataOrder = await _dataOrderRepository.GetAsync(p => p.ProvinceNo == dto.CaseSerial, HttpContext.RequestAborted);
+                if (dataOrder != null)
+                {
+                    var listFiles = await GetFileData(dto.CliengGuid, dto.CaseSerial, "工单补充");
+                    OrderComplementDto complementDto = new OrderComplementDto
+                    {
+                        Opinion = dto.SupplyContent,
+                        OrderId = dataOrder.OrderId,
+                        FileJson = listFiles
+                    };
+                    await _mediator.Send(new AddOrderComplementAsyncNotify { OrderComplementDto = complementDto }, HttpContext.RequestAborted);
+                }
                 //向业务系统推送消息
                 //await _capPublisher.PublishAsync(Sharing.Share.Mq.EventNames.SharingOrderSupplements, _mapper.Map<SupplementsDto>(dto), cancellationToken: HttpContext.RequestAborted);
                 return OpenResponse.Ok(Reponse.Success("您已成功提交数据!"));
@@ -384,7 +400,7 @@ namespace Hotline.Api.Controllers.DataSharing
         }
 
         /// <summary>
-        /// 服务工单撤单接口
+        /// 服务工单撤单接口---已完成-----1
         /// </summary>
         /// <param name="receiveRevokeCaseInfo">撤单对象</param>
         /// <returns></returns>
@@ -485,7 +501,7 @@ namespace Hotline.Api.Controllers.DataSharing
         }
 
         /// <summary>
-        /// 上报工单处理结果/退回接口
+        /// 上报工单处理结果/退回接口---已完成-----1
         /// </summary>
         /// <param name="receiveGetCaseReultSend">上报工单处理结果/退回对象</param>
         /// <returns></returns>

+ 306 - 297
src/Hotline.Application/DataSharing/Province/PushDataBgService.cs

@@ -1,297 +1,306 @@
-//using Hotline.DataSharing.Province.HuiJu.Send;
-//using Hotline.DataSharing.Province.Other;
-//using Hotline.DataSharing.Province.Services;
-//using Hotline.DataSharing.Province.XieTong.Knowledge;
-//using Hotline.DataSharing.Province.XieTong.Receive;
-//using Hotline.DataSharing.Province.XieTong.Send;
-//using MediatR;
-//using Microsoft.AspNetCore.Http;
-//using Microsoft.Extensions.DependencyInjection;
-//using Microsoft.Extensions.Hosting;
-//using System.Threading;
-//using XF.Domain.Repository;
-//using static System.Runtime.InteropServices.JavaScript.JSType;
-
-//namespace Hotline.Application.DataSharing.Province
-//{
-//    /// <summary>
-//    /// 后台定时任务
-//    /// </summary>
-//    public class PushDataBgService : BackgroundService
-//    {
-//        private readonly IServiceScopeFactory _serviceScopeFactory;
-
-//        /// <summary>
-//        /// 
-//        /// </summary>
-//        /// <param name="serviceScopeFactory"></param>
-//        public PushDataBgService(IServiceScopeFactory serviceScopeFactory)
-//        {
-//            _serviceScopeFactory = serviceScopeFactory;
-//        }
-
-//        /// <summary>
-//        /// 
-//        /// </summary>
-//        /// <param name="stoppingToken"></param>
-//        /// <returns></returns>
-//        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
-//        {
-//            //10分钟扫描一次数据库
-//            using var sc = _serviceScopeFactory.CreateScope();
-//            var time = TimeSpan.FromSeconds(60 * 10);
-//            while (!stoppingToken.IsCancellationRequested)
-//            {
-//                using var scope = _serviceScopeFactory.CreateScope();
-//                var _waitingPushDataRepository = scope.ServiceProvider.GetService<IRepository<DsWaitingPushData>>();
-//                var _sendCaseInfoRepository = scope.ServiceProvider.GetService<IRepository<DsSendCaseInfo>>();
-//                var _mediator = scope.ServiceProvider.GetService<IMediator>();
-//                var _pusherProviderService = scope.ServiceProvider.GetService<IPusherProviderService>();
-
-//                #region 批量推送省数据
-//                //查询待推送数据
-//                var listData = await _waitingPushDataRepository
-//                .Queryable()
-//                .Take(30)
-//                .OrderByDescending(p => p.Priority)
-//                       .ToListAsync();
-//                var isContinue = true;
-//                if (listData != null && listData.Count > 0)
-//                {
-//                    List<DsSubmitCaseProcess> submitCaseProcesses = new(); //服务工单处理过程
-//                    List<DsSubmitCaseResult> submitCaseResults = new(); //服务工单处理结果
-//                    List<DsSubmitVisitInfo> submitVisitInfos = new(); //服务工单回访评价
-//                    List<DsGetCaseMaterialInfo> getCaseMaterialInfos = new();//附件上传处理
-//                    DsGetCaseBackApply dsGetCaseBackApply = null;//退回申请
-//                    DsSendSuperviseProcessInfo dsSendSuperviseProcessInfo = null;//服务工单督办过程
-//                    DsSendSuperviseResultInfo dsSendSuperviseResultInfo = null;//服务工单督办结果
-//                    DsScreenCaseInfoSend dsScreenCaseInfoSend = null;//工单发起甄别
-//                    DsDelayCaseInfoSend dsDelayCaseInfoSend = null;//服务工单申请延时
-//                    DsZmhdCaseInfoPublic dsZmhdCaseInfoPublic = null;//政民互动提交公开
-//                    List<DsSubmitCaseInfo> dsSubmitCaseInfos = new();//服务工单受理推送工单--批量
-
-//                    DsGetCaseProcessReceive dsGetCaseProcessReceive = null;//服务工单交办处理过程
-//                    DsGetVisitInfoReceive dsGetVisitInfoReceive = null;//服务工单交办评价
-//                    List<DsSubmitCaseRecord> dsSubmitCaseRecords = new();//挂电话推送--批量推送
-//                    DsSubmitCaseTotal dsSubmitCaseTotal = null;//统计数据
-//                    DsSupplyCaseInfoSend dsSupplyCaseInfoSend = null;//上报补充诉求
-//                    DsRevokeCaseInfo dsRevokeCaseInfo = null;//服务工单撤单
-//                    DsRemindCaseInfo dsRemindCaseInfo = null;//服务工单催单
-//                    DsGetKnowledgeInfoSend dsGetKnowledgeInfoSend = null;//知识库上报
-//                    DsGetKnowledgeInfoUpdate dsGetKnowledgeInfoUpdate = null;//知识库变更
-//                    DsGetKnowledgeInfoAbandon dsGetKnowledgeInfoAbandon = null;//知识库下架
-//                    DsSendRealTimeStatus dsSendRealTimeStatus = null;//实时服务上报
-//                    //根据查询出来数据组装推送数据
-//                    foreach (var item in listData)
-//                    {
-//                        switch (item.ServiceInterface)
-//                        {
-//                            case "GetCaseBackApply"://退回申请
-//                                dsGetCaseBackApply = System.Text.Json.JsonSerializer.Deserialize<DsGetCaseBackApply>(item.Data);
-//                                break;
-//                            case "SendSuperviseProcessInfo"://服务工单督办过程
-//                                dsSendSuperviseProcessInfo = System.Text.Json.JsonSerializer.Deserialize<DsSendSuperviseProcessInfo>(item.Data);
-//                                break;
-//                            case "SendSuperviseResultInfo"://服务工单督办结果
-//                                dsSendSuperviseResultInfo = System.Text.Json.JsonSerializer.Deserialize<DsSendSuperviseResultInfo>(item.Data);
-//                                break;
-//                            case "ScreenCaseInfoSend"://工单发起甄别
-//                                dsScreenCaseInfoSend = System.Text.Json.JsonSerializer.Deserialize<DsScreenCaseInfoSend>(item.Data);
-//                                break;
-//                            case "DelayCaseInfoSend"://服务工单申请延时
-//                                dsDelayCaseInfoSend = System.Text.Json.JsonSerializer.Deserialize<DsDelayCaseInfoSend>(item.Data);
-//                                break;
-//                            case "ZmhdCaseInfoPublic"://政民互动提交公开
-//                                dsZmhdCaseInfoPublic = System.Text.Json.JsonSerializer.Deserialize<DsZmhdCaseInfoPublic>(item.Data);
-//                                break;
-//                            case "SubmitCaseInfo"://服务工单受理推送工单
-//                                var submitCaseInfo = System.Text.Json.JsonSerializer.Deserialize<DsSubmitCaseInfo>(item.Data);
-//                                if (submitCaseInfo != null) dsSubmitCaseInfos.Add(submitCaseInfo);
-//                                break;
-//                            case "GetCaseProcessReceive"://服务工单交办处理过程
-//                                dsGetCaseProcessReceive = System.Text.Json.JsonSerializer.Deserialize<DsGetCaseProcessReceive>(item.Data);
-//                                break;
-//                            case "GetVisitInfoReceive"://服务工单交办评价
-//                                dsGetVisitInfoReceive = System.Text.Json.JsonSerializer.Deserialize<DsGetVisitInfoReceive>(item.Data);
-//                                break;
-//                            case "SubmitCaseRecord"://挂电话推送--批量推送
-//                                var caseRecord = System.Text.Json.JsonSerializer.Deserialize<DsSubmitCaseRecord>(item.Data);
-//                                if (caseRecord != null) dsSubmitCaseRecords.Add(caseRecord);
-//                                break;
-//                            case "SubmitCaseTotal"://统计数据
-//                                dsSubmitCaseTotal = System.Text.Json.JsonSerializer.Deserialize<DsSubmitCaseTotal>(item.Data);
-//                                break;
-//                            case "SupplyCaseInfoSend"://上报补充诉求
-//                                dsSupplyCaseInfoSend = System.Text.Json.JsonSerializer.Deserialize<DsSupplyCaseInfoSend>(item.Data);
-//                                break;
-//                            case "SendRevokeCaseInfo"://服务工单撤单
-//                                dsRevokeCaseInfo = System.Text.Json.JsonSerializer.Deserialize<DsRevokeCaseInfo>(item.Data);
-//                                break;
-//                            case "SendRemindCaseInfo"://服务工单催单
-//                                dsRemindCaseInfo = System.Text.Json.JsonSerializer.Deserialize<DsRemindCaseInfo>(item.Data);
-//                                break;
-//                            case "GetKnowledgeInfoSend"://知识库上报
-//                                dsGetKnowledgeInfoSend = System.Text.Json.JsonSerializer.Deserialize<DsGetKnowledgeInfoSend>(item.Data);
-//                                break;
-//                            case "GetKnowledgeInfoUpdate"://知识库变更
-//                                dsGetKnowledgeInfoUpdate = System.Text.Json.JsonSerializer.Deserialize<DsGetKnowledgeInfoUpdate>(item.Data);
-//                                break;
-//                            case "GetKnowledgeInfoAbandon"://知识库下架
-//                                dsGetKnowledgeInfoAbandon = System.Text.Json.JsonSerializer.Deserialize<DsGetKnowledgeInfoAbandon>(item.Data);
-//                                break;
-//                            case "SendRealTimeStatus"://实时服务上报
-//                                dsSendRealTimeStatus = System.Text.Json.JsonSerializer.Deserialize<DsSendRealTimeStatus>(item.Data);
-//                                break;
-
-
-//                            case "SubmitCaseProcess"://服务工单处理过程
-//                                var caseProcess = System.Text.Json.JsonSerializer.Deserialize<DsSubmitCaseProcess>(item.Data);
-//                                if (caseProcess != null) submitCaseProcesses.Add(caseProcess);
-//                                break;
-//                            case "SubmitCaseResult": //服务工单处理结果
-//                                var caseResult = System.Text.Json.JsonSerializer.Deserialize<DsSubmitCaseResult>(item.Data);
-//                                if (caseResult != null) submitCaseResults.Add(caseResult);
-//                                break;
-//                            case "SubmitVisitInfo"://服务工单回访评价
-//                                var visitInfo = System.Text.Json.JsonSerializer.Deserialize<DsSubmitVisitInfo>(item.Data);
-//                                if (visitInfo != null) submitVisitInfos.Add(visitInfo);
-//                                break;
-//                            case "GetCaseMaterialInfo"://附件
-//                                var materialInfo = System.Text.Json.JsonSerializer.Deserialize<DsGetCaseMaterialInfo>(item.Data);
-//                                if (materialInfo != null) getCaseMaterialInfos.Add(materialInfo);
-//                                break;
-//                            default:
-//                                break;
-//                        }
-//                    }
-
-//                    //推送对应消息
-//                    //退回申请
-//                    if (dsGetCaseBackApply != null)
-//                        await _pusherProviderService.GetCaseBackApplyPusher(dsGetCaseBackApply, default);
-
-//                    //服务工单督办过程
-//                    if (dsSendSuperviseProcessInfo != null)
-//                        await _pusherProviderService.SendSuperviseProcessInfoPusher(dsSendSuperviseProcessInfo, default);
-
-//                    //服务工单督办过程
-//                    if (dsSendSuperviseResultInfo != null)
-//                        await _pusherProviderService.SendSuperviseResultInfoPusher(dsSendSuperviseResultInfo, default);
-
-//                    //工单发起甄别
-//                    if (dsScreenCaseInfoSend != null)
-//                        await _pusherProviderService.ScreenCaseInfoSendPusher(dsScreenCaseInfoSend, default);
-
-//                    //服务工单申请延时
-//                    if (dsDelayCaseInfoSend != null)
-//                        await _pusherProviderService.DelayCaseInfoSendPusher(dsDelayCaseInfoSend, default);
-
-//                    //政民互动提交公开
-//                    if (dsZmhdCaseInfoPublic != null)
-//                        await _pusherProviderService.ZmhdCaseInfoPublicPusher(dsZmhdCaseInfoPublic, default);
-
-//                    //服务工单受理推送工单
-//                    if (dsSubmitCaseInfos != null && dsSubmitCaseInfos.Count > 0)
-//                        await _pusherProviderService.ProvinceOrderCreatedPusher(dsSubmitCaseInfos, default);
-
-//                    //服务工单交办处理过程
-//                    if (dsGetCaseProcessReceive != null)
-//                        await _pusherProviderService.GetCaseProcessReceivePusher(dsGetCaseProcessReceive, default);
-
-//                    //服务工单交办评价请求
-//                    if (dsGetVisitInfoReceive != null)
-//                        await _pusherProviderService.GetVisitInfoReceivePusher(dsGetVisitInfoReceive, default);
-
-//                    //  挂电话推送--批量推送
-//                    if (dsSubmitCaseRecords != null && dsSubmitCaseRecords.Count > 0)
-//                        await _pusherProviderService.SubmitCaseRecordPusher(dsSubmitCaseRecords, default);
-
-//                    //  统计数据
-//                    if (dsSubmitCaseTotal != null)
-//                        await _pusherProviderService.SubmitCaseTotalPusher(dsSubmitCaseTotal, default);
-
-//                    //  上报补充诉求
-//                    if (dsSupplyCaseInfoSend != null)
-//                        await _pusherProviderService.SupplyCaseInfoSendPusher(dsSupplyCaseInfoSend, default);
-
-//                    //  服务工单撤单
-//                    if (dsRevokeCaseInfo != null)
-//                        await _pusherProviderService.SendRevokeCaseInfoPusher(dsRevokeCaseInfo, default);
-
-//                    //  服务工单催单
-//                    if (dsRemindCaseInfo != null)
-//                        await _pusherProviderService.SendRemindCaseInfoPusher(dsRemindCaseInfo, default);
-
-//                    //  知识库上报
-//                    if (dsGetKnowledgeInfoSend != null)
-//                        await _pusherProviderService.GetKnowledgeInfoSendPusher(dsGetKnowledgeInfoSend, default);
-
-//                    //  知识库变更
-//                    if (dsGetKnowledgeInfoUpdate != null)
-//                        await _pusherProviderService.GetKnowledgeInfoUpdatePusher(dsGetKnowledgeInfoUpdate, default);
-
-//                    //  知识库下架
-//                    if (dsGetKnowledgeInfoAbandon != null)
-//                        await _pusherProviderService.GetKnowledgeInfoAbandonPusher(dsGetKnowledgeInfoAbandon, default);
-
-//                    //  实时服务上报
-//                    if (dsSendRealTimeStatus != null)
-//                        await _pusherProviderService.SendRealTimeStatusPusher(dsSendRealTimeStatus, default);
-
-
-//                    //服务工单处理过程
-//                    if (submitCaseProcesses != null && submitCaseProcesses.Count > 0)
-//                    {
-//                        await _pusherProviderService.SubmitCaseProcessPusher(submitCaseProcesses, default);
-//                        //  await _mediator.Publish(new SubmitCaseProcessNotification(submitCaseProcesses));
-//                    }
-
-//                    //服务工单处理结果
-//                    if (submitCaseResults != null && submitCaseResults.Count > 0)
-//                    {
-//                        await _pusherProviderService.SubmitCaseResultPusher(submitCaseResults, default);
-//                        //  await _mediator.Publish(new SubmitCaseResultNotification(submitCaseResults));
-//                    }
-
-//                    //服务工单回访评价
-//                    if (submitVisitInfos != null && submitVisitInfos.Count > 0)
-//                    {
-//                        await _pusherProviderService.SubmitVisitInfoPusher(submitVisitInfos, default);
-//                        // await _mediator.Publish(new SubmitVisitInfoNotification(submitVisitInfos));
-//                    }
-
-
-//                    //附件上传处理  
-//                    if (getCaseMaterialInfos != null && getCaseMaterialInfos.Count > 0)
-//                    {
-//                        await _pusherProviderService.GetCaseMaterialInfoPusher(getCaseMaterialInfos, default);
-//                        // await _mediator.Publish(new GetCaseMaterialInfoNotification(getCaseMaterialInfos));
-//                    }
-//                }
-//                else
-//                    isContinue = false;
-//                #endregion
-
-//                #region 拉取12315工单办理信息
-//                //查询是否存在需要拉取办理信息的工单
-//                var listSendCaseInfo = await _sendCaseInfoRepository
-//                    .Queryable()
-//                    .OrderBy(p => p.CreationTime)
-//                    .ToListAsync();
-//                //处理数据
-//                if (listSendCaseInfo != null && listSendCaseInfo.Count > 0)
-//                {
-//                    foreach (var item in listSendCaseInfo)
-//                        await _pusherProviderService.GetCaseDistrecordSendPusher(item.CaseSerial, default);// _mediator.Publish(new GetCaseDistrecordSendNotification(item.CaseSerial));
-//                }
-//                else
-//                    isContinue = false;
-//                #endregion
-
-//                //如果数据都为空,停止
-//                if (!isContinue)
-//                    await Task.Delay(time, stoppingToken);
-//            }
-//        }
-//    }
-//}
+using Hotline.DataSharing.Province.HuiJu.Send;
+using Hotline.DataSharing.Province.Other;
+using Hotline.DataSharing.Province.Services;
+using Hotline.DataSharing.Province.XieTong.Knowledge;
+using Hotline.DataSharing.Province.XieTong.Receive;
+using Hotline.DataSharing.Province.XieTong.Send;
+using MediatR;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using System.Threading;
+using XF.Domain.Repository;
+using static System.Runtime.InteropServices.JavaScript.JSType;
+
+namespace Hotline.Application.DataSharing.Province
+{
+    /// <summary>
+    /// 后台定时任务
+    /// </summary>
+    public class PushDataBgService : BackgroundService
+    {
+        private readonly IServiceScopeFactory _serviceScopeFactory;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="serviceScopeFactory"></param>
+        public PushDataBgService(IServiceScopeFactory serviceScopeFactory)
+        {
+            _serviceScopeFactory = serviceScopeFactory;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="stoppingToken"></param>
+        /// <returns></returns>
+        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
+        {
+            //10分钟扫描一次数据库
+            using var sc = _serviceScopeFactory.CreateScope();
+            var time = TimeSpan.FromSeconds(60 * 10);
+            while (!stoppingToken.IsCancellationRequested)
+            {
+                using var scope = _serviceScopeFactory.CreateScope();
+                var _waitingPushDataRepository = scope.ServiceProvider.GetService<IRepository<DsWaitingPushData>>();
+                var _sendCaseInfoRepository = scope.ServiceProvider.GetService<IRepository<DsSendCaseInfo>>();
+                var _mediator = scope.ServiceProvider.GetService<IMediator>();
+                var _pusherProviderService = scope.ServiceProvider.GetService<IPusherProviderService>();
+
+                #region 批量推送省数据
+                //查询待推送数据
+                var listData = await _waitingPushDataRepository
+                .Queryable()
+                .Take(30)
+                .OrderByDescending(p => p.Priority)
+                       .ToListAsync();
+                var isContinue = true;
+                if (listData != null && listData.Count > 0)
+                {
+                    List<DsSubmitCaseProcess> submitCaseProcesses = new(); //服务工单处理过程
+                    List<DsSubmitCaseResult> submitCaseResults = new(); //服务工单处理结果
+                    List<DsSubmitVisitInfo> submitVisitInfos = new(); //服务工单回访评价
+                    List<DsGetCaseMaterialInfo> getCaseMaterialInfos = new();//附件上传处理
+                    DsGetCaseBackApply dsGetCaseBackApply = null;//退回申请
+                    DsSendSuperviseProcessInfo dsSendSuperviseProcessInfo = null;//服务工单督办过程
+                    DsSendSuperviseResultInfo dsSendSuperviseResultInfo = null;//服务工单督办结果
+                    DsScreenCaseInfoSend dsScreenCaseInfoSend = null;//工单发起甄别
+                    DsDelayCaseInfoSend dsDelayCaseInfoSend = null;//服务工单申请延时
+                    DsZmhdCaseInfoPublic dsZmhdCaseInfoPublic = null;//政民互动提交公开
+                    List<DsSubmitCaseInfo> dsSubmitCaseInfos = new();//服务工单受理推送工单--批量
+
+                    DsGetCaseProcessReceive dsGetCaseProcessReceive = null;//服务工单交办处理过程
+                    DsGetCaseResultReceive dsGetCaseResultReceive = null;//服务工单交办处理结果
+
+                    DsGetVisitInfoReceive dsGetVisitInfoReceive = null;//服务工单交办评价
+                    List<DsSubmitCaseRecord> dsSubmitCaseRecords = new();//挂电话推送--批量推送
+                    DsSubmitCaseTotal dsSubmitCaseTotal = null;//统计数据
+                    DsSupplyCaseInfoSend dsSupplyCaseInfoSend = null;//上报补充诉求
+                    DsRevokeCaseInfo dsRevokeCaseInfo = null;//服务工单撤单
+                    DsRemindCaseInfo dsRemindCaseInfo = null;//服务工单催单
+                    DsGetKnowledgeInfoSend dsGetKnowledgeInfoSend = null;//知识库上报
+                    DsGetKnowledgeInfoUpdate dsGetKnowledgeInfoUpdate = null;//知识库变更
+                    DsGetKnowledgeInfoAbandon dsGetKnowledgeInfoAbandon = null;//知识库下架
+                    DsSendRealTimeStatus dsSendRealTimeStatus = null;//实时服务上报
+                    //根据查询出来数据组装推送数据
+                    foreach (var item in listData)
+                    {
+                        switch (item.ServiceInterface)
+                        {
+                            case "GetCaseBackApply"://退回申请
+                                dsGetCaseBackApply = System.Text.Json.JsonSerializer.Deserialize<DsGetCaseBackApply>(item.Data);
+                                break;
+                            case "SendSuperviseProcessInfo"://服务工单督办过程
+                                dsSendSuperviseProcessInfo = System.Text.Json.JsonSerializer.Deserialize<DsSendSuperviseProcessInfo>(item.Data);
+                                break;
+                            case "SendSuperviseResultInfo"://服务工单督办结果
+                                dsSendSuperviseResultInfo = System.Text.Json.JsonSerializer.Deserialize<DsSendSuperviseResultInfo>(item.Data);
+                                break;
+                            case "ScreenCaseInfoSend"://工单发起甄别
+                                dsScreenCaseInfoSend = System.Text.Json.JsonSerializer.Deserialize<DsScreenCaseInfoSend>(item.Data);
+                                break;
+                            case "DelayCaseInfoSend"://服务工单申请延时
+                                dsDelayCaseInfoSend = System.Text.Json.JsonSerializer.Deserialize<DsDelayCaseInfoSend>(item.Data);
+                                break;
+                            case "ZmhdCaseInfoPublic"://政民互动提交公开
+                                dsZmhdCaseInfoPublic = System.Text.Json.JsonSerializer.Deserialize<DsZmhdCaseInfoPublic>(item.Data);
+                                break;
+                            case "SubmitCaseInfo"://服务工单受理推送工单
+                                var submitCaseInfo = System.Text.Json.JsonSerializer.Deserialize<DsSubmitCaseInfo>(item.Data);
+                                if (submitCaseInfo != null) dsSubmitCaseInfos.Add(submitCaseInfo);
+                                break;
+                            case "GetCaseProcessReceive"://服务工单交办处理过程
+                                dsGetCaseProcessReceive = System.Text.Json.JsonSerializer.Deserialize<DsGetCaseProcessReceive>(item.Data);
+                                break;
+                            case "GetCaseResultReceive"://服务工单交办处理结果
+                                dsGetCaseResultReceive = System.Text.Json.JsonSerializer.Deserialize<DsGetCaseResultReceive>(item.Data);
+                                break;
+                            case "GetVisitInfoReceive"://服务工单交办评价
+                                dsGetVisitInfoReceive = System.Text.Json.JsonSerializer.Deserialize<DsGetVisitInfoReceive>(item.Data);
+                                break;
+                            case "SubmitCaseRecord"://挂电话推送--批量推送
+                                var caseRecord = System.Text.Json.JsonSerializer.Deserialize<DsSubmitCaseRecord>(item.Data);
+                                if (caseRecord != null) dsSubmitCaseRecords.Add(caseRecord);
+                                break;
+                            case "SubmitCaseTotal"://统计数据
+                                dsSubmitCaseTotal = System.Text.Json.JsonSerializer.Deserialize<DsSubmitCaseTotal>(item.Data);
+                                break;
+                            case "SupplyCaseInfoSend"://上报补充诉求
+                                dsSupplyCaseInfoSend = System.Text.Json.JsonSerializer.Deserialize<DsSupplyCaseInfoSend>(item.Data);
+                                break;
+                            case "SendRevokeCaseInfo"://服务工单撤单
+                                dsRevokeCaseInfo = System.Text.Json.JsonSerializer.Deserialize<DsRevokeCaseInfo>(item.Data);
+                                break;
+                            case "SendRemindCaseInfo"://服务工单催单
+                                dsRemindCaseInfo = System.Text.Json.JsonSerializer.Deserialize<DsRemindCaseInfo>(item.Data);
+                                break;
+                            case "GetKnowledgeInfoSend"://知识库上报
+                                dsGetKnowledgeInfoSend = System.Text.Json.JsonSerializer.Deserialize<DsGetKnowledgeInfoSend>(item.Data);
+                                break;
+                            case "GetKnowledgeInfoUpdate"://知识库变更
+                                dsGetKnowledgeInfoUpdate = System.Text.Json.JsonSerializer.Deserialize<DsGetKnowledgeInfoUpdate>(item.Data);
+                                break;
+                            case "GetKnowledgeInfoAbandon"://知识库下架
+                                dsGetKnowledgeInfoAbandon = System.Text.Json.JsonSerializer.Deserialize<DsGetKnowledgeInfoAbandon>(item.Data);
+                                break;
+                            case "SendRealTimeStatus"://实时服务上报
+                                dsSendRealTimeStatus = System.Text.Json.JsonSerializer.Deserialize<DsSendRealTimeStatus>(item.Data);
+                                break;
+
+
+                            case "SubmitCaseProcess"://服务工单处理过程
+                                var caseProcess = System.Text.Json.JsonSerializer.Deserialize<DsSubmitCaseProcess>(item.Data);
+                                if (caseProcess != null) submitCaseProcesses.Add(caseProcess);
+                                break;
+                            case "SubmitCaseResult": //服务工单处理结果
+                                var caseResult = System.Text.Json.JsonSerializer.Deserialize<DsSubmitCaseResult>(item.Data);
+                                if (caseResult != null) submitCaseResults.Add(caseResult);
+                                break;
+                            case "SubmitVisitInfo"://服务工单回访评价
+                                var visitInfo = System.Text.Json.JsonSerializer.Deserialize<DsSubmitVisitInfo>(item.Data);
+                                if (visitInfo != null) submitVisitInfos.Add(visitInfo);
+                                break;
+                            case "GetCaseMaterialInfo"://附件
+                                var materialInfo = System.Text.Json.JsonSerializer.Deserialize<DsGetCaseMaterialInfo>(item.Data);
+                                if (materialInfo != null) getCaseMaterialInfos.Add(materialInfo);
+                                break;
+                            default:
+                                break;
+                        }
+                    }
+
+                    //推送对应消息
+                    //退回申请
+                    if (dsGetCaseBackApply != null)
+                        await _pusherProviderService.GetCaseBackApplyPusher(dsGetCaseBackApply, default);
+
+                    //服务工单督办过程
+                    if (dsSendSuperviseProcessInfo != null)
+                        await _pusherProviderService.SendSuperviseProcessInfoPusher(dsSendSuperviseProcessInfo, default);
+
+                    //服务工单督办过程
+                    if (dsSendSuperviseResultInfo != null)
+                        await _pusherProviderService.SendSuperviseResultInfoPusher(dsSendSuperviseResultInfo, default);
+
+                    //工单发起甄别
+                    if (dsScreenCaseInfoSend != null)
+                        await _pusherProviderService.ScreenCaseInfoSendPusher(dsScreenCaseInfoSend, default);
+
+                    //服务工单申请延时
+                    if (dsDelayCaseInfoSend != null)
+                        await _pusherProviderService.DelayCaseInfoSendPusher(dsDelayCaseInfoSend, default);
+
+                    //政民互动提交公开
+                    if (dsZmhdCaseInfoPublic != null)
+                        await _pusherProviderService.ZmhdCaseInfoPublicPusher(dsZmhdCaseInfoPublic, default);
+
+                    //服务工单受理推送工单
+                    if (dsSubmitCaseInfos != null && dsSubmitCaseInfos.Count > 0)
+                        await _pusherProviderService.ProvinceOrderCreatedPusher(dsSubmitCaseInfos, default);
+
+                    //服务工单交办处理过程
+                    if (dsGetCaseProcessReceive != null)
+                        await _pusherProviderService.GetCaseProcessReceivePusher(dsGetCaseProcessReceive, default);
+
+                    //服务工单交办处理结果
+                    if (dsGetCaseResultReceive != null)
+                        await _pusherProviderService.GetCaseResultReceivePusher(dsGetCaseResultReceive, default);
+
+                    //服务工单交办评价请求
+                    if (dsGetVisitInfoReceive != null)
+                        await _pusherProviderService.GetVisitInfoReceivePusher(dsGetVisitInfoReceive, default);
+
+                    //  挂电话推送--批量推送
+                    if (dsSubmitCaseRecords != null && dsSubmitCaseRecords.Count > 0)
+                        await _pusherProviderService.SubmitCaseRecordPusher(dsSubmitCaseRecords, default);
+
+                    //  统计数据
+                    if (dsSubmitCaseTotal != null)
+                        await _pusherProviderService.SubmitCaseTotalPusher(dsSubmitCaseTotal, default);
+
+                    //  上报补充诉求
+                    if (dsSupplyCaseInfoSend != null)
+                        await _pusherProviderService.SupplyCaseInfoSendPusher(dsSupplyCaseInfoSend, default);
+
+                    //  服务工单撤单
+                    if (dsRevokeCaseInfo != null)
+                        await _pusherProviderService.SendRevokeCaseInfoPusher(dsRevokeCaseInfo, default);
+
+                    //  服务工单催单
+                    if (dsRemindCaseInfo != null)
+                        await _pusherProviderService.SendRemindCaseInfoPusher(dsRemindCaseInfo, default);
+
+                    //  知识库上报
+                    if (dsGetKnowledgeInfoSend != null)
+                        await _pusherProviderService.GetKnowledgeInfoSendPusher(dsGetKnowledgeInfoSend, default);
+
+                    //  知识库变更
+                    if (dsGetKnowledgeInfoUpdate != null)
+                        await _pusherProviderService.GetKnowledgeInfoUpdatePusher(dsGetKnowledgeInfoUpdate, default);
+
+                    //  知识库下架
+                    if (dsGetKnowledgeInfoAbandon != null)
+                        await _pusherProviderService.GetKnowledgeInfoAbandonPusher(dsGetKnowledgeInfoAbandon, default);
+
+                    //  实时服务上报
+                    if (dsSendRealTimeStatus != null)
+                        await _pusherProviderService.SendRealTimeStatusPusher(dsSendRealTimeStatus, default);
+
+
+                    //服务工单处理过程
+                    if (submitCaseProcesses != null && submitCaseProcesses.Count > 0)
+                    {
+                        await _pusherProviderService.SubmitCaseProcessPusher(submitCaseProcesses, default);
+                        //  await _mediator.Publish(new SubmitCaseProcessNotification(submitCaseProcesses));
+                    }
+
+                    //服务工单处理结果
+                    if (submitCaseResults != null && submitCaseResults.Count > 0)
+                    {
+                        await _pusherProviderService.SubmitCaseResultPusher(submitCaseResults, default);
+                        //  await _mediator.Publish(new SubmitCaseResultNotification(submitCaseResults));
+                    }
+
+                    //服务工单回访评价
+                    if (submitVisitInfos != null && submitVisitInfos.Count > 0)
+                    {
+                        await _pusherProviderService.SubmitVisitInfoPusher(submitVisitInfos, default);
+                        // await _mediator.Publish(new SubmitVisitInfoNotification(submitVisitInfos));
+                    }
+
+
+                    //附件上传处理  
+                    if (getCaseMaterialInfos != null && getCaseMaterialInfos.Count > 0)
+                    {
+                        await _pusherProviderService.GetCaseMaterialInfoPusher(getCaseMaterialInfos, default);
+                        // await _mediator.Publish(new GetCaseMaterialInfoNotification(getCaseMaterialInfos));
+                    }
+                }
+                else
+                    isContinue = false;
+                #endregion
+
+                #region 拉取12315工单办理信息
+                //查询是否存在需要拉取办理信息的工单
+                var listSendCaseInfo = await _sendCaseInfoRepository
+                    .Queryable()
+                    .OrderBy(p => p.CreationTime)
+                    .ToListAsync();
+                //处理数据
+                if (listSendCaseInfo != null && listSendCaseInfo.Count > 0)
+                {
+                    foreach (var item in listSendCaseInfo)
+                        await _pusherProviderService.GetCaseDistrecordSendPusher(item.CaseSerial, default);// _mediator.Publish(new GetCaseDistrecordSendNotification(item.CaseSerial));
+                }
+                else
+                    isContinue = false;
+                #endregion
+
+                //如果数据都为空,停止
+                if (!isContinue)
+                    await Task.Delay(time, stoppingToken);
+            }
+        }
+    }
+}

+ 3 - 1
src/Hotline.Application/Mappers/DataSharing/DsMapperConfigs.cs

@@ -182,8 +182,10 @@ namespace Hotline.Application.Mappers.DataSharing
            .Map(d => d.AreaCode, x => x.AreaCode)
            .Map(d => d.EndAreaCode, x => x.ActualHandleOrgAreaCode)
            .Map(d => d.EndAreaName, x => x.ActualHandleOrgAreaName)
+           .Map(d => d.SignTime, x => x.ActualHandleStepAcceptTime)
+           .Map(d => d.FdBackTime, x => x.ActualHandleTime)
            .Map(d => d.HandleTimeLong, x => x.HandleDurationWorkday)
-            ;
+            ; 
 
             //通话记录
             config.ForType<CallConnectOrderDto, DsSubmitCaseRecord>()

+ 1 - 1
src/Hotline.Share/Dtos/DataSharing/Province/XieTong/Receive/SupplyCaseInfoRequest.cs

@@ -15,7 +15,7 @@ namespace Hotline.Share.Dtos.DataSharing.Province.XieTong.Receive
         /// <summary>
         /// 服务工单
         /// </summary>
-        public DelayCaseResultModel paras { get; set; }
+        public SupplyCaseInfoModel paras { get; set; }
 
     }
     /// <summary>

+ 4 - 2
src/Hotline.Share/Dtos/Order/AddOrderComplementDto.cs

@@ -1,4 +1,6 @@
-namespace Hotline.Share.Dtos.Order;
+using Hotline.Share.Dtos.File;
+
+namespace Hotline.Share.Dtos.Order;
 
 public class AddOrderComplementDto
 {
@@ -12,7 +14,7 @@ public class AddOrderComplementDto
     /// <summary>
     /// 附件
     /// </summary>
-    public List<string> Additions { get; set; } = new();
+    public List<FileDto> Files { get; set; }
 }
 
 public class OrderComplementDto : AddOrderComplementDto

+ 13 - 0
src/Hotline/DataSharing/Province/Notifications/AddOrderComplementAsyncNotify.cs

@@ -0,0 +1,13 @@
+using Hotline.Share.Dtos.Order;
+using MediatR;
+
+namespace Hotline.DataSharing.Province.Notifications
+{
+    /// <summary>
+    /// 新增工单补充信息
+    /// </summary>
+    public class AddOrderComplementAsyncNotify : INotification
+    {
+        public AddOrderComplementDto OrderComplementDto { get; set; }
+    }
+}

+ 11 - 1
src/Hotline/DataSharing/Province/Services/ProvinceService.cs

@@ -1002,10 +1002,20 @@ namespace Hotline.DataSharing.Province.Services
             };
             await _waitingPushDataRepository.AddAsync(pushData, cancellationToken);
             //处理附件
-            await FileData(new List<FileJson>(), data.CaseSerial, data.CliengGuid, dto.AreaCode, cancellationToken); 
+            await FileData(new List<FileJson>(), data.CaseSerial, data.CliengGuid, dto.AreaCode, cancellationToken);
             #endregion
 
+            //这里业务系统处理
+            if (dto.SourceChannelCode== "ZGZFW")
+            {
+
+            }
 
+            //政民互动提交公开
+            if (dto.SourceChannelCode == "ZMHD")
+            {
+
+            }
         }
 
         #region 私有方法

+ 7 - 7
src/Hotline/DataSharing/Province/XieTong/Send/DsGetCaseResultReceive.cs

@@ -64,12 +64,6 @@ namespace Hotline.DataSharing.Province.XieTong.Send
         [SugarColumn(ColumnDescription = "联系方式", ColumnDataType = "varchar(50)")]
         public string ConcactType { get; set; }
 
-        /// <summary>
-        /// 办理时长
-        /// </summary>
-        [SugarColumn(ColumnDescription = "办理时长")]
-        public Double HandleTimeLong { get; set; }
-
         /// <summary>
         /// 签收时间
         /// </summary>
@@ -94,6 +88,12 @@ namespace Hotline.DataSharing.Province.XieTong.Send
         [SugarColumn(ColumnDescription = "反馈意见", ColumnDataType = "text")]
         public string FdBack { get; set; }
 
+        /// <summary>
+        /// 办理时长
+        /// </summary>
+        [SugarColumn(ColumnDescription = "办理时长")]
+        public Double HandleTimeLong { get; set; }
+
         /// <summary>
         /// 区县区域代码
         /// </summary>
@@ -127,7 +127,7 @@ namespace Hotline.DataSharing.Province.XieTong.Send
         /// <summary>
         /// 是否提供公开答复口径
         /// </summary>
-        [SugarColumn(ColumnDescription = "是否提供公开答复口径", ColumnDataType = "varchar(2)")]
+        [SugarColumn(ColumnDescription = "是否提供公开答复口径", ColumnDataType = "varchar(2)", IsNullable = true)]
         public string MsgOpenByArea { get; set; }
 
         /// <summary>

+ 4 - 3
src/Hotline/Orders/OrderComplement.cs

@@ -1,4 +1,5 @@
-using SqlSugar;
+using Hotline.Share.Dtos.File;
+using SqlSugar;
 using XF.Domain.Repository;
 
 namespace Hotline.Orders;
@@ -19,6 +20,6 @@ public class OrderComplement : CreationEntity
     /// <summary>
     /// 附件
     /// </summary>
-    [SugarColumn(ColumnDataType = "json", IsJson = true)]
-    public List<string> Additions { get; set; } = new();
+    [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+    public List<FileJson> FileJson { get; set; }
 }

+ 13 - 4
src/Hotline/Orders/OrderDomainService.cs

@@ -9,6 +9,8 @@ using XF.Domain.Dependency;
 using XF.Domain.Exceptions;
 using XF.Domain.Repository;
 using Hotline.CallCenter.Calls;
+using Hotline.File;
+using Microsoft.AspNetCore.Http;
 
 namespace Hotline.Orders;
 
@@ -25,8 +27,9 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
     private readonly ICapPublisher _capPublisher;
     private readonly IMapper _mapper;
     private readonly ILogger<OrderDomainService> _logger;
+    private readonly IFileRepository _fileRepository;
 
-    public OrderDomainService(
+	public OrderDomainService(
         IOrderRepository orderRepository,
         IRepository<OrderRedo> orderRedoRepository,
         IRepository<OrderPublish> orderPublishRepository,
@@ -38,7 +41,8 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
         ICapPublisher capPublisher,
         IMapper mapper,
         ILogger<OrderDomainService> logger,
-        IRepository<WexCallRecord> wexCallRecordRepository)
+        IFileRepository fileRepository,
+		IRepository<WexCallRecord> wexCallRecordRepository)
     {
         _orderRepository = orderRepository;
         _orderRedoRepository = orderRedoRepository;
@@ -51,7 +55,9 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
         _capPublisher = capPublisher;
         _mapper = mapper;
         _logger = logger;
-    }
+        _fileRepository = fileRepository;
+
+	}
 
     public async Task<Order> GetOrderAsync(string? orderId, bool withHotspot = false, bool withAcceptor = false,
         CancellationToken cancellationToken = default)
@@ -149,7 +155,10 @@ public class OrderDomainService : IOrderDomainService, IScopeDependency
     /// </summary>
     public async Task<string> AddOrderComplementAsync(AddOrderComplementDto dto, CancellationToken cancellationToken)
     {
-        return await _orderComplementRepository.AddAsync(_mapper.Map<OrderComplement>(dto), cancellationToken);
+        var complement = _mapper.Map<OrderComplement>(dto);
+        complement.InitId();
+        if (dto.Files.Any()) complement.FileJson = await _fileRepository.AddFileAsync(dto.Files, complement.Id, "", cancellationToken);
+		return await _orderComplementRepository.AddAsync(complement, cancellationToken);
     }
 
     #endregion