From 14bc9f44299cf7a0d0d26e0964f140418479127e Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 25 Aug 2023 17:16:09 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E5=8F=91=E9=80=81=E6=9E=9A=E4=B8=BE--026?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BackGroundJob/IRaCISCHangfireJob.cs | 64 ++++++++++--------- .../Helper/HangfireJobHelper.cs | 37 +++++++++-- .../Service/Document/EmailSendService.cs | 17 +++-- .../Document/TrialEmailNoticeConfigService.cs | 18 ++++++ 4 files changed, 95 insertions(+), 41 deletions(-) diff --git a/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs b/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs index b71798c43..278631030 100644 --- a/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs +++ b/IRaCIS.Core.Application/BackGroundJob/IRaCISCHangfireJob.cs @@ -1,5 +1,6 @@ using EasyCaching.Core; using Hangfire; +using Hangfire.Storage; using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Application.Service; using IRaCIS.Core.Domain.Share; @@ -59,7 +60,7 @@ namespace IRaCIS.Application.Services.BackGroundJob await InitInternationlizationDataAndWatchJsonFileAsync(); //创建邮件定时任务 - //await InitSysAndTrialCronJobAsync(); + await InitSysAndTrialCronJobAsync(); _logger.LogInformation("项目启动 hangfire 任务初始化 执行结束"); @@ -155,42 +156,45 @@ namespace IRaCIS.Application.Services.BackGroundJob public async Task InitSysAndTrialCronJobAsync() { - var taskInfoList = await _trialEmailNoticeConfigRepository.Where(t => t.Trial.TrialStatusStr == StaticData.TrialState.TrialOngoing && t.EmailCron != string.Empty) + //var deleteJobIdList = await _trialEmailNoticeConfigRepository.Where(t => t.Trial.TrialStatusStr != StaticData.TrialState.TrialOngoing && t.EmailCron != string.Empty && t.IsAutoSend) + // .Select(t => t.TrialId + "_" + t.Id) + // .ToListAsync(); + + //foreach (var jobId in deleteJobIdList) + //{ + // HangfireJobHelper.RemoveCronJob(jobId); + //} + + + var taskInfoList = await _trialEmailNoticeConfigRepository.Where(t => t.Trial.TrialStatusStr == StaticData.TrialState.TrialOngoing && t.EmailCron != string.Empty && t.IsAutoSend) .Select(t => new { t.Id, t.Code, t.EmailCron, t.BusinessScenarioEnum, t.TrialId }) .ToListAsync(); - foreach (var task in taskInfoList) { //利用主键作为任务Id - var jobId = task.Id.ToString(); - switch (task.BusinessScenarioEnum) - { - - case EmailBusinessScenario.QCTask: - HangfireJobHelper.AddOrUpdateCronJob(jobId, t => t.SendTrialImageQCTaskEmailAsync(task.TrialId), task.EmailCron); - break; - case EmailBusinessScenario.QCQuestion: - HangfireJobHelper.AddOrUpdateCronJob(jobId, t => t.SendTrialQCQuestionEmailAsync(task.TrialId), task.EmailCron); - break; - case EmailBusinessScenario.ImageQuestion: - HangfireJobHelper.AddOrUpdateCronJob(jobId, t => t.SendTrialImageQuestionAsync(task.TrialId), task.EmailCron); - break; - - //case CommonDocumentBusinessScenario.EnrollConfirmed: - // AddOrUpdateCronJob(jobId, task.Code, t => t.SendClinicalDataQuestionAsync(), task.EmailCron); - // break; - //case CommonDocumentBusinessScenario.PDConfirmed: - // break; - //case CommonDocumentBusinessScenario.ClinicalDataQuestion: - // break; - default: - break; - } + var jobId = $"{task.TrialId}_{task.Id}"; + HangfireJobHelper.AddOrUpdateTrialCronJob(jobId, task.TrialId, task.BusinessScenarioEnum, task.EmailCron); } + + var addOrUpdateJobIdList = taskInfoList.Select(t => $"{t.TrialId}_{t.Id}").ToList(); + + var list = JobStorage.Current.GetConnection().GetRecurringJobs().ToList(); + + //项目定时任务都在default 队列 + //var dbJobIdList = JobStorage.Current.GetConnection().GetRecurringJobs().Where(t => t.Queue == "default").Select(t => t.Id).ToList(); + + //var deleteList= dbJobIdList.Except(addOrUpdateJobIdList).ToList(); + + // foreach (var jobId in deleteList) + // { + // HangfireJobHelper.RemoveCronJob(jobId); + // } + + } - - } -} \ No newline at end of file + + +} diff --git a/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs b/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs index a489d3b3a..69eaf410d 100644 --- a/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs +++ b/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs @@ -1,6 +1,7 @@ using Hangfire; using IRaCIS.Core.Application.Service; using IRaCIS.Core.Domain.Share; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using NPOI.SS.Formula.Functions; using System; using System.Collections; @@ -15,7 +16,7 @@ namespace IRaCIS.Core.Application.Helper public static class HangfireJobHelper { - + //public static void AddOrUpdateCronJob(string jobId, string queueName, Expression methodCall, string cron) //{ @@ -25,7 +26,7 @@ namespace IRaCIS.Core.Application.Helper //添加 或者更新定时任务 Id 要唯一标识一个定义任务 - public static void AddOrUpdateCronJob(string jobId, Expression> methodCall, string cron, string queueName="default") + public static void AddOrUpdateCronJob(string jobId, Expression> methodCall, string cron, string queueName = "default") { RecurringJob.AddOrUpdate(jobId, queueName, methodCall, cron); } @@ -38,8 +39,11 @@ namespace IRaCIS.Core.Application.Helper public static void RemoveCronJob(string jobId) { RecurringJob.RemoveIfExists(jobId); + } + + public static void ImmediatelyOnceOnlyJob(Expression methodCall) { BackgroundJob.Enqueue("immediately_once", methodCall); @@ -50,9 +54,9 @@ namespace IRaCIS.Core.Application.Helper BackgroundJob.Enqueue("immediately_once", methodCall); } - public static void NotImmediatelyOnceOnlyJob(Expression methodCall,TimeSpan timeSpan) + public static void NotImmediatelyOnceOnlyJob(Expression methodCall, TimeSpan timeSpan) { - BackgroundJob.Schedule("not_immediately_once", methodCall,timeSpan); + BackgroundJob.Schedule("not_immediately_once", methodCall, timeSpan); } public static void NotImmediatelyOnceOnlyJob(Expression> methodCall, TimeSpan timeSpan) @@ -60,6 +64,29 @@ namespace IRaCIS.Core.Application.Helper BackgroundJob.Schedule("not_immediately_once", methodCall, timeSpan); } - + + public static void AddOrUpdateTrialCronJob (string jobId, Guid trialId, EmailBusinessScenario businessScenario, string emailCron) + { + + switch (businessScenario) + { + + case EmailBusinessScenario.QCTask: + HangfireJobHelper.AddOrUpdateCronJob(jobId, t => t.SendTrialImageQCTaskEmailAsync(trialId), emailCron); + break; + case EmailBusinessScenario.QCQuestion: + HangfireJobHelper.AddOrUpdateCronJob(jobId, t => t.SendTrialQCQuestionEmailAsync(trialId), emailCron); + break; + case EmailBusinessScenario.ImageQuestion: + HangfireJobHelper.AddOrUpdateCronJob(jobId, t => t.SendTrialImageQuestionAsync(trialId), emailCron); + break; + + default: + break; + } + + } } } + + diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index 3e013bdbb..6d369ca01 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -84,7 +84,8 @@ namespace IRaCIS.Core.Application.Service Func topicAndHtmlFunc = trialEmailConfig => { var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode); - var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr); + var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, + taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr); return (topicStr, htmlBodyStr); }; @@ -116,7 +117,7 @@ namespace IRaCIS.Core.Application.Service .Select(t => new { //待领取量 - ToBeClaimedCount = t.SubjectVisitList.Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != userId && u.ReviewAuditUserId == null))).Count(), + ToBeClaimedCount = t.SubjectVisitList.Where(u => u.SubmitState==SubmitStateEnum.Submitted && u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != userId && u.ReviewAuditUserId == null))).Count(), //待审核通过,统计从已领取到QC提交之间的 已领取 待审核 审核中 (审核完成 领取人就会清理 所以只用查询当前领取人是自己的就好了) ToBeReviewedCount = t.SubjectVisitList.Where(u => u.CurrentActionUserId == userId).Count() @@ -132,7 +133,8 @@ namespace IRaCIS.Core.Application.Service Func topicAndHtmlFunc = trialEmailConfig => { var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, trialInfo.ResearchProgramNo); - var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, user.FullName, DateTime.Now, sendStat.ToBeClaimedCount, sendStat.ToBeReviewedCount); + var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, + user.FullName, DateTime.Now, sendStat.ToBeClaimedCount, sendStat.ToBeReviewedCount, _SystemEmailSendConfig.CurrentValue.SiteUrl); return (topicStr, htmlBodyStr); }; @@ -180,7 +182,8 @@ namespace IRaCIS.Core.Application.Service Func topicAndHtmlFunc = trialEmailConfig => { var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, trialInfo.ResearchProgramNo); - var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, user.FullName, DateTime.Now, sendStat.ToBeDealedCount, sendStat.ReUploadTobeDealedCount); + var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, + user.FullName, DateTime.Now, sendStat.ToBeDealedCount, sendStat.ReUploadTobeDealedCount, _SystemEmailSendConfig.CurrentValue.SiteUrl); return (topicStr, htmlBodyStr); }; @@ -225,7 +228,8 @@ namespace IRaCIS.Core.Application.Service Func topicAndHtmlFunc = trialEmailConfig => { var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, trialInfo.ResearchProgramNo); - var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, user.FullName, DateTime.Now, sendStat.ToBeDealedCount); + var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, + user.FullName, DateTime.Now, sendStat.ToBeDealedCount, _SystemEmailSendConfig.CurrentValue.SiteUrl); return (topicStr, htmlBodyStr); }; @@ -244,7 +248,8 @@ namespace IRaCIS.Core.Application.Service Func topicAndHtmlFunc = trialEmailConfig => { var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, info.ResearchProgramNo,info.Code,info.VisitName); - var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, info.ResearchProgramNo, info.Code, info.VisitName,_userInfo.UserName,content, _SystemEmailSendConfig.CurrentValue.SiteUrl); + var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, + info.ResearchProgramNo, info.Code, info.VisitName,_userInfo.UserName,content, _SystemEmailSendConfig.CurrentValue.SiteUrl); return (topicStr, htmlBodyStr); }; diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index 2c0dd7b91..cbf6299b7 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -1599,6 +1599,7 @@ namespace IRaCIS.Core.Application.Service item.SMTPServerAddress = emailConfig.EmailSMTPServerAddress; item.FromName=emailConfig.EmailFromName; item.SMTPServerPort = emailConfig.EmailSMTPServerPort; + item.IsAutoSend = false; item.TrialReadingCriterionId = list.FirstOrDefault(t => t.CriterionType == item.CriterionTypeEnum)?.TrialReadingCriterionId; @@ -1707,6 +1708,18 @@ namespace IRaCIS.Core.Application.Service await _trialEmailNoticeConfigRepository.SaveChangesAsync(); + var jobId = $"{addOrEditTrialEmailNoticeConfig.TrialId}_{id}"; + + if (addOrEditTrialEmailNoticeConfig.IsAutoSend) + { + HangfireJobHelper.AddOrUpdateTrialCronJob(jobId, addOrEditTrialEmailNoticeConfig.TrialId, addOrEditTrialEmailNoticeConfig.BusinessScenarioEnum, addOrEditTrialEmailNoticeConfig.EmailCron); + + } + else + { + HangfireJobHelper.RemoveCronJob(jobId); + } + return ResponseOutput.Ok(); } @@ -1817,6 +1830,11 @@ namespace IRaCIS.Core.Application.Service [HttpDelete("{trialEmailNoticeConfigId:guid}")] public async Task DeleteTrialEmailNoticeConfig(Guid trialEmailNoticeConfigId) { + var trialId=await _trialEmailNoticeConfigRepository.Where(t=>t.Id==trialEmailNoticeConfigId).Select(t=>t.TrialId).FirstOrDefaultAsync(); + var jobId = $"{trialId}_{trialEmailNoticeConfigId}"; + + HangfireJobHelper.RemoveCronJob(jobId); + var success = await _trialEmailNoticeConfigRepository.DeleteFromQueryAsync(t => t.Id == trialEmailNoticeConfigId, true); return ResponseOutput.Ok(); From 7c5b1b6fd16fa74e4184477f1f07af1fe74727be Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 25 Aug 2023 17:26:58 +0800 Subject: [PATCH 2/9] x --- IRaCIS.Core.API/Controllers/UploadDownLoadController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs index 82f8f7e24..cca839939 100644 --- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs +++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs @@ -988,7 +988,7 @@ namespace IRaCIS.Core.API.Controllers throw new BusinessValidationFailedException("请用提供格式的模板excel上传需要处理的数据"); } - (serverFilePath, relativePath) = FileStoreHelper.GetTrialSiteSurveyFilePath(_hostEnvironment, fileName, trialId); + (serverFilePath, relativePath) = FileStoreHelper.GetOtherFileUploadPath(_hostEnvironment, StaticData.Folder.TempFile, fileName); return serverFilePath; }); @@ -1238,7 +1238,7 @@ namespace IRaCIS.Core.API.Controllers break; default: - result = await SingleFileUploadAsync((fileName) => FileStoreHelper.GetOtherFileUploadPath(_hostEnvironment, StaticData.Folder.CommonFile, fileName)); + result = await SingleFileUploadAsync((fileName) => FileStoreHelper.GetOtherFileUploadPath(_hostEnvironment, StaticData.Folder.TempFile, fileName)); break; } From 14b57769d38363bcd54e82dcd3ecd30f76a34f0c Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 25 Aug 2023 17:27:20 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=B8=AD=E5=BF=83=E8=B0=83=E7=A0=94--026?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Helper/FileStoreHelper.cs | 2 +- IRaCIS.Core.Domain/_Config/_StaticData.cs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs index e9a3b1e9c..a46c252bb 100644 --- a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs +++ b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs @@ -41,7 +41,7 @@ public static class FileStoreHelper if (isChangeToPdfFormat==false) { - trustedFileNameForFileStorage= fileName+ Guid.NewGuid().ToString() ; + trustedFileNameForFileStorage= Path.GetFileNameWithoutExtension(fileName) + Guid.NewGuid().ToString()+Path.GetExtension(fileName) ; } else diff --git a/IRaCIS.Core.Domain/_Config/_StaticData.cs b/IRaCIS.Core.Domain/_Config/_StaticData.cs index 4d48f99d9..964bc42c5 100644 --- a/IRaCIS.Core.Domain/_Config/_StaticData.cs +++ b/IRaCIS.Core.Domain/_Config/_StaticData.cs @@ -93,6 +93,9 @@ public static class StaticData public static readonly string EmailTemplate = "EmailTemplate"; public static readonly string CommonFile = "CommonFile"; + + public static readonly string TempFile = "TempFile"; + public static readonly string CheckFile = "CheckFile"; public static readonly string SiteUserSurveryFile = "SiteUserSurveryFile"; From 033ac555f221e54e2a1d038055726e91f029de6d Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 25 Aug 2023 18:05:01 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9--027?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Service/Document/EmailSendService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index 6d369ca01..d4819b91a 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -215,7 +215,7 @@ namespace IRaCIS.Core.Application.Service { //质疑待处理 ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) - .Where(u => u.CreateUserId == userId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count(), + .Where(u => u.DialogList.Any(t=>t.CreateUserId== userId) && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count(), }); From 451ffec65bcf68ca190fdff901fadc1a49a6349a Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 25 Aug 2023 18:36:27 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9--028?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Document/EmailSendService.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index d4819b91a..d5fa11a2f 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -163,6 +163,7 @@ namespace IRaCIS.Core.Application.Service //过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id var query = _trialRepository + .Where(t => t.Id == trialId) .Select(t => new { ReUploadTobeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) @@ -210,12 +211,13 @@ namespace IRaCIS.Core.Application.Service { var userId = user.UserId; //过滤项目 并且 将 _userInfo.Id 换位 当前发送邮件的Id - var query = _trialRepository + var query = _trialRepository.Where(t=>t.Id==trialId) + .Select(t => new { //质疑待处理 - ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) - .Where(u => u.DialogList.Any(t=>t.CreateUserId== userId) && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count(), + ToBeDealedCount = t.SubjectVisitList.Where(t=>t.TrialSite.CRCUserList.Any(t=>t.UserId==userId)).SelectMany(c => c.QCChallengeList) + .Where(u => u.IsClosed == false && (u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC || u.LatestReplyUserId==null)).Count(), }); From f24f60cdef2fa5a8f9f119f0403e3fce2d211c52 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 25 Aug 2023 18:46:58 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Allocation/VisitTaskService.cs | 4 ++-- IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs | 5 +++-- IRaCIS.Core.Application/Service/Document/EmailSendService.cs | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 26bb5acdf..e9b2a9c7b 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -338,7 +338,7 @@ namespace IRaCIS.Core.Application.Service.Allocation await subjectVisitClinicalDialogRepository.AddAsync(new SubjectVisitClinicalDialog() { SubjectVisitId = (Guid)taskInfo.SourceSubjectVisitId, Content = content }, true); - BackgroundJob.Enqueue( () => emailSendService.SendClinicalDataQuestionAsync(visiTaskId, content).Wait()); + BackgroundJob.Enqueue(() => emailSendService.SendClinicalDataQuestionAsync(visiTaskId, content)); return ResponseOutput.Ok(); } @@ -346,7 +346,7 @@ namespace IRaCIS.Core.Application.Service.Allocation public async Task> GetClinicalDataDialog(Guid visiTaskId, [FromServices] IRepository _subjectVisitClinicalDialogRepository) { - var subjectVisitId= await _visitTaskRepository.Where(t => t.Id == visiTaskId).Select(t=>t.SourceSubjectVisitId).FirstOrDefaultAsync(); + var subjectVisitId = await _visitTaskRepository.Where(t => t.Id == visiTaskId).Select(t => t.SourceSubjectVisitId).FirstOrDefaultAsync(); var list = _subjectVisitClinicalDialogRepository.Where(t => t.SubjectVisitId == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).OrderByDescending(t => t.CreateTime).ToList(); return list; diff --git a/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs b/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs index 87f49d9ca..49a81e3f2 100644 --- a/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs @@ -38,10 +38,11 @@ namespace IRaCIS.Core.Application.Service .ForMember(o => o.OncologyTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Oncology && t.TrialReadingCriterionId == trialReadingCriterionId && t.TaskState == TaskState.Effect).Select(t => t.VisitTaskNum).Distinct().Count())) .ForMember(o => o.JudgeTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Judge && t.TrialReadingCriterionId == trialReadingCriterionId && t.TaskState == TaskState.Effect).Select(t => t.VisitTaskNum).Distinct().Count())); - - + + + CreateMap(); CreateMap(); diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index d5fa11a2f..f7c55337f 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -85,7 +85,7 @@ namespace IRaCIS.Core.Application.Service { var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode); var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, - taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr); + _userInfo.UserName, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr); return (topicStr, htmlBodyStr); }; From 749c123229702bff18b88d0be5c63a3247fb08c7 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 25 Aug 2023 18:50:05 +0800 Subject: [PATCH 7/9] x --- .../Service/Allocation/DTO/VisitTaskViewModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index a7416ade2..d013c1460 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -461,7 +461,7 @@ namespace IRaCIS.Core.Application.ViewModel { public Guid Id { get; set; } public DateTime CreateTime { get; set; } - public Guid Content { get; set; } + public string Content { get; set; } } From 995605a2b6e55aee1438bc3645739c322fe9805e Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 25 Aug 2023 18:59:11 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Document/EmailSendService.cs | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index f7c55337f..84aa154f7 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -75,21 +75,39 @@ namespace IRaCIS.Core.Application.Service t.Subject.TrialSite.TrialSiteCode, SubjectCode = t.Subject.Code, t.Trial.Sponsor.SponsorName, + t.SourceSubjectVisit.VisitName, t.TrialId, }).FirstNotNullAsync(); var resultStr = _userInfo.IsEn_Us ? (result == true ? "Yes" : "No") : (result == true ? "是" : "否"); - Func topicAndHtmlFunc = trialEmailConfig => + if (isEnrollment == true) { - var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode); - var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, - _userInfo.UserName, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr); - return (topicStr, htmlBodyStr); - }; + Func topicAndHtmlFunc = trialEmailConfig => + { + var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode); + var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, + _userInfo.UserName, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr); + return (topicStr, htmlBodyStr); + }; - await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc); + await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc); + } + else + { + Func topicAndHtmlFunc = trialEmailConfig => + { + var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, taskInfo.VisitName); + var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, + _userInfo.UserName, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, taskInfo.VisitName, resultStr); + return (topicStr, htmlBodyStr); + }; + + await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc); + } + + } /// From 89d92baf5674f23de063d1e51cb585a99e1b386c Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 25 Aug 2023 19:21:43 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9--028?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Allocation/VisitTaskService.cs | 2 +- IRaCIS.Core.Application/Service/Document/EmailSendService.cs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index e9b2a9c7b..b690812ce 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -338,7 +338,7 @@ namespace IRaCIS.Core.Application.Service.Allocation await subjectVisitClinicalDialogRepository.AddAsync(new SubjectVisitClinicalDialog() { SubjectVisitId = (Guid)taskInfo.SourceSubjectVisitId, Content = content }, true); - BackgroundJob.Enqueue(() => emailSendService.SendClinicalDataQuestionAsync(visiTaskId, content)); + await emailSendService.SendClinicalDataQuestionAsync(visiTaskId, content); return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index 84aa154f7..c2e72c4dd 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -87,6 +87,7 @@ namespace IRaCIS.Core.Application.Service Func topicAndHtmlFunc = trialEmailConfig => { var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode); + var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, _userInfo.UserName, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr); return (topicStr, htmlBodyStr); @@ -99,8 +100,10 @@ namespace IRaCIS.Core.Application.Service Func topicAndHtmlFunc = trialEmailConfig => { var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, taskInfo.VisitName); + var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, _userInfo.UserName, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, taskInfo.VisitName, resultStr); + return (topicStr, htmlBodyStr); }; @@ -269,7 +272,7 @@ namespace IRaCIS.Core.Application.Service { var topicStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, info.ResearchProgramNo,info.Code,info.VisitName); var htmlBodyStr = string.Format(_userInfo.IsEn_Us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN, - info.ResearchProgramNo, info.Code, info.VisitName,_userInfo.UserName,content, _SystemEmailSendConfig.CurrentValue.SiteUrl); + _userInfo.UserName, info.ResearchProgramNo, info.Code, info.VisitName,_userInfo.UserName,content, _SystemEmailSendConfig.CurrentValue.SiteUrl); return (topicStr, htmlBodyStr); };