修改一版

Uat_Study
he 2022-06-23 13:19:55 +08:00
parent 4590019929
commit a9022b4c02
4 changed files with 110 additions and 27 deletions

View File

@ -69,7 +69,14 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
[NotDefault]
public List<AnswerGroupDto> AnswerGroup { get; set; }
public List<string> AnswerGroup { get; set; }
[NotDefault]
public List<AnswerCombinationDto> AnswerCombination { get; set; }
[NotDefault]
public JudgeTypeEnum JudgeType { get; set; }
}
public class GetTrialCriterionJudgeQuestionListOutDto
@ -80,7 +87,12 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string TypeValue { get; set; }
public List<AnswerGroupDto> AnswerGroup { get; set; }
public JudgeTypeEnum JudgeType { get; set; }
public List<string> AnswerGroup { get; set; }
public List<AnswerCombinationDto> AnswerCombination { get; set; }
}
@ -112,6 +124,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid ReadingQuestionCriterionTrialId { get; set; }
public List<QuestionAnswer> AnswerList { get; set; } = new List<QuestionAnswer>();
public JudgeTypeEnum JudgeType { get; set; }
}
public class SaveJudgeTaskDto
@ -142,6 +156,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string AnswerGroup { get; set; }
public string AnswerCombination { get; set; }
public JudgeTypeEnum JudgeType { get; set; }
public List<TaskAnswerDto> TaskAnswerList { get; set; }
}
@ -153,7 +172,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
}
public class AnswerGroupDto
public class AnswerCombinationDto
{
public List<string> AnswerGroupA { get; set; }
@ -169,6 +188,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public string Answer { get; set; }
public string AnswerGroup { get; set; }
public string AnswerCombination { get; set; }
public JudgeTypeEnum JudgeType { get; set; }
}
public class GetTrialReadingQuestionOutDto

View File

