From 14cd5dd91c17de5914f82e68970a1b99cd68ecb3 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 16 Jun 2026 13:50:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E5=AD=97=E5=85=B8=E4=B8=AD?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=85=B3=E9=94=AE=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Common/DTO/DictionaryModel.cs | 2 + .../Service/Common/DictionaryService.cs | 72 +++++++++++++++++-- 2 files changed, 70 insertions(+), 4 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs b/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs index 93d8e8424..b14a6c5c7 100644 --- a/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs +++ b/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs @@ -96,6 +96,8 @@ namespace IRaCIS.Application.Contracts public Guid? TrialReadingCriterionId { get; set; } public Guid? SystemReadingCriterionId { get; set; } + + public Guid? TrialId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Common/DictionaryService.cs b/IRaCIS.Core.Application/Service/Common/DictionaryService.cs index 61eba7a5f..87212de21 100644 --- a/IRaCIS.Core.Application/Service/Common/DictionaryService.cs +++ b/IRaCIS.Core.Application/Service/Common/DictionaryService.cs @@ -452,14 +452,14 @@ namespace IRaCIS.Core.Application.Service if (inDto.TrialReadingCriterionId == null && inDto.SystemReadingCriterionId == null) { - return result; + return await ChangeTrialObjectNameList(result,inDto.TrialId); } else if (inDto.TrialReadingCriterionId != null) { var trialCriterionType = await _readingQuestionCriterionTrial.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.CriterionType).FirstOrDefaultAsync(); if (trialCriterionType == CriterionType.SelfDefine) { - return result; + return await ChangeTrialObjectNameList(result, inDto.TrialId); } @@ -505,7 +505,7 @@ namespace IRaCIS.Core.Application.Service result[item.Key] = item.Value; } - return result; + return await ChangeTrialObjectNameList(result, inDto.TrialId); } else { @@ -548,12 +548,76 @@ namespace IRaCIS.Core.Application.Service result[item.Key] = item.Value; } - return result; + return await ChangeTrialObjectNameList(result, inDto.TrialId); } } + /// + /// 替换字典中的项目名称为试验对象名称 --New + /// + /// + /// + /// + private async Task>> ChangeTrialObjectNameList(Dictionary> data,Guid? trialId) + { + if (!trialId.HasValue) + { + return data; + } + + + // 查询映射集合 + var trialObjectNameList = await _trialRepository + .Where(x => x.Id == trialId) + .Select(x => x.TrialObjectNameList) + .FirstOrDefaultAsync(); + + // 无映射数据直接返回 + if (trialObjectNameList == null || !trialObjectNameList.Any()) + { + return data; + } + + + // 构建映射字典,过滤空名称,避免无效替换 + var replaceDict = trialObjectNameList + .Where(m => !string.IsNullOrEmpty(m.Name)) + .ToDictionary(m => m.Name, m => m.TrialName); + + // 遍历替换 + foreach (var (_, selectList) in data) + { + foreach (var selectItem in selectList) + { + // 替换Value,判null保护 + if (selectItem.Value != null) + { + string tempVal = selectItem.Value; + foreach (var (oldStr, newStr) in replaceDict) + { + tempVal = tempVal.Replace(oldStr, newStr); + } + selectItem.Value = tempVal; + } + + // 替换中文名称ValueCN + if (selectItem.ValueCN != null) + { + string tempCn = selectItem.ValueCN; + foreach (var (oldStr, newStr) in replaceDict) + { + tempCn = tempCn.Replace(oldStr, newStr); + } + selectItem.ValueCN = tempCn; + } + } + } + + return data; + } + #region 稽查相关 ///