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..dfd485ecb 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: + + Console.WriteLine("更新项目到期job"); + 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..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(); @@ -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 a5ee0bca9..c2388436d 100644 --- a/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs @@ -186,14 +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.AddOrUpdateSystemCronJob(jobId, entity.BusinessScenarioEnum, entity.EmailCron); + HangfireJobHelper.AddOrUpdateTimingCronJob(jobId, addOrEditEmailNoticeConfig.BusinessScenarioEnum, addOrEditEmailNoticeConfig.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, } 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,