修改一版

This commit is contained in:
he
2023-01-29 14:21:53 +08:00
parent bf630825e0
commit 275baf16db
4 changed files with 53 additions and 54 deletions
@@ -831,52 +831,45 @@ namespace IRaCIS.Application.Services
{
if (trialCriterion.ReadingQuestionCriterionSystemId != null)
{
// 先找到项目系统问题Id和项目问题Id的对应关系
var questionRelation = _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialCriterion.Id).ToDictionary(
x => x.ReadingQuestionSystemId??default(Guid),
x => x.Id
);
// 将系统里面的问题转为项目问题
var newTrialQuestionList = await _readingQuestionSystemRepository.Where(x => x.ReadingQuestionCriterionSystemId == trialCriterion.ReadingQuestionCriterionSystemId)
.ProjectTo<ReadingQuestionTrial>(_mapper.ConfigurationProvider).ToListAsync();
newTrialQuestionList.ForEach(x =>
{
x.Id = NewId.NextGuid();
if (questionRelation.ContainsKey(x.Id))
{
x.Id = questionRelation[x.Id];
}
else
{
var newid= NewId.NextGuid();
questionRelation.Add(x.Id, newid);
x.Id = newid;
}
x.ReadingQuestionCriterionTrialId = trialCriterion.Id;
x.TrialId = trialCriterion.TrialId;
});
var copyNewQuestionList = newTrialQuestionList.Clone();
var trialQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialCriterion.Id).ToListAsync();
var needAddDatas = new List<ReadingQuestionTrial>();
foreach (var x in newTrialQuestionList)
{
var question = x.Clone();
var firstQuestion = trialQuestionList.Where(y => y.ReadingQuestionSystemId == x.ReadingQuestionSystemId).FirstOrDefault();
if (firstQuestion != null)
{
var systemData = _mapper.Map<ReadingQuestionSystem>(x);
if (firstQuestion.IsJudgeQuestion)
{
if (firstQuestion.TypeValue != x.TypeValue)
{
firstQuestion.AnswerCombination = string.Empty;
firstQuestion.AnswerGroup = string.Empty;
firstQuestion.JudgeType = JudgeTypeEnum.None;
}
}
var newData = _mapper.Map(systemData, firstQuestion);
newData.Id = x.Id;
newData.ReadingQuestionSystemId = x.ReadingQuestionSystemId;
question = newData.Clone();
}
// 最大问题数
question.MaxQuestionCount = x.MaxQuestionCount;
if (question.ParentId != null)
{
question.ParentId = copyNewQuestionList.Where(y => x.ParentId == y.ReadingQuestionSystemId).Select(y => y.Id).FirstOrDefault();
question.ParentId = questionRelation[question.ParentId??default(Guid)];
}
if (question.RelevanceId != null)
{
question.RelevanceId = copyNewQuestionList.Where(y => x.RelevanceId == y.ReadingQuestionSystemId).Select(y => y.Id).FirstOrDefault();
question.RelevanceId = questionRelation[question.RelevanceId ?? default(Guid)];
}
@@ -898,19 +891,35 @@ namespace IRaCIS.Application.Services
}) ;
#region
// 先找到项目系统问题Id和项目问题Id的对应关系
var questionIds = needAddDatas.Select(x => x.Id).ToList();
var tableQuestionRelation = _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId== trialCriterion.Id).ToDictionary(
x => x.SystemTableQuestionId ?? default(Guid),
x => x.Id
);
var newTrialTableQuestionList = await _readingTableQuestionSystemRepository.Where(x => x.SystemCriterionId == trialCriterion.ReadingQuestionCriterionSystemId)
.ProjectTo<ReadingTrialTableQuestionData>(_mapper.ConfigurationProvider).ToListAsync();
newTrialTableQuestionList.ForEach(x =>
{
x.Id = NewId.NextGuid();
if (tableQuestionRelation.ContainsKey(x.Id))
{
x.Id = tableQuestionRelation[x.Id];
}
else
{
var newid = NewId.NextGuid();
tableQuestionRelation.Add(x.Id, newid);
x.Id = newid;
}
});
var copyNewTrialTableQuestionList = newTrialTableQuestionList.Clone();
@@ -945,24 +954,6 @@ namespace IRaCIS.Application.Services
await _readingTableQuestionTrialRepository.AddRangeAsync(needAddTableDatas);
#endregion
//#region 标准字典 移到别处去了
//await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id);
//var criterionDictionaryList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value).
// Select(x => new ReadingCriterionDictionary() {
// CriterionId = trialCriterion.Id,
// DictionaryId = x.DictionaryId,
// IsSystemCriterion = false,
// ParentCode = x.ParentCode,
// }).ToListAsync();
//await _readingCriterionDictionaryRepository.AddRangeAsync(criterionDictionaryList);
//await _readingCriterionDictionaryRepository.SaveChangesAsync();
//#endregion
await _readingQuestionTrialRepository.SaveChangesAsync();
}
}