Merge branch 'Uat_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Uat_IRC_Net8
continuous-integration/drone/push Build is passing Details

Uat_IRC_Net8
hang 2025-07-23 15:00:27 +08:00
commit a1bb730cfe
2 changed files with 22 additions and 35 deletions

View File

@ -266,57 +266,43 @@ public class ImageConsumer(
// 获取项目信息 // 获取项目信息
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == inDto.TrialId); var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == inDto.TrialId);
// 根据不同场景获取不同角色的用户 List<UserTypeEnum> filterUserTypeList = new List<UserTypeEnum>()
var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == inDto.TrialId && !x.TrialUser.IsDeleted).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync(); {
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<UserRole> toUserList = new List<UserRole>(); List<UserRole> toUserList = new List<UserRole>();
List<UserRole> ccUserList = new List<UserRole>(); List<UserRole> ccUserList = new List<UserRole>();
var emailNoticeUserList = await _emailNoticeUserTypeRepository.Where(x => x.EmailNoticeConfigId == inDto.EmailNoticeConfig.Id).ToListAsync(); 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) if (inDto.UserTypes != null)
{ {
userTypeEnum = inDto.UserTypes; userTypeEnumList = inDto.UserTypes;
}
var crcUserList = new List<UserRole>() { };
if (userTypeEnum.Contains(UserTypeEnum.ClinicalResearchCoordinator))
{
crcUserList = await _trialSiteRepository.Where(x => x.Id == inDto.SubjectVisit.TrialSiteId).SelectMany(x => x.CRCUserList.Select(y => y.UserRole)).ToListAsync();
} }
if (inDto.UserTypes == null) if (inDto.UserTypes == null)
{ {
var toList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.To && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList(); var toList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.To).Select(x => x.UserType).ToList();
toUserList = trialUserList.Where(x => toList.Contains(x.UserTypeEnum)).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);
}
} }
else else
{ {
var toList = inDto.UserTypes.Where(x => x != UserTypeEnum.ClinicalResearchCoordinator).ToList(); var toList = inDto.UserTypes;
toUserList = trialUserList.Where(x => toList.Contains(x.UserTypeEnum)).ToList();
toUserList = trialUser.Where(x => toList.Contains(x.UserTypeEnum)).ToList();
if (inDto.UserTypes.Any(x => x == UserTypeEnum.ClinicalResearchCoordinator))
{
toUserList.AddRange(crcUserList);
}
} }
var ccList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.Copy).Select(x => x.UserType).ToList();
var ccList = emailNoticeUserList.Where(x => x.EmailUserType == EmailUserType.Copy && x.UserType != UserTypeEnum.ClinicalResearchCoordinator).Select(x => x.UserType).ToList(); ccUserList = trialUserList.Where(x => ccList.Contains(x.UserTypeEnum)).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);
}
// 如果没有收件人,则不发送邮件 // 如果没有收件人,则不发送邮件
if (toUserList.Count == 0) if (toUserList.Count == 0)

View File

@ -319,6 +319,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<List<TrialSelectUserBasicInfo>> GetTrialUserRoleList(Guid trialId, Guid? subjectVisitId, UserTypeEnum? userTypeEnum) public async Task<List<TrialSelectUserBasicInfo>> 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(); 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) .SelectMany(t => t.TrialUserRoleList)
.WhereIf(userTypeEnum != null, t => t.UserRole.UserTypeEnum == userTypeEnum) .WhereIf(userTypeEnum != null, t => t.UserRole.UserTypeEnum == userTypeEnum)
.Where(t => t.UserRole.Id != _userInfo.UserRoleId)//iQC 指派过滤自己 .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() .Select(t => new TrialSelectUserBasicInfo()
{ {
FullName = t.TrialUser.IdentityUser.FullName, FullName = t.TrialUser.IdentityUser.FullName,