From 413503e0f4605508f4841a9b0cd5c73f0ce68a7d Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 15 May 2026 13:54:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E8=87=B4=E6=80=A7=E6=A0=B8=E6=9F=A5?= =?UTF-8?q?=20=E6=A0=B8=E6=9F=A5=E7=BB=93=E6=9E=9C=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E8=AE=BE=E7=BD=AE=E7=9A=84=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 233 +++++++++--------- .../Command/ConsistenCheckCommand.cs | 2 + .../Consumer/ConsistencyCheckConsumer.cs | 21 ++ .../SubjectVisitQCAndCheckConsumer.cs | 10 +- 4 files changed, 150 insertions(+), 116 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index e8359eef5..657a1f9fc 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -559,119 +559,11 @@ 系统模板文档配置表 - + - 数据字典-基础数据维护 + 获取系统基础配置信息 - - - - 数据字典-基础数据维护 - - - - - 添加bool - - - - - - - 获取所有字典的Key - - - - - - 添加字典 的同时 一起添加子项 --New - - - - - - - New 查询条件 - - - - - - - 添加和编辑 - - - - - - - 获取子项数组 - - - - - 删除字典数据 - - - - 传递父亲 code 字符串 数组 返回多个下拉框数据 - - - - - - - 根据父亲Code 获取单个下拉框数据 - - - - - - - 根据父亲字典分组 获取子项 - - - - - - - 获取标准字典 - - - - - - 获取标准字典 - - - - - - 获取标准指定字典 - - - - - - - 获取所有下拉框 枚举 bool 数据 - - - - - - 获取是和否 - - - - - - - 获取审核状态 - - - - + @@ -1441,6 +1333,121 @@ RSTEST 疗效评估全称 + + + 数据字典-基础数据维护 + + + + + 数据字典-基础数据维护 + + + + + 添加bool + + + + + + + 获取所有字典的Key + + + + + + 添加字典 的同时 一起添加子项 --New + + + + + + + New 查询条件 + + + + + + + 添加和编辑 + + + + + + + 获取子项数组 + + + + + 删除字典数据 + + + + 传递父亲 code 字符串 数组 返回多个下拉框数据 + + + + + + + 根据父亲Code 获取单个下拉框数据 + + + + + + + 根据父亲字典分组 获取子项 + + + + + + + 获取标准字典 + + + + + + 获取标准字典 + + + + + + 获取标准指定字典 + + + + + + + 获取所有下拉框 枚举 bool 数据 + + + + + + 获取是和否 + + + + + + + 获取审核状态 + + + + + + 邮件日志 @@ -16857,12 +16864,12 @@ 定时过期提醒 - + 生效通知 - + 生效通知 diff --git a/IRaCIS.Core.Application/MassTransit/Command/ConsistenCheckCommand.cs b/IRaCIS.Core.Application/MassTransit/Command/ConsistenCheckCommand.cs index 899ce5d77..0860bfa4b 100644 --- a/IRaCIS.Core.Application/MassTransit/Command/ConsistenCheckCommand.cs +++ b/IRaCIS.Core.Application/MassTransit/Command/ConsistenCheckCommand.cs @@ -34,6 +34,8 @@ namespace IRaCIS.Core.Application.MassTransit.Command public Guid SubjectVisitId { get; set; } public Guid StudyId { get; set; } + + public string SiteCounty { get; set; } } public class FullCheckResult: CheckViewModel diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs index c8f98b101..312ee375b 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs @@ -10,12 +10,14 @@ using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using MassTransit; +using MaxMind.GeoIP2.Model; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Options; using Newtonsoft.Json; +using System.Globalization; using System.IO; using System.Text; @@ -79,6 +81,8 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer Modality = study.ModalityForEdit, SubjectCode = subject.Code, VisitName = sv.VisitName, + + SiteCounty = sv.TrialSite.Country, }; var noneDicomQuey = from sv in _subjectVisitRepository.Where(subjectVisitLambda) @@ -93,6 +97,8 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer Modality = noneDicomStudy.Modality, SubjectCode = subject.Code, VisitName = sv.VisitName, + + SiteCounty = sv.TrialSite.Country, }; var dbList = (await dicomQuery.ToListAsync()).Union(await noneDicomQuey.ToListAsync()).ToList(); @@ -120,6 +126,21 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer var dbVisitStudyList = dbList.Where(t => t.SubjectCode == sv.SubjectCode && t.SiteCode == sv.SiteCode && t.VisitName == sv.VisitName).ToList(); + //设置当前中心语言 + + var isEn_us = dbVisitStudyList.First().SiteCounty == StaticData.SiteCountry.US; + + var cultureInfoName = StaticData.CultureInfo.en_US; + + if (isEn_us == false) + { + cultureInfoName = StaticData.CultureInfo.zh_CN; + } + + CultureInfo.CurrentCulture = new CultureInfo(cultureInfoName); + CultureInfo.CurrentUICulture = new CultureInfo(cultureInfoName); + + //找到etc 当前visit site 和subject 一致的检查列表 var etcVisitStudyList = etcList.Where(t => t.SubjectCode == sv.SubjectCode && t.SiteCode == sv.SiteCode && t.VisitName == sv.VisitName).ToList(); diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs index 86be11cde..2daf610d3 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/SubjectVisitQCAndCheckConsumer.cs @@ -511,7 +511,7 @@ public class PMRepliedCheckChallengeEventConsumer( var subjectVisitId = context.Message.SubjectVisitId; - var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.NoneDicomStudyList).Include(x => x.StudyList).Include(x => x.Subject).FirstNotNullAsync(); + var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.NoneDicomStudyList).Include(x => x.StudyList).Include(x => x.Subject).Include(t => t.TrialSite).FirstNotNullAsync(); var trialId = subjectVisit.TrialId; @@ -540,11 +540,15 @@ public class PMRepliedCheckChallengeEventConsumer( .Union(subjectVisit.StudyList.Select(k => k.ModalityForEdit)).ToList(); + // 遍历语言枚举 在底层判断收件人是否为空,决定是否跳过邮件发送,避免每个邮件场景的地方都重复判断 - foreach (UserWorkLanguage workLanguage in Enum.GetValues()) + //foreach (UserWorkLanguage workLanguage in Enum.GetValues()) { //重新设置当前发送邮件的语言 - isEn_US = workLanguage == UserWorkLanguage.US; + + isEn_US = subjectVisit.TrialSite.Country == StaticData.SiteCountry.US; + + var workLanguage = isEn_US ? UserWorkLanguage.US : UserWorkLanguage.CN; var userinfoList = trialUserList.Where(x => x.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Where(t => t.UserWorkLanguage == workLanguage).ToList();