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 稽查相关
///