裁判规则修改
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
22afd356a6
commit
26f049b31e
|
|
@ -768,6 +768,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
x.ArbitrationRule,
|
||||
x.IsGlobalReading,
|
||||
x.IsReadingPeriod,
|
||||
x.JudgeRuleEnum,
|
||||
}).FirstNotNullAsync();
|
||||
|
||||
var noteEqual = false;
|
||||
|
|
@ -811,6 +812,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
VisitTaskId = questionAnswer.VisitTaskId,
|
||||
};
|
||||
var globalVisitAnswerlist = await globalVisitQuestionQuery.ToListAsync();
|
||||
await ApplyVisitJudgeRules(globalVisitAnswerlist, criterionInfo.JudgeRuleEnum);
|
||||
|
||||
var taskNums = globalVisitAnswerlist.Select(x => x.VisitTaskNum).Distinct().OrderBy(x => x).ToList();
|
||||
|
||||
|
|
@ -841,11 +843,13 @@ namespace IRaCIS.Core.Application.Service
|
|||
AnswerCombination = question.AnswerCombination,
|
||||
JudgeType = question.JudgeType,
|
||||
QuestionId = question.Id,
|
||||
JudgeDifferenceValue = question.JudgeDifferenceValue,
|
||||
JudgeDifferenceType = question.JudgeDifferenceType,
|
||||
VisitTaskId = questionAnswet.VisitTaskId,
|
||||
};
|
||||
JudgeDifferenceValue = question.JudgeDifferenceValue,
|
||||
JudgeDifferenceType = question.JudgeDifferenceType,
|
||||
VisitTaskId = questionAnswet.VisitTaskId,
|
||||
VisitTaskNum = questionAnswet.VisitTask.VisitTaskNum,
|
||||
};
|
||||
var questionAnswerlist = await query.ToListAsync();
|
||||
await ApplyVisitJudgeRules(questionAnswerlist, criterionInfo.JudgeRuleEnum);
|
||||
|
||||
// 将答案进行分组
|
||||
List<GroupTaskAnswerDto> groupTasks = questionAnswerlist.GroupBy(x => new { x.JudgeDifferenceValue, x.JudgeDifferenceType, x.QuestionId, x.AnswerGroup, x.JudgeType, x.AnswerCombination }).Select(x => new GroupTaskAnswerDto
|
||||
|
|
@ -893,6 +897,8 @@ namespace IRaCIS.Core.Application.Service
|
|||
}
|
||||
else
|
||||
{
|
||||
await ApplyVisitJudgeRules(item.AfterQuestionList, item.VisitNum, criterionInfo.JudgeRuleEnum);
|
||||
await ApplyVisitJudgeRules(twoItem.AfterQuestionList, twoItem.VisitNum, criterionInfo.JudgeRuleEnum);
|
||||
var newlist = item.AfterQuestionList.Where(x => x.QuestionId != null && x.IsJudgeQuestion).ToList().Union(
|
||||
twoItem.AfterQuestionList.Where(x => x.QuestionId != null && x.IsJudgeQuestion).ToList()
|
||||
).ToList();
|
||||
|
|
@ -955,6 +961,8 @@ namespace IRaCIS.Core.Application.Service
|
|||
};
|
||||
|
||||
var visitTaskQuestions = await query.ToListAsync();
|
||||
await ApplyVisitJudgeRules(visitTaskQuestions, lastTask.VisitNum, criterionInfo.JudgeRuleEnum);
|
||||
await ApplyVisitJudgeRules(lastTask.AfterQuestionList, lastTask.VisitNum, criterionInfo.JudgeRuleEnum);
|
||||
|
||||
var newlist = visitTaskQuestions.Where(x => x.QuestionId != null).ToList().Union(
|
||||
lastTask.AfterQuestionList.Where(x => x.QuestionId != null).ToList()
|
||||
|
|
@ -1073,6 +1081,102 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 应用访视裁判规则 以及剔除排除的问题
|
||||
/// </summary>
|
||||
private async Task ApplyVisitJudgeRules(List<TaskAnswerDto> answerList, JudgeRule judgeRule)
|
||||
{
|
||||
if (answerList.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var questionIds = answerList.Select(x => x.QuestionId).Distinct().ToList();
|
||||
var questions = await _readingQuestionTrialRepository.Where(x => questionIds.Contains(x.Id)).Select(x => new
|
||||
{
|
||||
x.Id,
|
||||
x.ExcludeShowVisitList,
|
||||
}).ToListAsync();
|
||||
var excludedQuestionIds = answerList
|
||||
.Where(x => questions.FirstOrDefault(question => question.Id == x.QuestionId)?.ExcludeShowVisitList.Contains(x.VisitTaskNum) == true)
|
||||
.Select(x => x.QuestionId)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
answerList.RemoveAll(x => excludedQuestionIds.Contains(x.QuestionId));
|
||||
|
||||
if (judgeRule != JudgeRule.Difference || answerList.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
questionIds = answerList.Select(x => x.QuestionId).Distinct().ToList();
|
||||
var visitNums = answerList.Select(x => x.VisitTaskNum).Distinct().ToList();
|
||||
var visitRules = await _readingQuestionVisitJudgeRuleRepository
|
||||
.Where(x => questionIds.Contains(x.ReadingQuestionId) && (visitNums.Contains(x.VisitNum) || x.VisitNum == -1))
|
||||
.ToListAsync();
|
||||
|
||||
answerList.ForEach(answer =>
|
||||
{
|
||||
var rule = visitRules.FirstOrDefault(x => x.ReadingQuestionId == answer.QuestionId && x.VisitNum == answer.VisitTaskNum)
|
||||
?? visitRules.FirstOrDefault(x => x.ReadingQuestionId == answer.QuestionId && x.VisitNum == -1);
|
||||
if (rule != null)
|
||||
{
|
||||
answer.AnswerGroup = JsonConvert.SerializeObject(rule.AnswerGroup);
|
||||
answer.AnswerCombination = JsonConvert.SerializeObject(rule.AnswerCombination);
|
||||
answer.JudgeType = rule.JudgeType;
|
||||
answer.JudgeDifferenceValue = rule.JudgeDifferenceValue;
|
||||
answer.JudgeDifferenceType = rule.JudgeDifferenceType;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 应用访视裁判规则 以及剔除排除的问题
|
||||
/// </summary>
|
||||
private async Task ApplyVisitJudgeRules(List<GlobalQuestionInfo> questionList, decimal visitNum, JudgeRule judgeRule)
|
||||
{
|
||||
if (questionList.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var questionIds = questionList.Where(x => x.QuestionId != null).Select(x => x.QuestionId!.Value).Distinct().ToList();
|
||||
var excludedQuestionIds = await _readingQuestionTrialRepository
|
||||
.Where(x => questionIds.Contains(x.Id) && x.ExcludeShowVisitList.Contains(visitNum))
|
||||
.Select(x => x.Id)
|
||||
.ToListAsync();
|
||||
questionList.RemoveAll(x => x.QuestionId != null && excludedQuestionIds.Contains(x.QuestionId.Value));
|
||||
|
||||
if (judgeRule != JudgeRule.Difference || questionList.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
questionIds = questionList.Where(x => x.QuestionId != null).Select(x => x.QuestionId!.Value).Distinct().ToList();
|
||||
var visitRules = await _readingQuestionVisitJudgeRuleRepository
|
||||
.Where(x => questionIds.Contains(x.ReadingQuestionId) && (x.VisitNum == visitNum || x.VisitNum == -1))
|
||||
.ToListAsync();
|
||||
|
||||
questionList.ForEach(question =>
|
||||
{
|
||||
if (question.QuestionId == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var rule = visitRules.FirstOrDefault(x => x.ReadingQuestionId == question.QuestionId && x.VisitNum == visitNum)
|
||||
?? visitRules.FirstOrDefault(x => x.ReadingQuestionId == question.QuestionId && x.VisitNum == -1);
|
||||
if (rule != null)
|
||||
{
|
||||
question.AnswerGroup = JsonConvert.SerializeObject(rule.AnswerGroup);
|
||||
question.AnswerCombination = JsonConvert.SerializeObject(rule.AnswerCombination);
|
||||
question.JudgeType = rule.JudgeType;
|
||||
question.JudgeDifferenceValue = rule.JudgeDifferenceValue;
|
||||
question.JudgeDifferenceType = rule.JudgeDifferenceType;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 发送微信通知
|
||||
|
|
|
|||
Loading…
Reference in New Issue