@ -180,9 +180,11 @@ namespace IRaCIS.Application.Services
var result = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.ReadingQuestionCriterionTrialId && x.IsJudgeQuestion)
.Select(x => new GetTrialCriterionJudgeQuestionListOutDto()
{
AnswerGroup = JsonConvert.DeserializeObject<List<AnswerGroupDto>>(x.AnswerGroup.IsNullOrEmpty()?"[]": x.AnswerGroup),
AnswerGroup = JsonConvert.DeserializeObject<List<string>>(x.AnswerGroup.IsNullOrEmpty()?"[]": x.AnswerGroup),
AnswerCombination = JsonConvert.DeserializeObject<List<AnswerCombinationDto>>(x.AnswerCombination.IsNullOrEmpty() ? "[]" : x.AnswerCombination),
QuestionName = x.QuestionName,
TypeValue =x.TypeValue,
JudgeType=x.JudgeType,
ReadingQuestionTrialId = x.Id
}).ToListAsync();
return result;
@ -198,7 +200,9 @@ namespace IRaCIS.Application.Services
{
await _readingQuestionTrialRepository.UpdatePartialFromQueryAsync(inDto.ReadingQuestionTrialId, x => new ReadingQuestionTrial()
{
AnswerGroup = JsonConvert.SerializeObject(inDto.AnswerGroup)
AnswerGroup = JsonConvert.SerializeObject(inDto.AnswerCombination),
AnswerCombination = JsonConvert.SerializeObject(inDto.AnswerCombination),
JudgeType= inDto.JudgeType,
}) ;
var result = await _readingQuestionTrialRepository.SaveChangesAsync();
@ -236,9 +240,6 @@ namespace IRaCIS.Application.Services
};
var qusetionList =await query.OrderBy(x=>x.ShowOrder).ToListAsync();
List<GetTrialReadingQuestionOutDto> groupList = qusetionList.Where(x => x.ParentId == null).ToList();
groupList.ForEach(x =>
{
@ -312,7 +313,7 @@ namespace IRaCIS.Application.Services
});
var result = await _visitTaskRepository.SaveChangesAsync();
// 触裁判任务
await this.TriggerJudgeQuestionNew(inDto.VisitTaskId);
await this.TriggerJudgeQuestion(inDto.VisitTaskId);
// 添加阅片期任务
await this.AddReadingTask(inDto.VisitTaskId);
// 完成阅片修改状态
@ -428,10 +429,10 @@ namespace IRaCIS.Application.Services
/// </summary>
/// <param name="visitTaskId"></param>
/// <returns></returns>
private async Task TriggerJudgeQuestionNew(Guid visitTaskId)
private async Task TriggerJudgeQuestion(Guid visitTaskId)
{
var visitTask = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned &&x.ReadingCategory!= ReadingCategory.Judge && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned &&x.ReadingCategory!= ReadingCategory.Judge&&!x.IsReReading && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
if (visitTaskids.Count == 2)
{
var query = from questionAnswet in _readingTaskQuestionAnswerRepository.Where(x => visitTaskids.Contains(x.VisitTaskId))
@ -440,22 +441,26 @@ namespace IRaCIS.Application.Services
{
Answer = questionAnswet.Answer,
AnswerGroup = question.AnswerGroup,
AnswerCombination=question.AnswerCombination,
JudgeType=question.JudgeType,
QuestionId = question.Id,
VisitTaskId = questionAnswet.VisitTaskId,
};
var questionAnswerlist = await query.ToListAsync();
List<GroupTaskAnswerDto> groupTasks = questionAnswerlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup }).Select(x => new GroupTaskAnswerDto
List<GroupTaskAnswerDto> groupTasks = questionAnswerlist.GroupBy(x => new { x.QuestionId, x.AnswerGroup,x.JudgeType,x.AnswerCombination }).Select(x => new GroupTaskAnswerDto
{
QuestionId = x.Key.QuestionId,
AnswerGroup = x.Key.AnswerGroup,
AnswerCombination=x.Key.AnswerCombination,
JudgeType=x.Key.JudgeType,
TaskAnswerList = x.ToList(),
}).ToList();
var verificationResults = false;
var noteEqual = false;
foreach (var item in groupTasks)
{
if (item.TaskAnswerList.Count() != 2)
{
verificationResults = true;
noteEqual = true;
break;
}
else
@ -464,22 +469,45 @@ namespace IRaCIS.Application.Services
var taskAnswer2 = item.TaskAnswerList[1];
if (taskAnswer1.Answer != taskAnswer2.Answer)
{
var answerGroup = JsonConvert.DeserializeObject<List<AnswerGroupDto>>(item.AnswerGroup==string.Empty?"[]": item.AnswerGroup).ToList();
answerGroup.ForEach(x =>
switch (item.JudgeType)
{
case JudgeTypeEnum.AnswerDisaffinity:
noteEqual = true;
break;
case JudgeTypeEnum.AnswerGroup:
var answerGroupList = JsonConvert.DeserializeObject<List<string>>(item.AnswerGroup).Select(x => new AnswerGroup()
{
GroupId = NewId.NextGuid(),
GroupValue = x
}).ToList();
var itemAnswerGroupsitem1 = answerGroupList.Where(x => x.GroupValue.Contains($"|{taskAnswer1.Answer}|"));
var itemAnswerGroupsitem2 = answerGroupList.Where(x => x.GroupValue.Contains($"|{taskAnswer2.Answer}|"));
var unionList = itemAnswerGroupsitem1.Intersect(itemAnswerGroupsitem2).ToList();
if (unionList.Count < 1)
{
noteEqual =true;
}
break;
case JudgeTypeEnum.AnswerCombination:
var answerCombinationList = JsonConvert.DeserializeObject<List<AnswerCombinationDto>>(item.AnswerCombination == string.Empty ? "[]" : item.AnswerCombination).ToList();
answerCombinationList.ForEach(x =>
{
if (x.AnswerGroupA.Contains(taskAnswer1.Answer) && x.AnswerGroupB.Contains(taskAnswer2.Answer))
{
verificationResults = true;
noteEqual = true;
}
if (x.AnswerGroupB.Contains(taskAnswer1.Answer) && x.AnswerGroupA.Contains(taskAnswer2.Answer))
{
verificationResults = true;
noteEqual = true;
}
});
break;
}
}
}
if (verificationResults)
}
if (noteEqual)
{
await this.SaveJudgeTask(new SaveJudgeTaskDto()
{

View File

@ -163,6 +163,28 @@ namespace IRaCIS.Core.Domain.Share
Read = 2,
}
public enum JudgeTypeEnum
{
None=0,
/// <summary>
/// 答案不相同
/// </summary>
AnswerDisaffinity=1,
/// <summary>
/// 答案分组
/// </summary>
AnswerGroup=2,
/// <summary>
/// 答案组合
/// </summary>
AnswerCombination=3,
}
/// <summary>
/// 阅片状态
/// </summary>

View File

@ -92,6 +92,16 @@ namespace IRaCIS.Core.Domain.Models
/// </summary>
public string AnswerGroup { get; set; } = string.Empty;
/// <summary>
/// 答案组合
/// </summary>
public string AnswerCombination { get; set; } = string.Empty;
/// <summary>
/// 裁判类型
/// </summary>
public JudgeTypeEnum JudgeType { get; set; }
/// <summary>
/// 创建人
/// </summary>