From 5bd9cd680ba317e11b43c87ddfb6c082ab7d2c18 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 8 Mar 2023 18:03:49 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E7=94=9F=E6=88=90=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Allocation/VisitTaskHelpeService.cs | 3 ++- .../Service/Allocation/VisitTaskService.cs | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index 04de411af..da6a10362 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -1034,8 +1034,9 @@ namespace IRaCIS.Core.Application.Service TaskAllocationState = TaskAllocationState.Allocated, AllocateTime = DateTime.Now, DoctorUserId = singleTask.DoctorUserId, + SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget), - TrialReadingCriterionId = latestTask.TrialReadingCriterionId, + TrialReadingCriterionId = latestTask.TrialReadingCriterionId, IsNeedClinicalDataSign = latestTask.IsNeedClinicalDataSign, IsClinicalDataSign = latestTask.IsClinicalDataSign diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 7e5d58c6f..0c2afd653 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -20,6 +20,7 @@ using System.Linq.Dynamic.Core; using System.Linq; using DocumentFormat.OpenXml.Bibliography; using Org.BouncyCastle.Crypto; +using IRaCIS.Core.Domain.Share.Reading; namespace IRaCIS.Core.Application.Service.Allocation { @@ -185,7 +186,7 @@ namespace IRaCIS.Core.Application.Service.Allocation DoctorUserId = doctorArm.DoctorUserId, TaskAllocationState = TaskAllocationState.Allocated, - SuggesteFinishedTime = DateTime.Now.AddDays(7), + SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget), }); } } @@ -322,7 +323,7 @@ namespace IRaCIS.Core.Application.Service.Allocation visitTask.DoctorUserId = assignSubjectTaskToDoctorCommand.DoctorUserId; visitTask.TaskAllocationState = TaskAllocationState.Allocated; - visitTask.SuggesteFinishedTime = DateTime.Now.AddDays(7); + visitTask.SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget); @@ -588,7 +589,7 @@ namespace IRaCIS.Core.Application.Service.Allocation task.AllocateTime = DateTime.Now; task.TaskAllocationState = TaskAllocationState.Allocated; - task.SuggesteFinishedTime = task.IsUrgent ? DateTime.Now.AddDays(2) : DateTime.Now.AddDays(7); + task.SuggesteFinishedTime = /*task.IsUrgent ? DateTime.Now.AddDays(2) : DateTime.Now.AddDays(7)*/ GetSuggessFinishTime(true, UrgentType.NotUrget); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == task.SourceSubjectVisitId, u => new SubjectVisit() { ReadingStatus = ReadingStatusEnum.ImageReading }); @@ -1381,6 +1382,14 @@ namespace IRaCIS.Core.Application.Service.Allocation } + public DateTime GetSuggessFinishTime(bool isInOrder, UrgentType urgentType) + { + + var datetime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day + 7, 22, 0, 0); + + return datetime; + } + /// /// 确认重阅与否 1同意 2 拒绝 /// @@ -1744,7 +1753,7 @@ namespace IRaCIS.Core.Application.Service.Allocation newTask.DoctorUserId = origenalTask.DoctorUserId; newTask.TaskAllocationState = TaskAllocationState.Allocated; newTask.AllocateTime = DateTime.Now; - newTask.SuggesteFinishedTime = DateTime.Now.AddDays(7); + newTask.SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget); //拷贝后续表单 if (visitTaskReReadingAppply.IsCopyFollowForms && origenalTask.VisitTaskNum != influenceTask.VisitTaskNum) @@ -1856,7 +1865,7 @@ namespace IRaCIS.Core.Application.Service.Allocation newTask.DoctorUserId = origenalTask.DoctorUserId; newTask.TaskAllocationState = TaskAllocationState.Allocated; newTask.AllocateTime = DateTime.Now; - newTask.SuggesteFinishedTime = DateTime.Now.AddDays(7); + newTask.SuggesteFinishedTime = GetSuggessFinishTime(true, UrgentType.NotUrget); //裁判任务 需要进行特殊处理 在重阅逻辑里面处理 From a489350d219c7f2c4a20620cdc46b6f1fc0ee28b Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 8 Mar 2023 18:11:45 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E8=87=B4?= =?UTF-8?q?=E6=80=A7=E5=88=86=E6=9E=90=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Allocation/TaskConsistentRuleService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs index 92b3816c6..4ed8bb466 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs @@ -87,7 +87,7 @@ namespace IRaCIS.Core.Application.Service .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum) .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false)) .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName)) - .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode)) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => (t.Subject.Code.Contains(queryVisitTask.SubjectCode) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(queryVisitTask.SubjectCode) && t.IsAnalysisCreate)) .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate) .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1)) .ProjectTo(_mapper.ConfigurationProvider); From aad722603afdd625207c5ce1690babd872704c69 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 9 Mar 2023 10:51:32 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E5=92=8C=E9=98=85=E7=89=87=E8=B7=9F=E8=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Helper/FileStoreHelper.cs | 19 +++++++++--- .../IRaCIS.Core.Application.csproj | 1 + .../Service/Allocation/VisitTaskService.cs | 6 ++-- .../Document/TrialEmailNoticeConfigService.cs | 25 ++++++++++++--- .../TrialSiteUser/DTO/TrialConfigDTO.cs | 31 +------------------ 5 files changed, 41 insertions(+), 41 deletions(-) diff --git a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs index 782681014..a34b57971 100644 --- a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs +++ b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs @@ -12,7 +12,7 @@ public static class FileStoreHelper //处理文件名 压缩包,或者目录类的 会带上相对路径 - public static (string TrustedFileNameForFileStorage, string RealName) GetStoreFileName(string fileName) + public static (string TrustedFileNameForFileStorage, string RealName) GetStoreFileName(string fileName,bool isChangeToPdfFormat=false) { //带目录层级,需要后端处理前端的路径 @@ -34,7 +34,18 @@ public static class FileStoreHelper fileName = fileName.Replace($"{matchResult.Value}", ""); } - var trustedFileNameForFileStorage = Guid.NewGuid().ToString() + fileName; + + var trustedFileNameForFileStorage = string.Empty; + + if (isChangeToPdfFormat==false) + { + trustedFileNameForFileStorage= Guid.NewGuid().ToString() + fileName; + + } + else + { + trustedFileNameForFileStorage=Guid.NewGuid().ToString() + Path.GetFileNameWithoutExtension(fileName) + ".pdf"; + } return (trustedFileNameForFileStorage, fileName); } @@ -420,7 +431,7 @@ public static class FileStoreHelper // 获取 入组确认 PD 进展发送邮件Word|PDF 存放路径 - public static (string PhysicalPath, string RelativePath, string FileRealName) GetSubjectEnrollConfirmOrPDEmailPath(IWebHostEnvironment _hostEnvironment, string fileName, Guid trialId, Guid siteId, Guid subjectId) + public static (string PhysicalPath, string RelativePath, string FileRealName) GetSubjectEnrollConfirmOrPDEmailPath(IWebHostEnvironment _hostEnvironment, string fileName, Guid trialId, Guid siteId, Guid subjectId,bool isChangeToPdfFormat=false) { var rootPath = FileStoreHelper.GetIRaCISRootDataFolder(_hostEnvironment); @@ -428,7 +439,7 @@ public static class FileStoreHelper if (!Directory.Exists(uploadFolderPath)) Directory.CreateDirectory(uploadFolderPath); - var (trustedFileNameForFileStorage, fileRealName) = FileStoreHelper.GetStoreFileName(fileName); + var (trustedFileNameForFileStorage, fileRealName) = FileStoreHelper.GetStoreFileName(fileName, isChangeToPdfFormat); var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{siteId}/{subjectId}/{trustedFileNameForFileStorage}"; diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj index 386d4600c..656726dc8 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj @@ -74,6 +74,7 @@ + true diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 0c2afd653..0e3cc3315 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -713,7 +713,7 @@ namespace IRaCIS.Core.Application.Service.Allocation /// /// [HttpPost] - public async Task/*, object?)*/> GetReadingTaskList(VisitTaskQuery queryVisitTask) + public async Task<(PageOutput, object?)> GetReadingTaskList(VisitTaskQuery queryVisitTask) { var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false) //.Where(t => t.IsAnalysisCreate == false && t.DoctorUserId != null) @@ -743,9 +743,9 @@ namespace IRaCIS.Core.Application.Service.Allocation var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray); - //var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); + var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); - return pageList; + return (pageList,trialTaskConfig); } diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index 2e5b6be67..39963c397 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -20,6 +20,7 @@ using IRaCIS.Core.Application.Service.Reading.Dto; using IRaCIS.Core.Domain.Share.Common; using System.IO; using System.Linq; +using Spire.Doc; namespace IRaCIS.Core.Application.Service { @@ -770,6 +771,7 @@ namespace IRaCIS.Core.Application.Service var phyPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, sendFileRelativePath); + //先预先生成了邮件,发送预先生成的邮件 sendEmailConfig.EmailAttachMentConfigList.Add(new EmailAttachMentConfig() { @@ -797,11 +799,21 @@ namespace IRaCIS.Core.Application.Service }; - var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetSubjectEnrollConfirmOrPDEmailPath(_hostEnvironment, Path.GetFileName(path), taskInfo.TrialId, taskInfo.SiteId, taskInfo.SubjectId); + var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetSubjectEnrollConfirmOrPDEmailPath(_hostEnvironment, Path.GetFileName(path), taskInfo.TrialId, taskInfo.SiteId, taskInfo.SubjectId,true); if (emailStoreMode == EmailStoreSendMode.StoreLocalSend || emailStoreMode == EmailStoreSendMode.OnlyStoreLocalNotSentEmail) { - MiniSoftware.MiniWord.SaveAsByTemplate(serverFilePath, path, value); + + MemoryStream wordMemoryStream = new MemoryStream(); + + Document document = new Document(); + + MiniSoftware.MiniWord.SaveAsByTemplate(wordMemoryStream, path, value); + + document.LoadFromStream(wordMemoryStream,FileFormat.Docx); + + document.SaveToFile(serverFilePath, FileFormat.PDF); + } //手动生成发送的邮件内容,但是并不发送 @@ -819,16 +831,21 @@ namespace IRaCIS.Core.Application.Service MemoryStream memoryStream = new MemoryStream(); + MemoryStream pdfMemoryStream = new MemoryStream(); + MiniSoftware.MiniWord.SaveAsByTemplate(memoryStream, path, value); + Document document = new Document(); - memoryStream.Seek(0, SeekOrigin.Begin); + document.LoadFromStream(memoryStream, FileFormat.Docx); + document.SaveToStream(pdfMemoryStream, FileFormat.PDF); + pdfMemoryStream.Seek(0, SeekOrigin.Begin); sendEmailConfig.EmailAttachMentConfigList.Add(new EmailAttachMentConfig() { FileName = $"{taskInfo.SubjectCode}_{emailConfig.FileName}", - FileStream = memoryStream + FileStream = pdfMemoryStream }); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs index db323d43f..2b2232c89 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs @@ -220,36 +220,7 @@ namespace IRaCIS.Core.Application.Contracts public class TrialTaskConfigView : TrialTaskConfig { - public ReadingTaskViewMethod ReadingTaskViewEnum { get; set; } - - public bool IsReadingTaskViewInOrder { get; set; } = true; - - //public ReadingMethod ReadingType { get; set; } - - /// - /// 阅片是否显示受试者信息 - /// - public bool IsReadingShowSubjectInfo { get; set; } - - /// - /// 阅片是否显示既往结果 - /// - public bool IsReadingShowPreviousResults { get; set; } - - public ReadingTool ReadingTool { get; set; } - - - - - /// - /// QC流程 0 不审,1 单审,2双审 - /// - public TrialQCProcess QCProcessEnum { get; set; } = TrialQCProcess.DoubleAudit; - - /// - /// 影像一致性核查 - /// - public bool IsImageConsistencyVerification { get; set; } = true; + } public class TrialReadingTaskViewConfig From b62560a4c7560a5e510352a4c84680fdcdeb4084 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 9 Mar 2023 10:58:03 +0800 Subject: [PATCH 4/6] x --- .../TrialSiteUser/DTO/TrialConfigDTO.cs | 31 ++++++++++++++++++- .../Service/TrialSiteUser/_MapConfig.cs | 1 + 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs index 2b2232c89..db323d43f 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs @@ -220,7 +220,36 @@ namespace IRaCIS.Core.Application.Contracts public class TrialTaskConfigView : TrialTaskConfig { - + public ReadingTaskViewMethod ReadingTaskViewEnum { get; set; } + + public bool IsReadingTaskViewInOrder { get; set; } = true; + + //public ReadingMethod ReadingType { get; set; } + + /// + /// 阅片是否显示受试者信息 + /// + public bool IsReadingShowSubjectInfo { get; set; } + + /// + /// 阅片是否显示既往结果 + /// + public bool IsReadingShowPreviousResults { get; set; } + + public ReadingTool ReadingTool { get; set; } + + + + + /// + /// QC流程 0 不审,1 单审,2双审 + /// + public TrialQCProcess QCProcessEnum { get; set; } = TrialQCProcess.DoubleAudit; + + /// + /// 影像一致性核查 + /// + public bool IsImageConsistencyVerification { get; set; } = true; } public class TrialReadingTaskViewConfig diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs index 95673ffb2..39b2b58b5 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs @@ -183,6 +183,7 @@ namespace IRaCIS.Core.Application.Service CreateMap(); CreateMap(); + CreateMap (); CreateMap(); From 30829a2d626b12257ab001956ec6985f953ceffb Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 9 Mar 2023 11:06:11 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs index 39b2b58b5..845ce2f0f 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs @@ -183,7 +183,7 @@ namespace IRaCIS.Core.Application.Service CreateMap(); CreateMap(); - CreateMap (); + CreateMap ().ForMember(t=>t.TrialId,u=>u.MapFrom(c=>c.Id)); CreateMap(); From ed3d18b168e6c87d73877c75fa0808dbe3c0aaa5 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 9 Mar 2023 11:13:33 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BApdf=20=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Document/TrialEmailNoticeConfigService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index 39963c397..3b7b7b78a 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -775,7 +775,7 @@ namespace IRaCIS.Core.Application.Service //先预先生成了邮件,发送预先生成的邮件 sendEmailConfig.EmailAttachMentConfigList.Add(new EmailAttachMentConfig() { - FileName = $"{taskInfo.SubjectCode}_{emailConfig.FileName}", + FileName = $"{taskInfo.SubjectCode}_{Path.GetFileNameWithoutExtension(emailConfig.FileName)}.pdf", FileStream = File.OpenRead(phyPath), }); @@ -843,7 +843,7 @@ namespace IRaCIS.Core.Application.Service sendEmailConfig.EmailAttachMentConfigList.Add(new EmailAttachMentConfig() { - FileName = $"{taskInfo.SubjectCode}_{emailConfig.FileName}", + FileName = $"{taskInfo.SubjectCode}_{Path.GetFileNameWithoutExtension(emailConfig.FileName)}.pdf", FileStream = pdfMemoryStream });