diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs index 175e7fbe2..32d63d863 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs @@ -1,4 +1,6 @@ -using IRaCIS.Core.Application.Service.Reading.Dto; +using IRaCIS.Core.Application.Helper; +using IRaCIS.Core.Application.Service.Reading.Dto; +using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infra.EFCore.Common; using MassTransit; @@ -6,56 +8,38 @@ using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using MiniExcelLibs; using System.Data; +using System.IO; using System.Text; namespace IRaCIS.Core.Application.Service.ReadingCalculate { - public class GeneralCalculateService : BaseService, IGeneralCalculateService + public class GeneralCalculateService(IRepository _readingTableQuestionAnswerRepository, + IRepository _visitTaskRepository, + IRepository _readingQuestionCriterionTrialRepository, + ILogger _logger, + IRepository _readingTableQuestionTrialRepository, + IRepository _readingTableAnswerRowInfoRepository, + IRepository _readingQuestionTrialRepository, + IRepository _subjectVisitRepository, + IRepository _tumorAssessmentRepository, + IRepository _readingTaskQuestionAnswerRepository, + IRepository _inspectionFileRepository, + IOSSService oSSService + ) : BaseService, IGeneralCalculateService { - private readonly IRepository _readingTableQuestionAnswerRepository; - private readonly IRepository _visitTaskRepository; - private readonly IRepository _readingQuestionCriterionTrialRepository; - private readonly ILogger _logger; - private readonly IRepository _readingTableQuestionTrialRepository; - private readonly IRepository _readingTableAnswerRowInfoRepository; - private readonly IRepository _readingQuestionTrialRepository; - private readonly IRepository _subjectVisitRepository; - private readonly IRepository _tumorAssessmentRepository; - private readonly IRepository _readingTaskQuestionAnswerRepository; - - public GeneralCalculateService( - IRepository readingTableQuestionAnswerRepository, - IRepository visitTaskRepository, - IRepository readingQuestionCriterionTrialRepository, - ILogger logger, - IRepository readingTableQuestionTrialRepository, - IRepository readingTableAnswerRowInfoRepository, - IRepository readingQuestionTrialRepository, - IRepository subjectVisitRepository, - IRepository tumorAssessmentRepository, - IRepository readingTaskQuestionAnswerRepository - ) - { - this._readingTableQuestionAnswerRepository = readingTableQuestionAnswerRepository; - this._visitTaskRepository = visitTaskRepository; - this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository; - this._logger = logger; - this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository; - this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; - this._readingQuestionTrialRepository = readingQuestionTrialRepository; - this._subjectVisitRepository = subjectVisitRepository; - this._tumorAssessmentRepository = tumorAssessmentRepository; - this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; - } + /// /// 从上传文件中获取Datatable /// /// - public async Task GetDataTableFromUpload(IFormFile file) + public async Task GetDataTableFromUpload(IFormFile file,string pathCode,Guid trialId) { + + + DataTable result = new DataTable(); var fileFolder = "Upload\\"; if (!Directory.Exists(fileFolder)) @@ -66,11 +50,15 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + Path.GetExtension(file.FileName); var filePath = Path.Combine(fileFolder, fileName); + + var fileStream = new MemoryStream(); try { using (var stream = new FileStream(filePath, FileMode.Create)) { file.CopyTo(stream); + await stream.CopyToAsync(fileStream); + stream.Position = 0; result = stream.QueryAsDataTable(useHeaderRow: false); } @@ -80,6 +68,21 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate File.Delete(filePath); } + + try + { + var ossRelativePath = await oSSService.UploadToOSSAsync(fileStream, pathCode, file.FileName); + await _inspectionFileRepository.AddAsync(new InspectionFile() { FileName = file.FileName, RelativePath = ossRelativePath, TrialId = trialId }); + } + catch (Exception) + { + + + } + + + + File.Delete(filePath); // 创建一个要删除的行集合 diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs index ae7a83bab..936a28ddd 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/IVUSCalculateService.cs @@ -603,9 +603,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var request = httpContext.HttpContext!.Request; var file = request.Form.Files[0]; Guid visitTaskId = Guid.Parse(request.Form["VisitTaskId"]); - var dataTable =await _generalCalculateService.GetDataTableFromUpload(file); + var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); + var dataTable =await _generalCalculateService.GetDataTableFromUpload(file, "IVUSTemplate", taskinfo.TrialId); - var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x=>x.TrialReadingCriterion).FirstNotNullAsync(); + var values = new TemplateData() { diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IGeneralCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IGeneralCalculateService.cs index f097ccd95..4444c111a 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IGeneralCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/Interface/IGeneralCalculateService.cs @@ -44,6 +44,6 @@ namespace IRaCIS.Core.Application.Service /// /// /// - Task GetDataTableFromUpload(IFormFile file); + Task GetDataTableFromUpload(IFormFile file, string pathCode, Guid trialId); } } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs index e1d09cd9b..63644827a 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/OCTCalculateService.cs @@ -470,9 +470,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var request = httpContext.HttpContext!.Request; var file = request.Form.Files[0]; Guid visitTaskId = Guid.Parse(request.Form["VisitTaskId"]); - var dataTable = await _generalCalculateService.GetDataTableFromUpload(file); - var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); + var dataTable = await _generalCalculateService.GetDataTableFromUpload(file, "OCTFCT", taskinfo.TrialId); + + var values = new TemplateData() { @@ -646,9 +647,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var request = httpContext.HttpContext!.Request; var file = request.Form.Files[0]; Guid visitTaskId = Guid.Parse(request.Form["VisitTaskId"]); - var dataTable = await _generalCalculateService.GetDataTableFromUpload(file); - var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x => x.Subject).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); + var dataTable = await _generalCalculateService.GetDataTableFromUpload(file, "OCTLipidAngle", taskinfo.TrialId); + + var values = new TemplateData() {