diff --git a/IRaCIS.Core.Application/Helper/FileDocProcess/ExcelExportHelper.cs b/IRaCIS.Core.Application/Helper/FileDocProcess/ExcelExportHelper.cs index acb545038..227258d79 100644 --- a/IRaCIS.Core.Application/Helper/FileDocProcess/ExcelExportHelper.cs +++ b/IRaCIS.Core.Application/Helper/FileDocProcess/ExcelExportHelper.cs @@ -551,7 +551,7 @@ public static class ExcelExportHelper } //创建新的列 - for (int i = originTotalEndIndex; i < originTotalEndIndex + needAddCount; i++) + for (int i = originRemoveEndIndex; i < originRemoveEndIndex + needAddCount; i++) { titelRow.CreateCell(i + 1); @@ -585,6 +585,7 @@ public static class ExcelExportHelper for (int i = dynamicColunmStartIndex; i < dynamicColunmStartIndex + needAddCount; i++) { + var name = dynamicColumnConfig.ColumnIdNameList[i - dynamicColunmStartIndex].Name; titelRow.GetCell(i).SetCellValue(name); @@ -597,8 +598,10 @@ public static class ExcelExportHelper cdicsRow.GetCell(i).SetCellValue(cdicsCode); } } + } + using (var memoryStream2 = new MemoryStream()) { workbook.Write(memoryStream2, true); @@ -621,8 +624,11 @@ public static class ExcelExportHelper IgnoreTemplateParameterMissing = true, }; + //await MiniExcel.SaveAsByTemplateAsync("testmini.xlsx", templateStream.ToArray(), translateData); + await MiniExcel.SaveAsByTemplateAsync(memoryStream, templateStream.ToArray(), translateData, config); + memoryStream.Seek(0, SeekOrigin.Begin); if (dynamicColumnConfig != null) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj index 20e2438b2..216bb3771 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj @@ -53,7 +53,7 @@ - + diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index ae3ff7b54..2259a73af 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1550,6 +1550,7 @@ + 测试邮件 带附件 填充word diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 0faec4dc4..198f4c228 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -1734,7 +1734,7 @@ namespace IRaCIS.Core.Application.Service.Common //.WhereIf(inQuery.SystemLevel == null, t => t.SystemLevel == SysEmailLevel.not_sys) .WhereIf(inQuery.SystemLevel != null, t => t.SystemLevel == inQuery.SystemLevel) .WhereIf(inQuery.IsDistinguishCriteria != null, t => t.IsDistinguishCriteria == inQuery.IsDistinguishCriteria) - .WhereIf(inQuery.CriterionTypeEnum != null, t => t.CriterionTypeEnum == inQuery.CriterionTypeEnum) + .WhereIf(inQuery.CriterionTypeEnum != null, t =>t.CriterionTypeList.Any(c=>c==inQuery.CriterionTypeEnum)) .WhereIf(inQuery.BusinessScenarioEnum != null, t => t.BusinessScenarioEnum == inQuery.BusinessScenarioEnum) .WhereIf(inQuery.IsReturnRequired != null, t => t.IsReturnRequired == inQuery.IsReturnRequired) .WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable) @@ -2855,7 +2855,7 @@ namespace IRaCIS.Core.Application.Service.Common //多表格,增加的一列,就用Guid.Empty 标识 var extralNameList = new List() { new DynamicColumnConfig.ColumItem() { Id = Guid.Empty, Name = _userInfo.IsEn_Us ? "Table Name" : "表格名称" } }; - var tableQuestionNameList = trialConfigTableQuestionList.Select(t => new DynamicColumnConfig.ColumItem() { Id = t.QuestionId, Name = t.TableName + "_" + t.QuestionName }).ToList(); + var tableQuestionNameList = trialConfigTableQuestionList.OrderBy(t=>t.TableName).Select(t => new DynamicColumnConfig.ColumItem() { Id = t.QuestionId, Name = t.TableName + "_" + t.QuestionName }).ToList(); configCoumNameList = fistLeveLNameList.Union(extralNameList).Union(tableQuestionNameList).ToList(); } @@ -3090,8 +3090,8 @@ namespace IRaCIS.Core.Application.Service.Common cloneItem.Group = lessionItem.TableName; cloneItem.TRLINKID = lessionItem.RowId.ToString(); - cloneItem.TRORRES = lessionItem.CDISCCode; - cloneItem.TRTEST = lessionItem.QuestionValue; + cloneItem.TRORRES = lessionItem.QuestionValue; + cloneItem.TRTEST = lessionItem.CDISCCode; cloneItem.TRORRESU = unitText; diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index c532f86ed..60a1de26e 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -116,7 +116,15 @@ namespace IRaCIS.Core.Application.Service } - + /// + /// + /// + /// + /// 为空 代表 正常任务自动发送,为true 代表医学审核手动发送 为false 代表医学审核自动发送 + /// + /// + /// + /// private async Task DealMedicalReviewTasKGenerateAndIsSendAsync(Guid trialId, bool? isHandSend, string pdAnswer, List taskIdList, List minUserIdList) { @@ -298,7 +306,7 @@ namespace IRaCIS.Core.Application.Service { #region 不同标准 不同项目配置 发送邮件的时机 处理具体逻辑 - var answer = "否"; + var answer = _userInfo.IsEn_Us ? "No" : "否"; var isNeedSend = true; var minUserIdList = _trialUserRoleRepository.Where(t => t.UserRole.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId == taskInfo.TrialId).Select(t => t.UserId).ToList(); @@ -310,7 +318,7 @@ namespace IRaCIS.Core.Application.Service if (await _readingTableQuestionAnswerRepository.Where().AnyAsync(x => x.VisitTaskId == visitTaskId && x.Answer == TargetState.Exist.GetEnumInt() && x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State && x.ReadingQuestionTrial.LesionType == LesionType.TargetLesion)) { - answer = "是"; + answer = _userInfo.IsEn_Us ? "Yes" : "是"; } @@ -331,7 +339,7 @@ namespace IRaCIS.Core.Application.Service isNeedSend = await DealMedicalReviewTasKGenerateAndIsSendAsync(taskInfo.TrialId, isHandSend, answer, new List() { visitTaskId }, minUserIdList); - if (answer == "是") + if (answer == "是" || answer == "Yes") { //把另外一个人的任务设置为不加急(如果项目加急是否 subject 加急是否) var urgent = _subjectVisitRepository.Where(t => t.Id == taskInfo.SourceSubjectVisitId).Select(t => new { IsSubjectUrgent = t.Subject.IsUrgent, t.Trial.IsUrgent }).FirstOrDefault(); @@ -630,6 +638,7 @@ namespace IRaCIS.Core.Application.Service var path = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, _userInfo.IsEn_Us ? trialEmailConfig.AttachPath : trialEmailConfig.AttachCNPath); + //获取从word 到 PDF的路径 var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetSubjectEnrollConfirmOrPDEmailPath(_hostEnvironment, Path.GetFileName(path), taskInfo.TrialId, taskInfo.TrialSiteId, taskInfo.SubjectId, true); if (emailStoreMode == EmailStoreSendMode.StoreLocalSend || emailStoreMode == EmailStoreSendMode.OnlyStoreLocalNotSentEmail) @@ -653,10 +662,11 @@ namespace IRaCIS.Core.Application.Service { var wordStoreServerPath = Path.Combine(Path.GetDirectoryName(serverFilePath), Path.GetFileNameWithoutExtension(serverFilePath) + ".docx"); - using (FileStream fileStream = new FileStream(wordStoreServerPath, FileMode.Create, FileAccess.Write)) - { - wordMemoryStream.WriteTo(fileStream); - } + //using (FileStream fileStream = new FileStream(wordStoreServerPath, FileMode.Create, FileAccess.Write)) + //{ + // wordMemoryStream.WriteTo(fileStream); + //} + FileConvertHelper.ConvertWordToPdf(wordStoreServerPath, Path.GetDirectoryName(serverFilePath)); File.Delete(wordStoreServerPath); @@ -696,10 +706,10 @@ namespace IRaCIS.Core.Application.Service { var wordStoreServerPath = Path.Combine(Path.GetDirectoryName(serverFilePath), Path.GetFileNameWithoutExtension(serverFilePath) + ".docx"); - using (FileStream fileStream = new FileStream(wordStoreServerPath, FileMode.Create, FileAccess.Write)) - { - wordMemoryStream.WriteTo(fileStream); - } + //using (FileStream fileStream = new FileStream(wordStoreServerPath, FileMode.Create, FileAccess.Write)) + //{ + // wordMemoryStream.WriteTo(fileStream); + //} FileConvertHelper.ConvertWordToPdf(wordStoreServerPath, Path.GetDirectoryName(serverFilePath)); File.Delete(wordStoreServerPath); @@ -1349,7 +1359,7 @@ namespace IRaCIS.Core.Application.Service await _trialEmailNoticeConfigRepository.SaveChangesAsync(); //处理定时任务 - var taskInfoList = await _trialEmailNoticeConfigRepository.Where(t => t.TrialId== trialId && t.EmailCron != string.Empty && t.IsAutoSend) + var taskInfoList = await _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId && t.EmailCron != string.Empty && t.IsAutoSend) .Select(t => new { t.Id, t.Code, TrialCode = t.Trial.TrialCode, t.EmailCron, t.BusinessScenarioEnum, t.TrialId }) .ToListAsync(); diff --git a/IRaCIS.Core.Domain/Common/EmailNoticeConfig.cs b/IRaCIS.Core.Domain/Common/EmailNoticeConfig.cs index d1963eaa4..eff2f7d7e 100644 --- a/IRaCIS.Core.Domain/Common/EmailNoticeConfig.cs +++ b/IRaCIS.Core.Domain/Common/EmailNoticeConfig.cs @@ -66,9 +66,6 @@ public class EmailNoticeConfig : BaseFullDeleteAuditEntity public SysEmailLevel SystemLevel { get; set; } - [Comment("标准枚举--后续废弃,这里可以选择多个标准")] - public CriterionType? CriterionTypeEnum { get; set; } - [Comment("邮件配置的多个标准")] public List? CriterionTypeList { get; set; } }