From a47ac767295494cd53f8abf4666c9f13e7ede0c3 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 22 Jul 2025 15:29:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E6=8C=87=E6=B4=BEbug?= =?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/TrialSiteUser/TrialMaintenanceService.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs index 33503de6f..ed7b3aca8 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs @@ -319,6 +319,7 @@ namespace IRaCIS.Core.Application.Service public async Task> GetTrialUserRoleList(Guid trialId, Guid? subjectVisitId, UserTypeEnum? userTypeEnum) { + var isSeconReview = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).AnyAsync(t => t.SecondReviewState == SecondReviewState.WaitAudit); //复审指派需要过滤初审的人 var firstUserId = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => t.PreliminaryAuditUserId).FirstOrDefaultAsync(); @@ -326,7 +327,7 @@ namespace IRaCIS.Core.Application.Service .SelectMany(t => t.TrialUserRoleList) .WhereIf(userTypeEnum != null, t => t.UserRole.UserTypeEnum == userTypeEnum) .Where(t => t.UserRole.Id != _userInfo.UserRoleId)//iQC 指派过滤自己 - .WhereIf(firstUserId != null, t => t.UserRole.Id != firstUserId)//iQC 指派过滤自己 + .WhereIf(firstUserId != null && isSeconReview == false, t => t.UserRole.Id != firstUserId)//iQC 过滤初审的人,复核不过滤 .Select(t => new TrialSelectUserBasicInfo() { FullName = t.TrialUser.IdentityUser.FullName, From db11656862846211d5d521176419441b9c7de302 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Wed, 23 Jul 2025 13:34:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E5=8C=BA=E5=88=86CRC=E4=B8=8ECRA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MassTransit/Consumer/ImageConsumer.cs | 54 +++++++------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs index 60cf684f5..c3f98ed1a 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ImageConsumer.cs @@ -266,57 +266,43 @@ public class ImageConsumer( // 获取项目信息 var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == inDto.TrialId); - // 根据不同场景获取不同角色的用户 - var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == inDto.TrialId && !x.TrialUser.IsDeleted).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); + List filterUserTypeList = new List() + { + UserTypeEnum.ClinicalResearchCoordinator, + UserTypeEnum.CRA, + }; + + // 根据不同场景获取不同角色的用户 先排除CRC和CRA + var trialUserList = await _trialUseRoleRepository.Where(x => x.TrialId == inDto.TrialId && !x.TrialUser.IsDeleted && !filterUserTypeList.Contains(x.UserRole.UserTypeEnum) ).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); + + // CRC和CRA单独取 + var crcAndcraUserList = await _trialSiteRepository.Where(x => x.Id == inDto.SubjectVisit.TrialSiteId).SelectMany(x => x.CRCUserList.Select(y => y.UserRole)).ToListAsync(); + trialUserList.AddRange(crcAndcraUserList); // 根据场景确定收件人 List toUserList = new List(); List ccUserList = new List(); var emailNoticeUserList = await _emailNoticeUserTypeRepository.Where(x => x.EmailNoticeConfigId == inDto.EmailNoticeConfig.Id).ToListAsync(); - var userTypeEnum = emailNoticeUserList.Select(x => x.UserType).ToList(); + var userTypeEnumList = emailNoticeUserList.Select(x => x.UserType).ToList(); if (inDto.UserTypes != null) { - userTypeEnum = inDto.UserTypes; - } - var crcUserList = new List() { }; - if (userTypeEnum.Contains(UserTypeEnum.ClinicalResearchCoordinator)) - { - crcUserList = await _trialSiteRepository.Where(x => x.Id == inDto.SubjectVisit.TrialSiteId).SelectMany(x => x.CRCUserList.Select(y => y.UserRole)).ToListAsync(); + userTypeEnumList = inDto.UserTypes; } if (inDto.UserTypes == null) { - var toList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.To && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList(); - - toUserList = trialUser.Where(x => toList.Contains(x.UserTypeEnum)).ToList(); - - if (emailNoticeUserList.Any(x => x.EmailUserType == EmailUserType.To && x.UserType == UserTypeEnum.ClinicalResearchCoordinator)) - { - toUserList.AddRange(crcUserList); - } + var toList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.To).Select(x => x.UserType).ToList(); + toUserList = trialUserList.Where(x => toList.Contains(x.UserTypeEnum)).ToList(); } else { - var toList = inDto.UserTypes.Where(x => x != UserTypeEnum.ClinicalResearchCoordinator).ToList(); - - toUserList = trialUser.Where(x => toList.Contains(x.UserTypeEnum)).ToList(); - - if (inDto.UserTypes.Any(x => x == UserTypeEnum.ClinicalResearchCoordinator)) - { - toUserList.AddRange(crcUserList); - } + var toList = inDto.UserTypes; + toUserList = trialUserList.Where(x => toList.Contains(x.UserTypeEnum)).ToList(); } - - var ccList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.Copy && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList(); - - ccUserList = trialUser.Where(x => ccList.Contains(x.UserTypeEnum)).ToList(); - - if (emailNoticeUserList.Any(x => x.EmailUserType == EmailUserType.Copy && x.UserType == UserTypeEnum.ClinicalResearchCoordinator)) - { - ccUserList.AddRange(crcUserList); - } + var ccList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.Copy).Select(x => x.UserType).ToList(); + ccUserList = trialUserList.Where(x => ccList.Contains(x.UserTypeEnum)).ToList(); // 如果没有收件人,则不发送邮件 if (toUserList.Count == 0)