From 0dd73991f04237d07bc8668052d07a4214666109 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Thu, 19 Jun 2025 14:16:52 +0800 Subject: [PATCH 1/5] =?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 --- IRaCIS.Core.API/HostService/HangfireHostService.cs | 2 +- .../Helper/HangfireJobHelper.cs | 14 ++++++++------ .../MassTransit/Recurring/TrialDocumentConsumer.cs | 2 +- .../Service/Common/EmailNoticeConfigService.cs | 4 +++- .../Common/EmailScenarioEnum.cs | 9 ++++++++- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/IRaCIS.Core.API/HostService/HangfireHostService.cs b/IRaCIS.Core.API/HostService/HangfireHostService.cs index 4d734134a..f1ede2c8b 100644 --- a/IRaCIS.Core.API/HostService/HangfireHostService.cs +++ b/IRaCIS.Core.API/HostService/HangfireHostService.cs @@ -67,7 +67,7 @@ public class HangfireHostService(IRecurringMessageScheduler _recurringMessageSch //利用主键作为任务Id var jobId = $"{task.Id}_({task.BusinessScenarioEnum})"; - HangfireJobHelper.AddOrUpdateSystemCronJob(jobId, task.BusinessScenarioEnum, task.EmailCron); + HangfireJobHelper.AddOrUpdateTimingCronJob(jobId, task.BusinessScenarioEnum, task.EmailCron); } diff --git a/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs b/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs index ef5e78eed..96e8f2c47 100644 --- a/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs +++ b/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs @@ -83,18 +83,20 @@ namespace IRaCIS.Core.Application.Helper } - public static void AddOrUpdateSystemCronJob(string jobId, EmailBusinessScenario businessScenario, string emailCron) + public static void AddOrUpdateTimingCronJob(string jobId, EmailBusinessScenario businessScenario, string emailCron) { switch (businessScenario) { case EmailBusinessScenario.GeneralTraining_ExpirationNotification: - HangfireJobHelper.RemoveCronJob(jobId + "System"); - HangfireJobHelper.RemoveCronJob(jobId + "Trial"); - Console.WriteLine("添加发邮件过期提醒任务"); - HangfireJobHelper.AddOrUpdateCronJob(jobId+"System", t => t.Send(new SystemDocumentErverDayEvent() { }, default), emailCron); - HangfireJobHelper.AddOrUpdateCronJob(jobId+"Trial", t => t.Send(new TrialDocumentErverDayEvent() { }, default), emailCron); + + HangfireJobHelper.AddOrUpdateCronJob(jobId, t => t.Send(new SystemDocumentErverDayEvent() { }, default), emailCron); + break; + case EmailBusinessScenario.TrialTraining_ExpirationNotification: + + + HangfireJobHelper.AddOrUpdateCronJob(jobId, t => t.Send(new TrialDocumentErverDayEvent() { }, default), emailCron); break; default: diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs index fdf30e753..a2321f285 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs @@ -267,7 +267,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring return (topicStr, htmlBodyStr); }; - var scenario = EmailBusinessScenario.GeneralTraining_EffectiveNotification; + var scenario = EmailBusinessScenario.TrialTraining_EffectiveNotification; var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); diff --git a/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs index 4bdc0d7b6..fc2fa6c3f 100644 --- a/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs @@ -167,10 +167,12 @@ namespace IRaCIS.Core.Application.Contracts { var jobId = $"{entity.Id}_({entity.BusinessScenarioEnum})"; + HangfireJobHelper.RemoveCronJob(jobId); + //有的job 可能编辑控制直接不发,需要移除已存在的 if (entity.IsAutoSend && entity.IsEnable) { - HangfireJobHelper.AddOrUpdateSystemCronJob(jobId, entity.BusinessScenarioEnum, entity.EmailCron); + HangfireJobHelper.AddOrUpdateTimingCronJob(jobId, entity.BusinessScenarioEnum, entity.EmailCron); } } diff --git a/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs b/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs index fc81f3708..b11006898 100644 --- a/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs +++ b/IRaCIS.Core.Domain.Share/Common/EmailScenarioEnum.cs @@ -312,8 +312,15 @@ namespace IRaCIS.Core.Domain.Share /// ReviewerSelection_SPMCPMApproval = 70, + /// + /// 项目培训 - 生效通知 + /// + TrialTraining_EffectiveNotification = 71, - + /// + /// 项目培训 - 到期通知 + /// + TrialTraining_ExpirationNotification = 72, } From ef980fdc6896f5ca97352a707858fd113e864777 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Thu, 19 Jun 2025 14:31:41 +0800 Subject: [PATCH 2/5] =?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 --- IRaCIS.Core.Application/Helper/HangfireJobHelper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs b/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs index 96e8f2c47..dfd485ecb 100644 --- a/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs +++ b/IRaCIS.Core.Application/Helper/HangfireJobHelper.cs @@ -95,7 +95,7 @@ namespace IRaCIS.Core.Application.Helper break; case EmailBusinessScenario.TrialTraining_ExpirationNotification: - + Console.WriteLine("更新项目到期job"); HangfireJobHelper.AddOrUpdateCronJob(jobId, t => t.Send(new TrialDocumentErverDayEvent() { }, default), emailCron); break; From db1d1b0f14af9a8d7de3790dfd0c6d09597bd596 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Thu, 19 Jun 2025 15:08:24 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Common/EmailNoticeConfigService.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs index 8c80d5ff7..c2388436d 100644 --- a/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs @@ -186,16 +186,16 @@ namespace IRaCIS.Core.Application.Contracts } - if (entity.EmailCron != string.Empty) + if (addOrEditEmailNoticeConfig.EmailCron != string.Empty) { - var jobId = $"{entity.Id}_({entity.BusinessScenarioEnum})"; + var jobId = $"{entity.Id}_({addOrEditEmailNoticeConfig.BusinessScenarioEnum})"; HangfireJobHelper.RemoveCronJob(jobId); //有的job 可能编辑控制直接不发,需要移除已存在的 if (entity.IsAutoSend && entity.IsEnable) { - HangfireJobHelper.AddOrUpdateTimingCronJob(jobId, entity.BusinessScenarioEnum, entity.EmailCron); + HangfireJobHelper.AddOrUpdateTimingCronJob(jobId, addOrEditEmailNoticeConfig.BusinessScenarioEnum, addOrEditEmailNoticeConfig.EmailCron); } } From 3bd16d7fcea01886717b1e2073ca543530a64335 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Thu, 19 Jun 2025 16:18:01 +0800 Subject: [PATCH 4/5] =?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 --- .../MassTransit/Recurring/TrialDocumentConsumer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs index a2321f285..332bee612 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs @@ -122,7 +122,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring return (topicStr, htmlBodyStr); }; - var scenario = EmailBusinessScenario.GeneralTraining_ExpirationNotification; + var scenario = EmailBusinessScenario.TrialTraining_ExpirationNotification; var emailConfig = _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario && t.IsAutoSend && t.IsEnable).FirstOrDefault(); From e7bbf09a50f4b065f7c15c0ceec937d67de737b6 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Thu, 19 Jun 2025 16:33:21 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A8=BD=E6=9F=A5?= =?UTF-8?q?=E7=9A=84=E5=8D=95=E4=BD=8D=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/AuditingData.cs | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index 4f4436c74..10dfbb2a4 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -83,7 +83,29 @@ namespace IRaCIS.Core.Infra.EFCore.Common } } + /// + /// 翻译单位 + /// + /// 答案类型 + /// 单位 + /// 自定义单位 + /// 单位字典 + /// 答案 + /// + public string Translationunit(string answerType, ValueUnit? unit, string customUnit, List unitDataList,string? answer) + { + if (answerType == "upload") + { + return "❄❅❆❇❈❉❊"; + } + if (unit == ValueUnit.Custom) + { + return answer + customUnit; + } + + return answer + unitDataList.Where(y => y.Unit == unit).Select(x => x.UnitName).FirstIsNullReturnEmpty(); + } public string GetEntityAuditOpt(EntityEntry entityEntry) { if (entityEntry.State == EntityState.Added) @@ -3026,6 +3048,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common QuestionId = t.Id, t.DictionaryCode, t.Unit, + t.CustomUnit, t.ShowOrder, AnswerType = t.Type, }).OrderBy(t => t.ShowOrder).ToListAsync(); @@ -3073,7 +3096,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common new { //如果问题类型是附件 特殊处理 方便前端解析 - Answer = u.AnswerType == "upload" ? "❄❅❆❇❈❉❊" + t.Answer : t.Answer, + Answer = Translationunit(u.AnswerType, u.Unit, u.CustomUnit, unitDataList, t.Answer), u.QuestionName, u.QuestionEnName, u.DictionaryCode, @@ -3104,8 +3127,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common (t, u) => new { - Answer = u.AnswerType == "upload" ? "❄❅❆❇❈❉❊" + t.Answer : t.Answer + unitDataList.Where(y => y.Unit == u.Unit).Select(x => x.UnitName).FirstIsNullReturnEmpty() - , + Answer = Translationunit(u.AnswerType, u.Unit,u.CustomUnit, unitDataList, t.Answer), u.DictionaryCode, u.QuestionName, u.QuestionEnName, @@ -3233,7 +3255,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common new { //如果问题类型是附件 特殊处理 方便前端解析 - Answer = u.AnswerType == "upload" ? "❄❅❆❇❈❉❊" + t.Answer : t.Answer + unitDataList.Where(y => y.Unit == u.Unit).Select(x => x.UnitName).FirstIsNullReturnEmpty(), + Answer = Translationunit(u.AnswerType, u.Unit, u.CustomUnit, unitDataList, t.Answer), //t.Answer /*u.Unit==ValueUnit.Custom? t.Answer+u.CustomUnit:(u.Unit != ValueUnit.None|| u.Unit != null)*/, u.QuestionName, u.QuestionEnName,