修改推送频率
continuous-integration/drone/push Build is running Details

Test_HIR_Net8
hang 2025-12-17 15:34:24 +08:00
parent d2e3e4de86
commit 2addbe30dd
2 changed files with 43 additions and 13 deletions

View File

@ -1,4 +1,5 @@
using AutoMapper; using AutoMapper;
using DocumentFormat.OpenXml.ExtendedProperties;
using ExcelDataReader; using ExcelDataReader;
using FellowOakDicom; using FellowOakDicom;
using FellowOakDicom.Imaging; using FellowOakDicom.Imaging;
@ -904,15 +905,45 @@ namespace IRaCIS.Core.API.Controllers
var downloadInfo = (SubejctVisitDownload)rusult.OtherData; var downloadInfo = (SubejctVisitDownload)rusult.OtherData;
long receivedsize = 0; long receivedSize = 0;
long receivedCount = 0; long receivedCount = 0;
long totalSize = downloadInfo.ImageSize; long totalSize = downloadInfo.ImageSize;
long toTalCount = downloadInfo.ImageCount; long totalCount = downloadInfo.ImageCount;
var abortToken = HttpContext.RequestAborted; var abortToken = HttpContext.RequestAborted;
// -------- SignalR 节流参数 --------
var notifyInterval = TimeSpan.FromSeconds(1);
var lastNotify = DateTime.UtcNow; var lastNotify = DateTime.UtcNow;
async Task NotifyProgressAsync(bool force = false)
{
if (!force && DateTime.UtcNow - lastNotify < notifyInterval)
return;
lastNotify = DateTime.UtcNow;
var progress = new
{
CountPercent = totalCount > 0
? Math.Round(receivedCount * 100m / totalCount, 2).ToString() + "%"
: "0%",
SizePercent = totalSize > 0
? Math.Round(receivedSize * 100m / totalSize, 2).ToString() + "%"
: "0%"
};
// 不阻塞下载流程
_ = _downLoadHub.Clients
.User(_userInfo.IdentityUserId.ToString())
.ReceivProgressAsync(
inCommand.CurrentNoticeId,
progress
);
}
Response.ContentType = "application/zip"; Response.ContentType = "application/zip";
Response.Headers["Content-Disposition"] = $"attachment; filename=Image_{ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId)}.zip"; Response.Headers["Content-Disposition"] = $"attachment; filename=Image_{ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId)}.zip";
Response.Headers["Cache-Control"] = "no-store"; Response.Headers["Cache-Control"] = "no-store";
@ -948,7 +979,7 @@ namespace IRaCIS.Core.API.Controllers
foreach (var instance in series.InstanceList) foreach (var instance in series.InstanceList)
{ {
//当前完成大小 //当前完成大小
receivedsize = receivedsize + instance.FileSize ?? 0; receivedSize = receivedSize + instance.FileSize ?? 0;
receivedCount++; receivedCount++;
abortToken.ThrowIfCancellationRequested(); abortToken.ThrowIfCancellationRequested();
@ -992,19 +1023,14 @@ namespace IRaCIS.Core.API.Controllers
//await source.CopyToAsync(entryStream, 32 * 1024, abortToken); //await source.CopyToAsync(entryStream, 32 * 1024, abortToken);
await _downLoadHub.Clients.User(_userInfo.IdentityUserId.ToString()).ReceivProgressAsync(inCommand.CurrentNoticeId, await NotifyProgressAsync();
(new
{
CountPercent = downloadInfo.ImageCount > 0 ? Math.Round(receivedCount * 100m / downloadInfo.ImageCount, 2) : 0m,
SizePercent = totalSize > 0 ? Math.Round(receivedsize * 100m / totalSize, 2) : 0m
}
));
} }
} }
} }
} }
// 正常完成 // 正常完成
await NotifyProgressAsync(true);
await _patientService.DownloadImageSuccess(downloadInfo.Id); await _patientService.DownloadImageSuccess(downloadInfo.Id);
} }
catch (OperationCanceledException) catch (OperationCanceledException)
@ -1028,6 +1054,10 @@ namespace IRaCIS.Core.API.Controllers
} }
} }
} }

View File

@ -70,8 +70,8 @@ namespace IRaCIS.Core.API
public class DownloadHub : Hub<IDownloadClient> public class DownloadHub : Hub<IDownloadClient>
{ {
public ILogger<UploadHub> _logger { get; set; } public ILogger<DownloadHub> _logger { get; set; }
public DownloadHub(ILogger<UploadHub> logger) public DownloadHub(ILogger<DownloadHub> logger)
{ {
_logger = logger; _logger = logger;
} }