维护数据结束提交
continuous-integration/drone/push Build is passing Details

Test_IRC_Net8
hang 2025-09-10 15:43:04 +08:00
parent 270941431d
commit 49a36b8214
1 changed files with 105 additions and 0 deletions

View File

@ -728,6 +728,10 @@ namespace IRaCIS.Core.Application.Service
rows = rows.Where(t => !string.IsNullOrEmpty(t.InstanceId.ToString())).ToList(); rows = rows.Where(t => !string.IsNullOrEmpty(t.InstanceId.ToString())).ToList();
int total = rows.Count();
int processed = 0;
double lastPercent = 0;
var outputErrorFile = Path.Combine(@"D:\dicomWrite", $"{Guid.NewGuid()}_dicom_info_error.txt"); var outputErrorFile = Path.Combine(@"D:\dicomWrite", $"{Guid.NewGuid()}_dicom_info_error.txt");
foreach (var item in rows) foreach (var item in rows)
@ -740,6 +744,7 @@ namespace IRaCIS.Core.Application.Service
t => t.Id == item.InstanceId, t => t.Id == item.InstanceId,
t => new DicomInstance t => new DicomInstance
{ {
IsEncapsulated = item.IsEncapsulated, IsEncapsulated = item.IsEncapsulated,
TransferSytaxUID = item.TransferSyntaxUID, TransferSytaxUID = item.TransferSyntaxUID,
MediaStorageSOPClassUID = item.MediaStorageSOPClassUID, MediaStorageSOPClassUID = item.MediaStorageSOPClassUID,
@ -755,7 +760,18 @@ namespace IRaCIS.Core.Application.Service
await File.AppendAllTextAsync(outputErrorFile, errorMsg + Environment.NewLine); await File.AppendAllTextAsync(outputErrorFile, errorMsg + Environment.NewLine);
} }
finally
{
processed++;
double percent = processed * 100.0 / total;
// 每提升 5% 或完成时输出
if (percent - lastPercent >= 2.0 || processed == total)
{
lastPercent = percent;
Console.WriteLine($"{DateTime.Now} 进度: {processed}/{total} ({percent:F2}%)");
}
}
} }
@ -782,6 +798,95 @@ namespace IRaCIS.Core.Application.Service
}
[AllowAnonymous]
public async Task<IResponseOutput> ReadExcelImageDataInstanceIsReading([FromServices] IRepository<DicomInstance> _instanceRepository,
[FromServices] IRepository<DicomSeries> _seriesRepository,
[FromServices] IRepository<DicomStudy> _studyRepository)
{
var trialId = Guid.Parse("01000000-ac13-0242-6397-08dcd2d2a091");
var rows = await MiniExcel.QueryAsync<DicomSOPInstanceInfo>(@"C:\Users\hang\Desktop\instanceReading.xlsx");
rows = rows.Where(t => !string.IsNullOrEmpty(t.SopInstanceUid) && t.SopInstanceUid.Length > 15).ToList();
var outputErrorFile = Path.Combine(@"D:\dicomWrite", $"{Guid.NewGuid()}_dicom_info_error.txt");
//foreach (var batch in rows.Chunk(20))
//{
// var sopUids = batch.Select(x => x.SopInstanceUid).ToList();
// try
// {
// await _instanceRepository.BatchUpdateNoTrackingAsync(
// t => sopUids.Contains(t.SopInstanceUid) && t.TrialId == trialId,
// t => new DicomInstance
// {
// IsReading = true,
// IsDeleted = false
// }, false);
// await _seriesRepository.BatchUpdateNoTrackingAsync(
// t => t.DicomInstanceList.Any(t => sopUids.Contains(t.SopInstanceUid)) && t.TrialId == trialId,
// t => new DicomSeries
// {
// IsReading = true,
// IsDeleted = false
// }, false);
// }
// catch (Exception ex)
// {
// var errorMsg = $"{string.Join(",", sopUids)} {DateTime.Now} 批量更新失败: {ex.Message}";
// Console.WriteLine(errorMsg);
// await File.AppendAllTextAsync(outputErrorFile, errorMsg + Environment.NewLine);
// }
//}
//找到该项目的检查,实时统计数量,并且回更数据库
var studyList = _studyRepository.Where(t => t.TrialId == trialId && (t.SeriesCount != t.SeriesList.Count() || t.InstanceCount != t.InstanceList.Count()))
.Select(t => new
{
t.Id,
t.StudyCode,
DBSeriesCount = t.SeriesCount,
DBInstanceCount = t.InstanceCount,
ActrualSeriesCount = t.SeriesList.Count(),
ActrualInstanceCount = t.InstanceList.Count(),
}).ToList();
var seriesList = _seriesRepository.Where(t => t.TrialId == trialId && t.InstanceCount != t.DicomInstanceList.Count())
.Select(t => new
{
SeriesId = t.Id,
t.DicomStudy.StudyCode,
DBInstanceCount = t.InstanceCount,
ActrualInstanceCount = t.DicomInstanceList.Count(),
}).ToList();
await File.AppendAllTextAsync(outputErrorFile, studyList.ToJsonStr() + Environment.NewLine);
await File.AppendAllTextAsync(outputErrorFile, seriesList.ToJsonStr() + Environment.NewLine);
return ResponseOutput.Ok();
}
public class DicomSOPInstanceInfo
{
public string SopInstanceUid { get; set; }
} }
#endregion #endregion