From b83ea13aedf0b789b43c4b7affcd97254fc6223e Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 6 Nov 2024 13:51:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=82=AE=E4=BB=B6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Common/DTO/EmailNoticeConfigViewModel.cs | 2 +- .../Common/EmailNoticeConfigService.cs | 1 + .../DTO/TrialEmailNoticeConfigViewModel.cs | 2 + .../ITrialEmailNoticeConfigService.cs | 2 +- .../Document/TrialEmailNoticeConfigService.cs | 40 ++++++++++++-- .../Service/Document/_MapConfig.cs | 2 +- .../Common/EmailNoticeConfig.cs | 54 ++++++++++++++++++- .../Document/TrialEmailNoticeConfig.cs | 2 +- 8 files changed, 95 insertions(+), 10 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Common/DTO/EmailNoticeConfigViewModel.cs b/IRaCIS.Core.Application/Service/Common/DTO/EmailNoticeConfigViewModel.cs index 8237bc264..28960a9bf 100644 --- a/IRaCIS.Core.Application/Service/Common/DTO/EmailNoticeConfigViewModel.cs +++ b/IRaCIS.Core.Application/Service/Common/DTO/EmailNoticeConfigViewModel.cs @@ -63,7 +63,7 @@ namespace IRaCIS.Core.Application.Contracts public bool? IsDistinguishCriteria { get; set; } public SysEmailLevel? SystemLevel { get; set; } - public int? BusinessModuleEnum { get; set; } + public BusinessModule? BusinessModuleEnum { get; set; } public int? EmailUrgentEnum { get; set; } diff --git a/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs index 9d928c2e7..49eda1a85 100644 --- a/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs @@ -26,6 +26,7 @@ namespace IRaCIS.Core.Application.Contracts .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.BusinessModuleEnum != null, t => t.BusinessModuleEnum == inQuery.BusinessModuleEnum) .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) diff --git a/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs index c9cc23858..46d3f83f7 100644 --- a/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs +++ b/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs @@ -116,6 +116,8 @@ namespace IRaCIS.Core.Application.ViewModel public UserTypeEnum? ToUserType { get; set; } public UserTypeEnum? CopyUserType { get; set; } + + public BusinessModule? BusinessModuleEnum { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Document/Interface/ITrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/Interface/ITrialEmailNoticeConfigService.cs index 9ca955b2b..fdec22a27 100644 --- a/IRaCIS.Core.Application/Service/Document/Interface/ITrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/Interface/ITrialEmailNoticeConfigService.cs @@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Interfaces { - Task> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery); + Task>> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery); Task AddOrUpdateTrialEmailNoticeConfig(TrialEmailNoticeConfigAddOrEdit addOrEditTrialEmailNoticeConfig); diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index af613f34f..fd42ea9e8 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -1243,7 +1243,7 @@ namespace IRaCIS.Core.Application.Service public async Task> GetSysEmailNoticeConfigList(EmailNoticeConfigQuery inQuery) { var emailNoticeConfigQueryable = _emailNoticeConfigRepository - .WhereIf(inQuery.SystemLevel == null, t => t.SystemLevel == SysEmailLevel.not_sys ) + .WhereIf(inQuery.SystemLevel == null, t => t.SystemLevel == SysEmailLevel.not_sys) .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) @@ -1320,11 +1320,33 @@ namespace IRaCIS.Core.Application.Service } + public async Task BatchAddEnrollOrPdEmailConfig(Guid trialId) + { + var trialConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.IsEnrollementQualificationConfirm, t.IsPDProgressView }).First(); + + var trialEmailNoticeConfigQueryable = _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId) + + .WhereIf(trialConfig.IsEnrollementQualificationConfirm == false, t => t.BusinessModuleEnum != BusinessModule.EligibilityVerification) + .WhereIf(trialConfig.IsPDProgressView == false, t => t.BusinessModuleEnum != BusinessModule.PDVerification) + .WhereIf(trialConfig.IsPDProgressView == false && trialConfig.IsEnrollementQualificationConfirm == false, t => t.BusinessModuleEnum != BusinessModule.PDVerification + && t.BusinessModuleEnum != BusinessModule.EligibilityVerification) + .ProjectTo(_mapper.ConfigurationProvider); + + + var list = await trialEmailNoticeConfigQueryable.ToListAsync(); + + + return await BatchAddSysEmailConfig(_mapper.Map>(list)); + + } + [HttpPost] - public async Task> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery) + public async Task>> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery) { //await SyncSystemEmainCofigDocListAsync(inQuery.TrialId); + var trialConfig = _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.IsEnrollementQualificationConfirm, t.IsPDProgressView }).First(); + var trialEmailNoticeConfigQueryable = _trialEmailNoticeConfigRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(inQuery.IsDistinguishCriteria == false, t => t.TrialReadingCriterionId == null) .WhereIf(inQuery.IsDistinguishCriteria == true, t => t.CriterionTypeEnum != null) @@ -1334,15 +1356,23 @@ namespace IRaCIS.Core.Application.Service .WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable) .WhereIf(inQuery.ToUserType != null, t => t.TrialEmailNoticeUserList.Any(t => t.UserType == inQuery.ToUserType && t.EmailUserType == EmailUserType.To)) .WhereIf(inQuery.CopyUserType != null, t => t.TrialEmailNoticeUserList.Any(t => t.UserType == inQuery.CopyUserType && t.EmailUserType == EmailUserType.Copy)) + + .WhereIf(inQuery.BusinessModuleEnum != null, t => t.BusinessModuleEnum == inQuery.BusinessModuleEnum) + .WhereIf(trialConfig.IsEnrollementQualificationConfirm == false, t => t.BusinessModuleEnum != BusinessModule.EligibilityVerification) + .WhereIf(trialConfig.IsPDProgressView == false, t => t.BusinessModuleEnum != BusinessModule.PDVerification) + .WhereIf(trialConfig.IsPDProgressView == false && trialConfig.IsEnrollementQualificationConfirm == false, t => t.BusinessModuleEnum != BusinessModule.PDVerification + && t.BusinessModuleEnum != BusinessModule.EligibilityVerification) .ProjectTo(_mapper.ConfigurationProvider); var sortField = string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TrialEmailNoticeConfigView.Code) : inQuery.SortField; var orderQuery = inQuery.Asc ? trialEmailNoticeConfigQueryable.OrderBy(sortField) : trialEmailNoticeConfigQueryable.OrderBy(sortField + " desc"); - return await orderQuery.ToListAsync(); + var list = await orderQuery.ToListAsync(); + + return ResponseOutput.Ok(list, trialConfig); } - [TrialGlobalLimit( "AfterStopCannNotOpt" )] + [TrialGlobalLimit("AfterStopCannNotOpt")] public async Task AddOrUpdateTrialEmailNoticeConfig(TrialEmailNoticeConfigAddOrEdit addOrEditTrialEmailNoticeConfig) { await TestEmailConfigAsync(addOrEditTrialEmailNoticeConfig); @@ -1529,7 +1559,7 @@ namespace IRaCIS.Core.Application.Service } - [TrialGlobalLimit( "AfterStopCannNotOpt" )] + [TrialGlobalLimit("AfterStopCannNotOpt")] [HttpDelete("{trialEmailNoticeConfigId:guid}")] public async Task DeleteTrialEmailNoticeConfig(Guid trialEmailNoticeConfigId) { diff --git a/IRaCIS.Core.Application/Service/Document/_MapConfig.cs b/IRaCIS.Core.Application/Service/Document/_MapConfig.cs index af525da59..2311b6420 100644 --- a/IRaCIS.Core.Application/Service/Document/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Document/_MapConfig.cs @@ -53,7 +53,7 @@ namespace IRaCIS.Core.Application.Service CreateMap(); - + CreateMap (); CreateMap() diff --git a/IRaCIS.Core.Domain/Common/EmailNoticeConfig.cs b/IRaCIS.Core.Domain/Common/EmailNoticeConfig.cs index 8b8235438..eb7bbe6e4 100644 --- a/IRaCIS.Core.Domain/Common/EmailNoticeConfig.cs +++ b/IRaCIS.Core.Domain/Common/EmailNoticeConfig.cs @@ -26,7 +26,7 @@ public class EmailNoticeConfig : BaseFullDeleteAuditEntity public int BusinessLevelEnum { get; set; } [Comment("业务模块")] - public int BusinessModuleEnum { get; set; } + public BusinessModule BusinessModuleEnum { get; set; } [Comment("业务场景")] public EmailBusinessScenario BusinessScenarioEnum { get; set; } @@ -83,3 +83,55 @@ public class EmailNoticeUserType : Entity public EmailUserType EmailUserType { get; set; } } +public enum BusinessModule +{ + /// + /// 影像质控 + /// + ImageQualityControl = 1, + /// + /// 影像阅片 + /// + ImageReading = 2, + /// + /// 系统登录 + /// + Login = 4, + /// + /// 后台邮件 + /// + BackstageEmail = 5, + /// + /// 账号信息 + /// + UserAccount = 6, + /// + /// 中心调研 + /// + SiteSurvey = 7, + /// + /// 阅片人管理 + /// + ReviewerManagement = 8, + /// + /// 问题反馈 + /// + UsersSuggestions = 9, + /// + /// 入组确认 + /// + EligibilityVerification = 10, + /// + /// PD确认 + /// + PDVerification = 11, + /// + /// 医学反馈 + /// + MedicalQC = 13, + /// + /// 入组/PD确认 + /// + Eligibility_PDVerification = 12, +} + diff --git a/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs b/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs index 7831bbaca..01a80a558 100644 --- a/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs +++ b/IRaCIS.Core.Domain/Document/TrialEmailNoticeConfig.cs @@ -36,7 +36,7 @@ public class TrialEmailNoticeConfig : BaseFullDeleteAuditEntity public int BusinessLevelEnum { get; set; } - public int BusinessModuleEnum { get; set; } + public BusinessModule BusinessModuleEnum { get; set; } public EmailBusinessScenario BusinessScenarioEnum { get; set; }