维护数据结束提交
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();
|
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
|
||||||
|
|
Loading…
Reference in New Issue