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