From 5a90c99f51f7ae6f46494a4339d870dfda245069 Mon Sep 17 00:00:00 2001 From: xiaolipro <2357729423@qq.com> Date: Mon, 5 Aug 2024 16:08:50 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E8=BD=A8=E8=BF=B9=E5=88=B7?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProvideServices/TrackPullService.cs | 84 +++++++++---------- .../ProvideServices/TrackPushService.cs | 9 +- 2 files changed, 44 insertions(+), 49 deletions(-) diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs index cb7cd5e1..00715aa9 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPullService.cs @@ -1,5 +1,8 @@ using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Logging; using SJZY.Expand.ABP.Core; +using SJZY.Expand.ABP.Core.Logger; +using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.InterfaceRelay.Application.Contracts; using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Application.Contract.Dtos.TrackPull; @@ -78,51 +81,44 @@ public class TrackPullService : ApplicationService /// [AllowAnonymous] [HttpPost("Track/RefreshForTask")] - public bool RefreshForTaskAsync() + public async Task RefreshForTaskAsync() { - Task.Run(async () => - { - var configs = await _trackPullCacheService.GetAllPullConfigsAsync(); - - foreach (var config in configs) - { - var redisKey = _trackPullCacheService.TrackPullKey(config.SubSystemId, config.ServiceProviderId); - if (await RedisHelper.Client.ExistsAsync(redisKey)) - { - continue; - } - - var page = 1; - var orders = await _provideQueries.FindOrderWithServiceProviderAsync(config.ServiceProviderId, page); - while (orders.Any()) - { - var serviceProviderCode = orders.FirstOrDefault()?.ServiceProviderCode; - var serviceProviderName = orders.FirstOrDefault()?.ServiceProviderName; - - foreach (var group in orders.GroupBy(x => - new { x.SubSystemId, x.OrderType })) - { - var data = group.Select(x => new - { - x.OrderNo - }).ToList(); - - var attach = Base64Helper.SerializeObject(new TrackRefreshAttach(config.ServiceProviderId, - serviceProviderName!, - group.Key.SubSystemId, group.Key.OrderType)); - // 批量获取轨迹 - await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync( - InterfaceRelayConst.GetTrackInterfaceCode, serviceProviderCode, data, - GlobalConst.TrackRefreshSubscribe, attach); - } - - orders = await _provideQueries.FindOrderWithServiceProviderAsync(config.ServiceProviderId, ++page); - } - - await RedisHelper.Client.SetExAsync(redisKey, config.PullInterval * 60, orders.Count); - } - }); - + var configs = await _trackPullCacheService.GetAllPullConfigsAsync(); + var tasks = configs.Select(RefreshForConfigAsync).ToArray(); + await Task.WhenAll(tasks); return true; } + + private async Task RefreshForConfigAsync(TrackPullConfigDto config) + { + var redisKey = _trackPullCacheService.TrackPullKey(config.SubSystemId, config.ServiceProviderId); + if (await RedisHelper.Client.ExistsAsync(redisKey)) + { + return; + } + + var page = 1; + var orders = await _provideQueries.FindOrderWithServiceProviderAsync(config.ServiceProviderId, page, 2000); + while (orders.Any()) + { + var serviceProviderCode = orders.FirstOrDefault()?.ServiceProviderCode; + var serviceProviderName = orders.FirstOrDefault()?.ServiceProviderName; + + foreach (var group in orders.GroupBy(x => new { x.SubSystemId, x.OrderType })) + { + var data = group.Select(x => new { x.OrderNo }).ToList(); + var attach = Base64Helper.SerializeObject(new TrackRefreshAttach(config.ServiceProviderId, serviceProviderName!, group.Key.SubSystemId, group.Key.OrderType)); + var res = await _httpClientProxy.Service.BatchForwardThenPushToQueueAsync(InterfaceRelayConst.GetTrackInterfaceCode, serviceProviderCode, data, GlobalConst.TrackRefreshSubscribe, attach); + + if (res.Code != InterfaceRelayConst.SuccessCode) + { + LogHelper.Error($"刷新轨迹失败:{res.ToJson()}"); + } + } + + orders = await _provideQueries.FindOrderWithServiceProviderAsync(config.ServiceProviderId, ++page); + } + + await RedisHelper.Client.SetExAsync(redisKey, config.PullInterval * 60, orders.Count); + } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs index fe78e2dd..96c471ff 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs @@ -32,7 +32,6 @@ public class TrackPushService : ApplicationService _capPublisher = capPublisher; _trackPushRecordsRepository = trackPushRecordsRepository; _requestCurrentUserService = requestCurrentUserService; - } /// @@ -92,7 +91,7 @@ public class TrackPushService : ApplicationService [HttpPost("Track/PushWarnForTask")] public async Task PushWarnForTaskAsync() { - int total = 0, pageSize = 1000,waitTime = 1000; + int total = 0, pageSize = 1000, waitTime = 1000; var dateTimes = Enumerable.Range(1, 12).Select(val => DateTime.Now.AddHours(-val)).ToList(); foreach (var dateTime in dateTimes) @@ -101,11 +100,11 @@ public class TrackPushService : ApplicationService var pageindex = 1; do { - rows = await _orderRepository.PushWarnOrdersAsync(pageSize,pageindex,dateTime); - total+=rows; + rows = await _orderRepository.PushWarnOrdersAsync(pageSize, pageindex, dateTime); + total += rows; pageindex++; await Task.Delay(waitTime); - }while (rows!= pageSize); + } while (rows != pageSize); } return $"本次预警扫描了:{total}个订单";