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}个订单";