修改非dicom

Uat_Study
hang 2022-04-21 17:36:36 +08:00
parent 943c44892a
commit 746d0ebc58
3 changed files with 69 additions and 59 deletions

View File

@ -61,7 +61,7 @@ namespace IRaCIS.Core.Application.Contracts
public DateTime ImageDate { get; set; } public DateTime ImageDate { get; set; }
public string Description { get; set; } = string.Empty; public string Description { get; set; } = string.Empty;
public int? Code { get; set; } public int Code { get; set; }
} }

View File

@ -62,22 +62,28 @@ namespace IRaCIS.Core.Application.Contracts
[TypeFilter(typeof(TrialResourceFilter))] [TypeFilter(typeof(TrialResourceFilter))]
public async Task<IResponseOutput<NoneDicomStudyAddReturnDto>> AddOrUpdateNoneDicomStudy(NoneDicomStudyAddOrEdit addOrEditNoneDicomStudy) public async Task<IResponseOutput<NoneDicomStudyAddReturnDto>> AddOrUpdateNoneDicomStudy(NoneDicomStudyAddOrEdit addOrEditNoneDicomStudy)
{ {
NoneDicomStudy optEntity = null;
using (await _mutex.LockAsync()) using (await _mutex.LockAsync())
{ {
if (addOrEditNoneDicomStudy.Id == Guid.Empty|| addOrEditNoneDicomStudy.Id==null) if (addOrEditNoneDicomStudy.Id == Guid.Empty || addOrEditNoneDicomStudy.Id == null)
{ {
var code = _noneDicomStudyRepository.Where(t => t.TrialId == addOrEditNoneDicomStudy.TrialId).MaxOrDefault(x=>x.Code); //默认会是0
var code = await _noneDicomStudyRepository.Where(t => t.TrialId == addOrEditNoneDicomStudy.TrialId).Select(x => x.Code).DefaultIfEmpty().MaxAsync();
addOrEditNoneDicomStudy.Code = code + 1; addOrEditNoneDicomStudy.Code = code + 1;
optEntity = await _noneDicomStudyRepository.InsertFromDTOAsync(addOrEditNoneDicomStudy);
optEntity.StudyCode = "NST" + optEntity.Code.ToString("D5");
}
else
{
optEntity = await _noneDicomStudyRepository.UpdateFromDTOAsync(addOrEditNoneDicomStudy);
} }
addOrEditNoneDicomStudy.Code = addOrEditNoneDicomStudy.Code ?? 0; await _noneDicomStudyRepository.SaveChangesAsync();
}
var entity = await _noneDicomStudyRepository.InsertOrUpdateAsync(addOrEditNoneDicomStudy, false);
entity.StudyCode = "NST" + entity.Code.ToString("D5");
await _repository.SaveChangesAsync();
var svTime = _repository.Where<SubjectVisit>(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId).Select(t => new var svTime = _repository.Where<SubjectVisit>(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId).Select(t => new
{ {
@ -103,13 +109,10 @@ namespace IRaCIS.Core.Application.Contracts
NoneDicomStudyAddReturnDto noneDicom = new NoneDicomStudyAddReturnDto() NoneDicomStudyAddReturnDto noneDicom = new NoneDicomStudyAddReturnDto()
{ {
StudyCode = entity.StudyCode, StudyCode = optEntity.StudyCode,
Id = entity.Id Id = optEntity.Id
}; };
return ResponseOutput.Ok(noneDicom); return ResponseOutput.Ok(noneDicom);
}
} }
@ -162,7 +165,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{noneDicomStudyFileId:guid}")] [HttpDelete("{noneDicomStudyFileId:guid}")]
public async Task<IResponseOutput> DeleteNoneDicomStudyFile(Guid noneDicomStudyFileId) public async Task<IResponseOutput> DeleteNoneDicomStudyFile(Guid noneDicomStudyFileId)
{ {
var subjectVisitId = await _noneDicomStudyFileRepository.Where(t=>t.Id== noneDicomStudyFileId).Select(t => t.NoneDicomStudy.SubjectVisitId).FirstOrDefaultAsync(); var subjectVisitId = await _noneDicomStudyFileRepository.Where(t => t.Id == noneDicomStudyFileId).Select(t => t.NoneDicomStudy.SubjectVisitId).FirstOrDefaultAsync();
var success = await _noneDicomStudyFileRepository.BatchDeleteAsync(t => t.Id == noneDicomStudyFileId); var success = await _noneDicomStudyFileRepository.BatchDeleteAsync(t => t.Id == noneDicomStudyFileId);
@ -217,17 +220,17 @@ namespace IRaCIS.Core.Application.Contracts
/// 上传非Dicom 文件 支持压缩包 /// 上传非Dicom 文件 支持压缩包
/// </summary> /// </summary>
[HttpPost] [HttpPost]
public async Task<IResponseOutput> NewUploadNoneDicomFile([FromForm]UploadNoneDicomFileDto fileDto) public async Task<IResponseOutput> NewUploadNoneDicomFile([FromForm] UploadNoneDicomFileDto fileDto)
{ {
var file = this._httpContext.HttpContext?.Request.Form; var file = this._httpContext.HttpContext?.Request.Form;
var result= await UploadNoneDicomFile(file, fileDto.subjectVisitId, fileDto.noneDicomStudyId); var result = await UploadNoneDicomFile(file, fileDto.subjectVisitId, fileDto.noneDicomStudyId);
if (result.IsSuccess) if (result.IsSuccess)
{ {
var data = JsonConvert.DeserializeObject<DataInspectionAddDTO>(fileDto.AuditInfo); var data = JsonConvert.DeserializeObject<DataInspectionAddDTO>(fileDto.AuditInfo);
data.GeneralId = fileDto.noneDicomStudyId; data.GeneralId = fileDto.noneDicomStudyId;
await _inspectionService.AddInspectionRecordAsync(data); await _inspectionService.AddInspectionRecordAsync(data);
var subvisit =await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == fileDto.subjectVisitId); var subvisit = await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == fileDto.subjectVisitId);
List<DataInspection> datas = new List<DataInspection>(); List<DataInspection> datas = new List<DataInspection>();
datas.Add(new DataInspection() datas.Add(new DataInspection()
@ -318,11 +321,14 @@ namespace IRaCIS.Core.Application.Contracts
await _repository.AddAsync(new StudyMonitor() await _repository.AddAsync(new StudyMonitor()
{ {
FileCount = formCollection.Files.Count, FileCount = formCollection.Files.Count,
FileSize = formCollection.Files.Sum(t => t.Length), IsDicom = false, FileSize = formCollection.Files.Sum(t => t.Length),
IsDicom = false,
IsDicomReUpload = false, IsDicomReUpload = false,
StudyId = noneDicomStudyId, StudyId = noneDicomStudyId,
UploadStartTime = startTime, UploadFinishedTime = DateTime.Now, IP = _userInfo.IP, UploadStartTime = startTime,
UploadFinishedTime = DateTime.Now,
IP = _userInfo.IP,
//TotalMillisecondsInterval = (DateTime.Now - startTime).TotalMilliseconds, //TotalMillisecondsInterval = (DateTime.Now - startTime).TotalMilliseconds,
TrialId = sv.TrialId, TrialId = sv.TrialId,
SiteId = sv.SiteId, SiteId = sv.SiteId,

View File

@ -1,10 +1,15 @@
using System; using System;
using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking;
using Microsoft.EntityFrameworkCore.ValueGeneration; using Microsoft.EntityFrameworkCore.ValueGeneration;
namespace IRaCIS.Core.Infra.EFCore.ValueGenerator namespace IRaCIS.Core.Infra.EFCore.ValueGenerator
{ {
/// <summary>
/// 上传监控 时间间隔存储 需要按照这个字段进行排序
/// </summary>
public class UploadTotalMillisecondsInterval : ValueGenerator<int> public class UploadTotalMillisecondsInterval : ValueGenerator<int>
{ {
@ -13,7 +18,6 @@ namespace IRaCIS.Core.Infra.EFCore.ValueGenerator
//modelBuilder.Entity<StudyMonitor>().Property(e => e.TestInterval).ValueGeneratedOnAddOrUpdate().HasDefaultValueSql("datediff(MS,UploadStartTime,UploadFinishedTime)"); //modelBuilder.Entity<StudyMonitor>().Property(e => e.TestInterval).ValueGeneratedOnAddOrUpdate().HasDefaultValueSql("datediff(MS,UploadStartTime,UploadFinishedTime)");
public override int Next(EntityEntry entry) public override int Next(EntityEntry entry)
{ {
if (entry.Entity is StudyMonitor entity) if (entry.Entity is StudyMonitor entity)