From dd05e26febe2e475e885f1153b7810a00e87a8aa Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 30 Jun 2026 15:33:55 +0800 Subject: [PATCH] =?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 --- .../Recurring/SystemDocumentConsumer.cs | 6 ++-- .../Recurring/TrialDocumentConsumer.cs | 32 +++++++++++++------ .../Document/DTO/SystemDocumentViewModel.cs | 2 ++ 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs index b07ec8da6..3e9ec1470 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/SystemDocumentConsumer.cs @@ -51,7 +51,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring var systemDocQuery = from sysDoc in _systemDocumentRepository.AsQueryable(false) - from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.Status == UserStateEnum.Enable&&!t.IsTestUser).Where(t => t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) + from identityUser in _identityUserRepository.AsQueryable(false).Where(t => t.Status == UserStateEnum.Enable).Where(t => t.UserRoleList.Where(t => t.IsUserRoleDisabled == false).Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) join confirmc in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = identityUser.Id, SystemDocumentId = sysDoc.Id } equals new { confirmc.ConfirmUserId, confirmc.SystemDocumentId } into cc from confirm in cc.DefaultIfEmpty() select new UnionDocumentWithConfirmInfoView() @@ -176,7 +176,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring systemDocQuery = from sysDoc in _systemDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) from identityUser in _identityUserRepository.AsQueryable(false) - .Where(t => t.Status == UserStateEnum.Enable && !t.IsTestUser && + .Where(t => t.Status == UserStateEnum.Enable && t.UserRoleList.Where(t => t.IsUserRoleDisabled == false) .Any(t => context.Message.NewUserTypeIds.Contains(t.UserTypeId) && sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) @@ -204,7 +204,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring systemDocQuery = from sysDoc in _systemDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) from identityUser in _identityUserRepository.AsQueryable(false) - .Where(t => t.Status == UserStateEnum.Enable && !t.IsTestUser && + .Where(t => t.Status == UserStateEnum.Enable && t.UserRoleList.Where(t => t.IsUserRoleDisabled == false) .Any(t => sysDoc.NeedConfirmedUserTypeList.AsQueryable().Any(c => c.NeedConfirmUserTypeId == t.UserTypeId))) select new UnionDocumentWithConfirmInfoView() diff --git a/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs b/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs index 1a555bc73..ec374fa6c 100644 --- a/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Recurring/TrialDocumentConsumer.cs @@ -52,7 +52,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring var trialDocQuery = from trialDoc in _trialDocumentRepository.AsQueryable(true) - + join trial in _trialRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trial.Id join trialIdentityUser in _trialIdentityUserRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trialIdentityUser.TrialId join trialUserRole in _trialUserRoleRepository.Where(x => x.IsDeleted == false) on trialIdentityUser.Id equals trialUserRole.TrialUserId join identityUser in _identityUserRepository.AsQueryable(false).Where(u => u.Status == UserStateEnum.Enable && !u.IsTestUser) @@ -72,7 +72,9 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring CurrentStaffTrainDays = trialDoc.CurrentStaffTrainDays, NewStaffTrainDays = trialDoc.NewStaffTrainDays, Id = trialDoc.Id, - TrialId= trialDoc.TrialId, + TrialType= trial.TrialType, + IsTestUser= identityUser.IsTestUser, + TrialId = trialDoc.TrialId, IsSystemDoc = false, CreateTime = trialDoc.CreateTime, FullFilePath = trialDoc.Path, @@ -94,7 +96,11 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring }; var datalist = await trialDocQuery.IgnoreQueryFilters().Where(t => t.IsDeleted == false && t.ConfirmTime == null&&t.ConfirmTime==null) .ToListAsync(); - datalist = datalist.Where(x => x.SuggestFinishTime != null && x.SuggestFinishTime.Value.Date == DateTime.Now.Date) + + + datalist = datalist + .Where(x=>((x.TrialType== TrialType.OfficialTrial|| x.TrialType== TrialType.Training) && !x.IsTestUser) || (x.TrialType==TrialType.NoneOfficial &&x.IsTestUser)) + .Where(x => x.SuggestFinishTime != null && x.SuggestFinishTime.Value.Date == DateTime.Now.Date) .ToList(); var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); @@ -203,20 +209,21 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring Console.WriteLine($"只发送给新增项目的角色,角色数量: {context.Message.NewUserTypeIds.Count}"); } // 构建查询 - IQueryable systemDocQuery; + IQueryable trialDocQuery; if (context.Message.NewUserTypeIds != null && context.Message.NewUserTypeIds.Any()) { // 只查询新增角色的用户 - systemDocQuery = + trialDocQuery = from trialDoc in _trialDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) + join trial in _trialRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trial.Id join trialIdentityUser in _trialIdentityUserRepository.Where(x=>x.IsDeleted==false) on trialDoc.TrialId equals trialIdentityUser.TrialId join trialUserRole in _trialUserRoleRepository.Where(x => x.IsDeleted == false) on trialIdentityUser.Id equals trialUserRole.TrialUserId join identityUser in _identityUserRepository.AsQueryable(false).Where(u => u.Status == UserStateEnum.Enable && !u.IsTestUser) on trialIdentityUser.IdentityUserId equals identityUser.Id where trialIdentityUser.TrialUserRoleList.Any(ur => !ur.IsDeleted && context.Message.NewUserTypeIds.Contains(ur.UserRole.UserTypeId) && trialDoc.NeedConfirmedUserTypeList.Any(c => c.NeedConfirmUserTypeId == ur.UserRole.UserTypeId)) - select new UnionDocumentWithConfirmInfoView() + select new TrialSignDocView() { IsSystemDoc = true, Id = trialDoc.Id, @@ -224,6 +231,8 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring CreateTime = trialDoc.CreateTime, IsDeleted = trialDoc.IsDeleted, SignViewMinimumMinutes = trialDoc.SignViewMinimumMinutes, + TrialType = trial.TrialType, + IsTestUser = identityUser.IsTestUser, Name = trialDoc.Name, Path = trialDoc.Path, FileTypeId = trialDoc.FileTypeId, @@ -238,8 +247,9 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring else { // 查询所有相关角色的用户 - systemDocQuery = + trialDocQuery = from trialDoc in _trialDocumentRepository.AsQueryable(false).Where(x => context.Message.Ids.Contains(x.Id)) + join trialIdentityUser in _trialIdentityUserRepository.Where(x => x.IsDeleted == false) on trialDoc.TrialId equals trialIdentityUser.TrialId join trialUserRole in _trialUserRoleRepository.Where(x=>x.IsDeleted==false) on trialIdentityUser.Id equals trialUserRole.TrialUserId @@ -249,7 +259,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring where trialIdentityUser.TrialUserRoleList.Any(ur => !ur.IsDeleted &&trialDoc.NeedConfirmedUserTypeList.Any(c => c.NeedConfirmUserTypeId == ur.UserRole.UserTypeId)) - select new UnionDocumentWithConfirmInfoView() + select new TrialSignDocView() { IsSystemDoc = false, Id = trialDoc.Id, @@ -258,6 +268,8 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring CreateTime = trialDoc.CreateTime, IsDeleted = trialDoc.IsDeleted, SignViewMinimumMinutes = trialDoc.SignViewMinimumMinutes, + TrialType = trial.TrialType, + IsTestUser = identityUser.IsTestUser, Name = trialDoc.Name, Path = trialDoc.Path, FileTypeId = trialDoc.FileTypeId, @@ -270,7 +282,9 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring }; } - var datalist = await systemDocQuery.IgnoreQueryFilters().ToListAsync(); + var datalist = await trialDocQuery + .IgnoreQueryFilters().Where(x => ((x.TrialType == TrialType.OfficialTrial || x.TrialType == TrialType.Training) && !x.IsTestUser) || (x.TrialType == TrialType.NoneOfficial && x.IsTestUser)) + .ToListAsync(); var confirmUserIdList = datalist.Select(t => t.ConfirmUserId).Distinct().ToList(); var userinfoList = await _identityUserRepository.Where(x => confirmUserIdList.Contains(x.Id)).ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs index 02e7e2dde..4f50ce1c9 100644 --- a/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs +++ b/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs @@ -87,7 +87,9 @@ namespace IRaCIS.Core.Application.Contracts public string ExperimentName { get; set; } + public TrialType TrialType { get; set; } + public bool IsTestUser { get; set; } }