修改一版
parent
1cc7afa7d0
commit
2ad979bee9
|
@ -456,7 +456,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
public async Task<IResponseOutput> deleteNoneDicomStudyFile(DataInspectionDto<IDDto> opt)
|
||||
{
|
||||
var fun = _noneDicomStudyService.DeleteNoneDicomStudyFile;
|
||||
opt.AuditInfo.GeneralId = opt.OptCommand.Id;
|
||||
//opt.AuditInfo.GeneralId = opt.OptCommand.Id;
|
||||
return await _inspectionService.Enforcement(opt.OptCommand.Id, opt.AuditInfo, opt.SignInfo, fun);
|
||||
}
|
||||
|
||||
|
|
|
@ -77,10 +77,12 @@
|
|||
<PackageReference Include="MailKit" Version="3.2.0" />
|
||||
<PackageReference Include="MediatR" Version="10.0.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="6.0.3" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.4" />
|
||||
<PackageReference Include="MimeKit" Version="3.2.0" />
|
||||
<PackageReference Include="MiniExcel" Version="1.24.3" />
|
||||
<PackageReference Include="My.Extensions.Localization.Json" Version="3.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="Nito.AsyncEx" Version="5.1.2" />
|
||||
<PackageReference Include="Panda.DynamicWebApi" Version="1.2.0" />
|
||||
<PackageReference Include="Quartz" Version="3.4.0" />
|
||||
<PackageReference Include="SharpCompress" Version="0.31.0" />
|
||||
|
|
|
@ -196,7 +196,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
/// 日期类型
|
||||
/// </summary>
|
||||
|
||||
public string DateType { get; set; }
|
||||
public string DateType { get; set; }=string.Empty;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ using IRaCIS.Core.Infra.EFCore;
|
|||
using Newtonsoft.Json;
|
||||
using IRaCIS.Core.Application.Service.Inspection.Interface;
|
||||
using IRaCIS.Core.Application.Service.Inspection.DTO;
|
||||
using Nito.AsyncEx;
|
||||
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
|
@ -28,6 +29,10 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
private readonly IInspectionService _inspectionService;
|
||||
private readonly IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository;
|
||||
|
||||
|
||||
private readonly AsyncLock _mutex = new AsyncLock();
|
||||
|
||||
|
||||
public NoneDicomStudyService(IRepository<NoneDicomStudy> noneDicomStudyRepository,
|
||||
IHttpContextAccessor httpContext,
|
||||
IWebHostEnvironment hostEnvironment,
|
||||
|
@ -57,44 +62,50 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
[TypeFilter(typeof(TrialResourceFilter))]
|
||||
public async Task<IResponseOutput<NoneDicomStudyAddReturnDto>> AddOrUpdateNoneDicomStudy(NoneDicomStudyAddOrEdit addOrEditNoneDicomStudy)
|
||||
{
|
||||
var entity = await _noneDicomStudyRepository.InsertOrUpdateAsync(addOrEditNoneDicomStudy, false);
|
||||
|
||||
if (_repository.Entry(entity).State == Microsoft.EntityFrameworkCore.EntityState.Added)
|
||||
using (await _mutex.LockAsync())
|
||||
{
|
||||
entity.Code = _noneDicomStudyRepository.Where(t => t.TrialId == addOrEditNoneDicomStudy.TrialId).Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
||||
|
||||
var entity = await _noneDicomStudyRepository.InsertOrUpdateAsync(addOrEditNoneDicomStudy, false);
|
||||
|
||||
if (_repository.Entry(entity).State == Microsoft.EntityFrameworkCore.EntityState.Added)
|
||||
{
|
||||
entity.Code = _noneDicomStudyRepository.Where(t => t.TrialId == addOrEditNoneDicomStudy.TrialId).Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
||||
}
|
||||
|
||||
entity.StudyCode = "NST" + entity.Code.ToString("D5");
|
||||
await _repository.SaveChangesAsync();
|
||||
|
||||
var svTime = _repository.Where<SubjectVisit>(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId).Select(t => new
|
||||
{
|
||||
DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
|
||||
DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
|
||||
NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
|
||||
NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
|
||||
}).FirstOrDefault().IfNullThrowException();
|
||||
|
||||
var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime, addOrEditNoneDicomStudy.ImageDate };
|
||||
var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime, addOrEditNoneDicomStudy.ImageDate };
|
||||
|
||||
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId, u => new SubjectVisit()
|
||||
{
|
||||
VisitExecuted = VisitExecutedEnum.Executed,
|
||||
|
||||
EarliestScanDate = minArray.Min(),
|
||||
|
||||
LatestScanDate = maxArray.Max()
|
||||
});
|
||||
|
||||
await _repository.SaveChangesAsync();
|
||||
|
||||
NoneDicomStudyAddReturnDto noneDicom = new NoneDicomStudyAddReturnDto()
|
||||
{
|
||||
StudyCode = entity.StudyCode,
|
||||
Id = entity.Id
|
||||
};
|
||||
return ResponseOutput.Ok(noneDicom);
|
||||
}
|
||||
|
||||
entity.StudyCode = "NST" + entity.Code.ToString("D5");
|
||||
await _repository.SaveChangesAsync();
|
||||
|
||||
var svTime = _repository.Where<SubjectVisit>(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId).Select(t => new
|
||||
{
|
||||
DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
|
||||
DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
|
||||
NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
|
||||
NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
|
||||
}).FirstOrDefault().IfNullThrowException();
|
||||
|
||||
var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime, addOrEditNoneDicomStudy.ImageDate };
|
||||
var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime, addOrEditNoneDicomStudy.ImageDate };
|
||||
|
||||
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId, u => new SubjectVisit()
|
||||
{
|
||||
VisitExecuted = VisitExecutedEnum.Executed,
|
||||
|
||||
EarliestScanDate = minArray.Min(),
|
||||
|
||||
LatestScanDate = maxArray.Max()
|
||||
});
|
||||
|
||||
await _repository.SaveChangesAsync();
|
||||
|
||||
NoneDicomStudyAddReturnDto noneDicom = new NoneDicomStudyAddReturnDto()
|
||||
{
|
||||
StudyCode= entity.StudyCode,
|
||||
Id= entity.Id
|
||||
};
|
||||
return ResponseOutput.Ok(noneDicom);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue