修改一版
parent
3333744391
commit
fa0f04c808
|
@ -5,10 +5,14 @@
|
|||
//--------------------------------------------------------------------
|
||||
|
||||
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
public interface IVisitTaskHelpeService
|
||||
{
|
||||
Task GenerateVisitTaskAsync(Guid trialId, List<Guid> subjectVisitIdList, bool isAssignSubjectToDoctor = false);
|
||||
|
||||
Task AddTaskAsync(GenerateTaskCommand generateTaskCommand);
|
||||
}
|
||||
}
|
|
@ -294,7 +294,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
SubjectId = firstTask.SubjectId,
|
||||
ReadingTaskState = ReadingTaskState.WaitReading,
|
||||
TaskName = firstTask.TaskName + "AD",
|
||||
TaskName = firstTask.TaskName,
|
||||
ReadingCategory = ReadingCategory.Judge,
|
||||
TrialId = firstTask.TrialId,
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
|
||||
public string TypeValue { get; set; }
|
||||
|
||||
public List<string> AnswerGroup { get; set; }
|
||||
public List<AnswerGroupDto> AnswerGroup { get; set; }
|
||||
|
||||
|
||||
}
|
||||
|
@ -153,6 +153,13 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
}
|
||||
|
||||
|
||||
public class AnswerGroupDto
|
||||
{
|
||||
public List<string> AnswerGroupA { get; set; }
|
||||
|
||||
public List<string> AnswerGroupB { get; set; }
|
||||
}
|
||||
|
||||
public class TaskAnswerDto
|
||||
{
|
||||
public Guid VisitTaskId { get; set; }
|
||||
|
|
|
@ -15,6 +15,8 @@ using AutoMapper;
|
|||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using Newtonsoft.Json;
|
||||
using IRaCIS.Core.Application.Service;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
{
|
||||
|
@ -27,15 +29,18 @@ namespace IRaCIS.Application.Services
|
|||
private readonly IMapper mapper;
|
||||
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
|
||||
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||
private readonly IVisitTaskHelpeService _visitTaskHelpeService;
|
||||
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
|
||||
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
||||
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
||||
private readonly IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository;
|
||||
|
||||
|
||||
public ReadingImageTaskService(
|
||||
IMapper mapper,
|
||||
IRepository<NoneDicomStudy> noneDicomStudyRepository,
|
||||
IRepository<VisitTask> visitTaskRepository,
|
||||
IVisitTaskHelpeService visitTaskHelpeService,
|
||||
IRepository<SubjectVisit> subjectVisitRepository,
|
||||
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository,
|
||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository,
|
||||
|
@ -45,6 +50,7 @@ namespace IRaCIS.Application.Services
|
|||
this.mapper = mapper;
|
||||
this._noneDicomStudyRepository = noneDicomStudyRepository;
|
||||
this._visitTaskRepository = visitTaskRepository;
|
||||
this._visitTaskHelpeService = visitTaskHelpeService;
|
||||
this._subjectVisitRepository = subjectVisitRepository;
|
||||
this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
||||
this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
||||
|
@ -170,7 +176,7 @@ namespace IRaCIS.Application.Services
|
|||
var result = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.ReadingQuestionCriterionTrialId && x.IsJudgeQuestion)
|
||||
.Select(x => new GetTrialCriterionJudgeQuestionListOutDto()
|
||||
{
|
||||
AnswerGroup = JsonConvert.DeserializeObject<List<string>>(x.AnswerGroup.IsNullOrEmpty()?"[]": x.AnswerGroup),
|
||||
AnswerGroup = JsonConvert.DeserializeObject<List<AnswerGroupDto>>(x.AnswerGroup.IsNullOrEmpty()?"[]": x.AnswerGroup),
|
||||
QuestionName = x.QuestionName,
|
||||
TypeValue =x.TypeValue,
|
||||
ReadingQuestionTrialId = x.Id
|
||||
|
@ -301,17 +307,92 @@ namespace IRaCIS.Application.Services
|
|||
ReadingTaskState = ReadingTaskState.HaveSigned
|
||||
});
|
||||
var result = await _visitTaskRepository.SaveChangesAsync();
|
||||
await this.TriggerJudgeQuestion(inDto.VisitTaskId);
|
||||
await this.TriggerJudgeQuestionNew(inDto.VisitTaskId);
|
||||
|
||||
return ResponseOutput.Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 触发裁判任务
|
||||
/// 添加阅片期任务
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task AddReadingTask(Guid VisitTaskId)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 触发裁判任务(新)
|
||||
/// </summary>
|
||||
/// <param name="VisitTaskId"></param>
|
||||
/// <returns></returns>
|
||||
private async Task TriggerJudgeQuestion(Guid VisitTaskId)
|
||||
private async Task TriggerJudgeQuestionNew(Guid VisitTaskId)
|
||||
{
|
||||
var visitTask = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
|
||||
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && 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))
|
||||
join question in _readingQuestionTrialRepository.Where(x => x.IsJudgeQuestion) on new { ReadingQuestionTrialId = questionAnswet.ReadingQuestionTrialId } equals new { ReadingQuestionTrialId = question.Id }
|
||||
select new TaskAnswerDto()
|
||||
{
|
||||
Answer = questionAnswet.Answer,
|
||||
AnswerGroup = question.AnswerGroup,
|
||||
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
|
||||
{
|
||||
QuestionId = x.Key.QuestionId,
|
||||
AnswerGroup = x.Key.AnswerGroup,
|
||||
TaskAnswerList = x.ToList(),
|
||||
}).ToList();
|
||||
var verificationResults = false;
|
||||
foreach (var item in groupTasks)
|
||||
{
|
||||
if (item.TaskAnswerList.Count() != 2)
|
||||
{
|
||||
verificationResults = true;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
var taskAnswer1 = item.TaskAnswerList[0];
|
||||
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 =>
|
||||
{
|
||||
if (x.AnswerGroupA.Contains(taskAnswer1.Answer) && x.AnswerGroupB.Contains(taskAnswer2.Answer))
|
||||
{
|
||||
verificationResults = true;
|
||||
}
|
||||
if (x.AnswerGroupB.Contains(taskAnswer1.Answer) && x.AnswerGroupA.Contains(taskAnswer2.Answer))
|
||||
{
|
||||
verificationResults = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
if (verificationResults)
|
||||
{
|
||||
await this.SaveJudgeTask(new SaveJudgeTaskDto()
|
||||
{
|
||||
VisitTaskIds = visitTaskids,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 触发裁判任务(老)
|
||||
/// </summary>
|
||||
/// <param name="VisitTaskId"></param>
|
||||
/// <returns></returns>
|
||||
private async Task TriggerJudgeQuestionOld(Guid VisitTaskId)
|
||||
{
|
||||
var visitTask = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
|
||||
var visitTaskids = await _visitTaskRepository.Where(x => x.ReadingTaskState == ReadingTaskState.HaveSigned && x.SourceSubjectVisitId == visitTask.SourceSubjectVisitId && x.SouceReadModuleId == visitTask.SouceReadModuleId).Select(x => x.Id).ToListAsync();
|
||||
|
@ -379,29 +460,14 @@ namespace IRaCIS.Application.Services
|
|||
/// <returns></returns>
|
||||
private async Task SaveJudgeTask(SaveJudgeTaskDto inDto)
|
||||
{
|
||||
var firstTask = await _visitTaskRepository.Where(x => inDto.VisitTaskIds.Contains(x.Id)).FirstOrDefaultAsync();
|
||||
var trialId = await _visitTaskRepository.Where(x => inDto.VisitTaskIds.Contains(x.Id)).Select(x => x.TrialId).FirstOrDefaultAsync();
|
||||
|
||||
VisitTask visitTask = new VisitTask()
|
||||
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
|
||||
{
|
||||
Id = NewId.NextGuid(),
|
||||
ArmEnum = Arm.JudgeArm,
|
||||
SouceReadModuleId = firstTask.SouceReadModuleId,
|
||||
SourceSubjectVisitId = firstTask.SourceSubjectVisitId,
|
||||
SubjectId = firstTask.SubjectId,
|
||||
ReadingTaskState = ReadingTaskState.WaitReading,
|
||||
TaskName = firstTask.TaskName + " AD",
|
||||
ReadingCategory = ReadingCategory.Judge,
|
||||
TrialId = firstTask.TrialId,
|
||||
};
|
||||
|
||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => inDto.VisitTaskIds.Contains(x.Id), x => new VisitTask()
|
||||
{
|
||||
JudgeVisitTaskId = visitTask.Id
|
||||
JudgeVisitTaskIdList= inDto.VisitTaskIds,
|
||||
ReadingCategory= ReadingCategory.Judge,
|
||||
TrialId= trialId
|
||||
});
|
||||
|
||||
await _visitTaskRepository.AddAsync(visitTask);
|
||||
|
||||
await _visitTaskRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue