TANG JIANG 1 rok pred
rodič
commit
3212b787b4

+ 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.59" />
+    <PackageReference Include="Hotline.Share" Version="1.0.61" />
     <PackageReference Include="Polly.Core" Version="8.2.0" />
   </ItemGroup>
 

+ 1 - 1
src/DataSharing.Application/Mappers/MapperConfigs.cs

@@ -252,7 +252,7 @@ namespace DataSharing.Application.Mappers
            ;
 
             //服务工单退回申请
-            config.ForType<PublishOrderSendBackDto, GetCaseBackApplyInfo>()
+            config.ForType<PublishOrderSendBackModelDto, GetCaseBackApplyInfo>()
             // .Map(d => d.OrderSendBackId, x => x.SendBack.Id)
             .Map(d => d.BackType, x => x.SendBack.Handle)
             .Map(d => d.DealDept, x => x.SendBack.CreatorOrgName)

+ 57 - 51
src/DataSharing.Application/Receivers/ProvinceReceiver.cs

@@ -104,67 +104,73 @@ namespace DataSharing.Application.Receivers
         /// <param name="dto"></param>
         /// <returns></returns>
         [CapSubscribe(Hotline.Share.Mq.EventNames.HotlineOrderFlowPrevious)]
-        public async Task GetCaseBackApplyAsync(PublishOrderSendBackDto dto, CancellationToken cancellationToken)
+        public async Task GetCaseBackApplyAsync(PublishOrderSendBackDto dtos, CancellationToken cancellationToken)
         {
-            //处理110退回事件
-            if (dto.Order.Source == ESource.Police110)
+            if (dtos != null && dtos.SendDatas != null)
             {
-                var checkData = await _policeSendChainDealDsRepository.AnyAsync(p => p.AlarmReceiptNumber == dto.Order.ExternalId && p.DisposalType == (int)EDsDisposalType.Return, cancellationToken);
-                if (!checkData)
+                foreach (var dto in dtos.SendDatas)
                 {
-                    var data = new DsPoliceSendChainDealDs()
-                    {
-                        OrderId = dto.Order.Id,
-                        AlarmReceiptNumber = dto.Order.ExternalId,
-                        ReturnName = dto.SendBack.CreatorName,
-                        ReturnUnit = dto.SendBack.CreatorOrgName,
-                        ReturnOpinion = dto.SendBack.Content,
-                        ReturnTime = dto.SendBack.CreationTime,
-                        WarehousingTime = DateTime.Now,
-                        DisposalType = 2
-                    };
-                    var id = await _policeSendChainDealDsRepository.AddAsync(data, cancellationToken);
-                    if (!string.IsNullOrEmpty(id))//如果数据新增成功直接调用业务系统退回接口,反馈退回成功
+                    //处理110退回事件
+                    if (dto.Order.Source == ESource.Police110)
                     {
-                        var dataBack = new OrderSendBackResultDto()
+                        var checkData = await _policeSendChainDealDsRepository.AnyAsync(p => p.AlarmReceiptNumber == dto.Order.ExternalId && p.DisposalType == (int)EDsDisposalType.Return, cancellationToken);
+                        if (!checkData)
                         {
-                            Id = dto.SendBack.Id,
-                            Reason = "",
-                            Result = 1
-                        };
-                        //向业务系统推送消息
-                        await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderReturnFeedback, dataBack, cancellationToken: cancellationToken);
-
-                    }  // await _hotlineClient.OrderSendBackResultAsync(new() { Id = dto.SendBack.Id }, default);
-
-                }
-            }
+                            var data = new DsPoliceSendChainDealDs()
+                            {
+                                OrderId = dto.Order.Id,
+                                AlarmReceiptNumber = dto.Order.ExternalId,
+                                ReturnName = dto.SendBack.CreatorName,
+                                ReturnUnit = dto.SendBack.CreatorOrgName,
+                                ReturnOpinion = dto.SendBack.Content,
+                                ReturnTime = dto.SendBack.CreationTime,
+                                WarehousingTime = DateTime.Now,
+                                DisposalType = 2
+                            };
+                            var id = await _policeSendChainDealDsRepository.AddAsync(data, cancellationToken);
+                            if (!string.IsNullOrEmpty(id))//如果数据新增成功直接调用业务系统退回接口,反馈退回成功
+                            {
+                                var dataBack = new OrderSendBackResultDto()
+                                {
+                                    Id = dto.SendBack.Id,
+                                    Reason = "",
+                                    Result = 1
+                                };
+                                //向业务系统推送消息
+                                await _capPublisher.PublishAsync(DataSharing.Share.Mq.EventNames.SharingOrderReturnFeedback, dataBack, cancellationToken: cancellationToken);
 
-            //处理省上的退回申请
-            if (dto.Order.Source == ESource.ProvinceStraight)
-            {
-                var data = _mapper.Map<GetCaseBackApplyInfo>(dto);
-                data.CliengGuid = dto.SendBack.Id;
+                            }  // await _hotlineClient.OrderSendBackResultAsync(new() { Id = dto.SendBack.Id }, default);
 
-                var tempData = _mapper.Map<DsGetCaseBackApply>(data);
-                tempData.OrderSendBackId = dto.SendBack.Id;
+                        }
+                    }
 
-                var backId = await _getCaseBackApplyRepository.AddAsync(tempData, cancellationToken);
-                if (!string.IsNullOrEmpty(backId))
-                {
-                    #region 处理请求参数
-                    var configProvince = _channelConfigurationManager.GetConfigurationProvince();
-                    var request = new ProvinceRequest<GetCaseBackApplyInfo>(configProvince.ClientId, configProvince.ClientSecret);
-                    request.SetData(data);
-                    var jsonData = request.ToString();
-                    var url = configProvince.XieTong + "get_case_back_apply";
-                    #endregion
+                    //处理省上的退回申请
+                    if (dto.Order.Source == ESource.ProvinceStraight)
+                    {
+                        var data = _mapper.Map<GetCaseBackApplyInfo>(dto);
+                        data.CliengGuid = dto.SendBack.Id;
 
-                    //将待推送数据写入待推送表
-                    await InitPushDataAsync("GetCaseBackApply", "get_case_back_apply", jsonData, pathType: EPathType.XieTong, cancellationToken: cancellationToken);
+                        var tempData = _mapper.Map<DsGetCaseBackApply>(data);
+                        tempData.OrderSendBackId = dto.SendBack.Id;
 
-                    //处理附件
-                    await FileDataAsync(dto.SendBack.FileJson, dto.Order.ProvinceNo, data.CliengGuid, EMaterialType.Process, dto.Order.AreaCode, cancellationToken: cancellationToken);
+                        var backId = await _getCaseBackApplyRepository.AddAsync(tempData, cancellationToken);
+                        if (!string.IsNullOrEmpty(backId))
+                        {
+                            #region 处理请求参数
+                            var configProvince = _channelConfigurationManager.GetConfigurationProvince();
+                            var request = new ProvinceRequest<GetCaseBackApplyInfo>(configProvince.ClientId, configProvince.ClientSecret);
+                            request.SetData(data);
+                            var jsonData = request.ToString();
+                            var url = configProvince.XieTong + "get_case_back_apply";
+                            #endregion
+
+                            //将待推送数据写入待推送表
+                            await InitPushDataAsync("GetCaseBackApply", "get_case_back_apply", jsonData, pathType: EPathType.XieTong, cancellationToken: cancellationToken);
+
+                            //处理附件
+                            await FileDataAsync(dto.SendBack.FileJson, dto.Order.ProvinceNo, data.CliengGuid, EMaterialType.Process, dto.Order.AreaCode, cancellationToken: cancellationToken);
+                        }
+                    }
                 }
             }
         }

+ 151 - 0
src/DataSharing.Host/Controllers/TestController.cs

@@ -0,0 +1,151 @@
+using DataSharing.FwDataExchange;
+using DataSharing.Province;
+using DataSharing.RawData;
+using DataSharing.SendTask;
+using DataSharing.Share.Dtos;
+using DataSharing.Share.Dtos.FwDataExchange;
+using DataSharing.Share.Dtos.HotlineSetting;
+using DataSharing.Share.Dtos.Province;
+using DataSharing.Share.Dtos.Province.XieTong.Receive;
+using DotNetCore.CAP;
+using Fw.Utility.UnifyResponse;
+using Hotline.Api.Sdk;
+using Hotline.Share.Dtos.DataSharing.PusherHotlineDto;
+using Hotline.Share.Dtos.File;
+using Hotline.Share.Dtos.Order;
+using MapsterMapper;
+using MediatR;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System.Threading;
+using XF.Domain.Filters;
+using XF.Domain.Repository;
+
+namespace DataSharing.Host.Controllers
+{
+    public class TestController : BaseController
+    {
+        #region 注入
+        private readonly IMapper _mapper;
+        private readonly IMediator _mediator;
+        private readonly ICapPublisher _capPublisher;
+        private readonly IChannelConfigurationManager _channelConfigurationManager;
+        private readonly IRepository<DsOrder> _dataOrderRepository;
+        private readonly IRepository<DsReceiveProvinceData> _dsReceiveProvinceDataRepository;
+        private readonly IRepository<DsGetCaseMaterialInfo> _getCaseMaterialInfoRepository;
+        private readonly IRepository<DsGetCaseBackApply> _getCaseBackApplyRepository;
+        private readonly IRepository<DsSendCaseInfo> _sendCaseInfoRepository;
+        private readonly XieTongClient _xieTongClient;
+        private readonly HuiJuClient _huiJuClient;
+        private readonly FwClient _fwClient;
+        private readonly IRepository<SendFwErrorData> _sendFwErrorDataRepository;
+        private readonly IHotlineClient _hotlineClient;
+        private readonly IRepository<DsSendTask> _taskRepository;
+        private readonly IRepository<DsSendTaskInfo> _taskInfoRepository;
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="mapper"></param>
+        /// <param name="mediator"></param>
+        /// <param name="capPublisher"></param>
+        /// <param name="channelConfigurationManager"></param>
+        /// <param name="dataOrderRepository"></param>
+        /// <param name="dsReceiveProvinceDataRepository"></param>
+        /// <param name="getCaseMaterialInfoRepository"></param>
+        /// <param name="getCaseBackApplyRepository"></param>
+        /// <param name="sendCaseInfoRepository"></param>
+        /// <param name="xieTongClient"></param>
+        /// <param name="fwClient"></param>
+        /// <param name="sendFwErrorDataRepository"></param>
+        public TestController(IMapper mapper,
+             IMediator mediator,
+             ICapPublisher capPublisher,
+             IChannelConfigurationManager channelConfigurationManager,
+             IRepository<DsOrder> dataOrderRepository,
+             IRepository<DsReceiveProvinceData> dsReceiveProvinceDataRepository,
+             IRepository<DsGetCaseMaterialInfo> getCaseMaterialInfoRepository,
+             IRepository<DsGetCaseBackApply> getCaseBackApplyRepository,
+             IRepository<DsSendCaseInfo> sendCaseInfoRepository,
+             XieTongClient xieTongClient,
+             FwClient fwClient,
+             IRepository<SendFwErrorData> sendFwErrorDataRepository,
+             IHotlineClient hotlineClient,
+             HuiJuClient huiJuClient,
+              IRepository<DsSendTask> taskRepository,
+              IRepository<DsSendTaskInfo> taskInfoRepository)
+        {
+            _mapper = mapper;
+            _mediator = mediator;
+            _capPublisher = capPublisher;
+            _channelConfigurationManager = channelConfigurationManager;
+            _dataOrderRepository = dataOrderRepository;
+            _dsReceiveProvinceDataRepository = dsReceiveProvinceDataRepository;
+            _getCaseMaterialInfoRepository = getCaseMaterialInfoRepository;
+            _getCaseBackApplyRepository = getCaseBackApplyRepository;
+            _sendCaseInfoRepository = sendCaseInfoRepository;
+            _xieTongClient = xieTongClient;
+            _fwClient = fwClient;
+            _sendFwErrorDataRepository = sendFwErrorDataRepository;
+            _hotlineClient = hotlineClient;
+            _huiJuClient = huiJuClient;
+            _taskRepository = taskRepository;
+            _taskInfoRepository = taskInfoRepository;
+        }
+        #endregion
+
+        /// <summary>
+        /// 测试token
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet("gettesttokeninfo")]
+        [AllowAnonymous]
+        public async Task<TokenInfo> GetToken()
+        {
+            //获取附件上传Token
+            // string strToken = await _xieTongClient.GetTokenAsync(HttpContext.RequestAborted);
+            //  var token = await _huiJuClient.GetTokenHJAsync(HttpContext.RequestAborted);
+
+            var peizhi = _channelConfigurationManager.GetConfigurationProvince();
+
+            return await _huiJuClient.GetTokenAsync(peizhi.HuiJu, HttpContext.RequestAborted);
+
+            //  return token;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="type">空查全部,1查成功,2查失败</param>
+        /// <returns></returns>
+        [HttpGet("getdssendtask")]
+        [AllowAnonymous]
+        public async Task<List<DsSendTask>> GetDsSendTask(string? type)
+        {
+
+            return await _taskRepository.Queryable()
+                 .WhereIF(type == "1", p => p.IsSuccess == true)
+                   .WhereIF(type == "2", p => p.IsSuccess == false)
+                .OrderByDescending(p => p.CreationTime).Take(10).ToListAsync();
+        }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="id">空差全部</param>
+        /// <param name="type">空查全部,1查成功,2查失败</param>
+        /// <returns></returns>
+        [HttpGet("getdssendtaskinfo")]
+        [AllowAnonymous]
+        public async Task<List<DsSendTaskInfo>> GetDsSendTaskInfo(string? id, string? type)
+        {
+
+            return await _taskInfoRepository.Queryable()
+                .WhereIF(!string.IsNullOrEmpty(id), p => p.TaskId == id)
+                .WhereIF(type == "1", p => p.IsSuccess == true)
+                   .WhereIF(type == "2", p => p.IsSuccess == false)
+                .OrderByDescending(p => p.CreationTime).Take(10).ToListAsync();
+        }
+    }
+}

+ 22 - 1
src/DataSharing/Province/HuiJuClient.cs

@@ -1,5 +1,6 @@
 using DataSharing.Share.Dtos.Province;
 using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
 using XF.Domain.Cache;
 using XF.Domain.Dependency;
 
@@ -8,10 +9,12 @@ namespace DataSharing.Province
     public class HuiJuClient : ProvinceClient, ISingletonDependency, ISelfDependency
     {
         private readonly IServiceScopeFactory _scopeFactory;
+        private readonly ILogger<HuiJuClient> _logger;
 
-        public HuiJuClient(IServiceScopeFactory scopeFactory) : base(scopeFactory)
+        public HuiJuClient(IServiceScopeFactory scopeFactory, ILogger<HuiJuClient> logger) : base(scopeFactory)
         {
             _scopeFactory = scopeFactory;
+            _logger = logger;
         }
 
         public Task<TResponse?> RequestAsync<TRequest, TResponse>(TRequest request, CancellationToken cancellationToken)
@@ -36,5 +39,23 @@ namespace DataSharing.Province
             var configProvince = channelconfigManager.GetConfigurationProvince();
             return base.RequestAsync<TResponse>(configProvince.HuiJu, configProvince, url, httpMethod, httpInvoker, cacheToken, stringContent, cancellationToken);
         }
+
+        /// <summary>
+        /// 测试获取Token
+        /// </summary>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<TokenInfo> GetTokenHJAsync(CancellationToken cancellationToken)
+        {
+            using var scope = _scopeFactory.CreateScope();
+            var provider = scope.ServiceProvider;
+            var channelconfigManager = provider.GetRequiredService<IChannelConfigurationManager>();
+
+            var configProvince = channelconfigManager.GetConfigurationProvince();
+            _logger.LogWarning("配置信息:" + System.Text.Json.JsonSerializer.Serialize(configProvince));
+            _logger.LogWarning("配置信息--地址" + configProvince.HuiJu);
+            var token = await GetTokenAsync(configProvince.HuiJu, cancellationToken);
+            return token;
+        }
     }
 }

+ 1 - 1
src/DataSharing/Province/ProvinceClient.cs

@@ -109,7 +109,7 @@ namespace DataSharing.Province
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
         /// <exception cref="UserFriendlyException"></exception>
-        private async Task<TokenInfo> GetTokenAsync(string baseAddress, CancellationToken cancellationToken)
+        public async Task<TokenInfo> GetTokenAsync(string baseAddress, CancellationToken cancellationToken)
         {
             using var scope = _scopeFactory.CreateScope();
             var provider = scope.ServiceProvider;