维护数据结束提交
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
270941431d
commit
49a36b8214
|
@ -728,6 +728,10 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
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");
|
||||
|
||||
foreach (var item in rows)
|
||||
|
@ -740,6 +744,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
t => t.Id == item.InstanceId,
|
||||
t => new DicomInstance
|
||||
{
|
||||
|
||||
IsEncapsulated = item.IsEncapsulated,
|
||||
TransferSytaxUID = item.TransferSyntaxUID,
|
||||
MediaStorageSOPClassUID = item.MediaStorageSOPClassUID,
|
||||
|
@ -755,7 +760,18 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue