修改一版

This commit is contained in:
he
2022-06-22 15:46:34 +08:00
parent d1e9ab8033
commit cf70afda15
4 changed files with 175 additions and 81 deletions
@@ -138,6 +138,11 @@ namespace IRaCIS.Core.Application.ViewModel
//裁判的时候传递
public List<Guid> JudgeVisitTaskIdList { get; set; } = new List<Guid>();
/// <summary>
/// 阅片期
/// </summary>
public List<ReadingGenerataTaskDTO> ReadingGenerataTaskList= new List<ReadingGenerataTaskDTO>();
}
@@ -317,62 +317,61 @@ namespace IRaCIS.Core.Application.Service
{
if (trialConfig.ReadingType == ReadingMethod.Double)
{
//每个访视 根据项目配置生成任务 双审生成两个
var task1 = await _visitTaskRepository.AddAsync(new VisitTask()
foreach (var item in generateTaskCommand.ReadingGenerataTaskList)
{
TrialId = trialId,
//SubjectId = subjectVisit.SubjectId,
//IsUrgent = subjectVisit.IsUrgent,
//TaskBlindName = subjectVisit.BlindName,
//TaskName = subjectVisit.VisitName,
ArmEnum = Arm.DoubleReadingArm1,//特殊
Code = currentMaxCodeInt + 1,
//SourceSubjectVisitId = subjectVisit.Id,
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
ReadingCategory = ReadingCategory.ReadingPeriod
});
var task2 = await _visitTaskRepository.AddAsync(new VisitTask()
{
TrialId = trialId,
//SubjectId = subjectVisit.SubjectId,
//IsUrgent = subjectVisit.IsUrgent,
//TaskBlindName = subjectVisit.BlindName,
//TaskName = subjectVisit.VisitName,
ArmEnum = Arm.DoubleReadingArm2,//特殊
Code = currentMaxCodeInt + 2,
//SourceSubjectVisitId = subjectVisit.Id,
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 2, nameof(VisitTask)),
ReadingCategory = ReadingCategory.ReadingPeriod
});
currentMaxCodeInt = currentMaxCodeInt + 2;
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30));
//每个访视 根据项目配置生成任务 双审生成两个
var task1 = await _visitTaskRepository.AddAsync(new VisitTask()
{
TrialId = trialId,
SubjectId = item.SubjectId,
IsUrgent = item.IsUrgent,
TaskName = item.ReadingName,
ArmEnum = Arm.DoubleReadingArm1,//特殊
Code = currentMaxCodeInt + 1,
SouceReadModuleId=item.ReadModuleId,
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
ReadingCategory = ReadingCategory.ReadingPeriod
});
var task2 = await _visitTaskRepository.AddAsync(new VisitTask()
{
TrialId = trialId,
SubjectId = item.SubjectId,
IsUrgent = item.IsUrgent,
TaskName = item.ReadingName,
ArmEnum = Arm.DoubleReadingArm2,//特殊
Code = currentMaxCodeInt + 2,
SouceReadModuleId = item.ReadModuleId,
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 2, nameof(VisitTask)),
ReadingCategory = ReadingCategory.ReadingPeriod
});
currentMaxCodeInt = currentMaxCodeInt + 2;
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30));
}
}
else
{
var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
foreach (var item in generateTaskCommand.ReadingGenerataTaskList)
{
TrialId = trialId,
//SubjectId = subjectVisit.SubjectId,
//IsUrgent = subjectVisit.IsUrgent,
//TaskBlindName = subjectVisit.BlindName,
//TaskName = subjectVisit.VisitName,
ArmEnum = Arm.SingleReadingArm, //特殊
Code = currentMaxCodeInt + 1,
//SourceSubjectVisitId = subjectVisit.Id,
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
ReadingCategory = ReadingCategory.ReadingPeriod
});
var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
{
TrialId = trialId,
SubjectId = item.SubjectId,
IsUrgent = item.IsUrgent,
TaskName = item.ReadingName,
ArmEnum = Arm.SingleReadingArm, //特殊
Code = currentMaxCodeInt + 1,
SouceReadModuleId = item.ReadModuleId,
TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
ReadingCategory = ReadingCategory.ReadingPeriod
});
singleTask.AllocateTime = DateTime.Now;
singleTask.AllocateTime = DateTime.Now;
currentMaxCodeInt = currentMaxCodeInt + 1;
currentMaxCodeInt = currentMaxCodeInt + 1;
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
_provider.Set<int>($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30));
}
}
@@ -310,58 +310,122 @@ namespace IRaCIS.Application.Services
ReadingTaskState = ReadingTaskState.HaveSigned
});
var result = await _visitTaskRepository.SaveChangesAsync();
// 触裁判任务
await this.TriggerJudgeQuestionNew(inDto.VisitTaskId);
// 添加阅片期任务
await this.AddReadingTask(inDto.VisitTaskId);
// 完成阅片修改状态
await this.FinishReadUpdateState(inDto.VisitTaskId);
return ResponseOutput.Ok(result);
}
public async Task FinishReadUpdateState()
/// <summary>
/// 完成阅片修改状态
/// </summary>
/// <returns></returns>
private async Task FinishReadUpdateState(Guid visitTaskId)
{
}
var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && x.SouceReadModuleId == taskInfo.SouceReadModuleId && x.ReadingTaskState != ReadingTaskState.HaveSigned))
{
if (taskInfo.SouceReadModuleId != null)
{
await _readModuleRepository.UpdatePartialFromQueryAsync(taskInfo.SouceReadModuleId.Value, x => new ReadModule
{
ReadingStatus = ReadingStatusEnum.ReadCompleted
});
}
else if (taskInfo.SourceSubjectVisitId != null)
{
await _subjectVisitRepository.UpdatePartialFromQueryAsync(taskInfo.SourceSubjectVisitId.Value, x => new SubjectVisit
{
ReadingStatus = ReadingStatusEnum.ReadCompleted
});
}
await _subjectVisitRepository.SaveChangesAsync();
}
}
/// <summary>
/// 添加阅片期任务
/// </summary>
/// <returns></returns>
private async Task AddReadingTask(Guid VisitTaskId)
private async Task AddReadingTask(Guid visitTaskId)
{
// ****** 先生成阅片期 阅片期任务阅片完成之后生成肿瘤学的 如果没有阅片期 直接生成肿瘤学 *********////
var taskInfo = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
// 任务类型
switch (taskInfo.ReadingCategory)
#region
Dictionary<ModuleTypeEnum, ReadingCategory> typeChange = new Dictionary<ModuleTypeEnum, ReadingCategory>();
typeChange.Add(ModuleTypeEnum.InPlanSubjectVisit, ReadingCategory.Visit);
typeChange.Add(ModuleTypeEnum.OutPlanSubjectVisit, ReadingCategory.Visit);
typeChange.Add(ModuleTypeEnum.Read, ReadingCategory.ReadingPeriod);
typeChange.Add(ModuleTypeEnum.Global, ReadingCategory.Global);
typeChange.Add(ModuleTypeEnum.Referee, ReadingCategory.Judge);
typeChange.Add(ModuleTypeEnum.Oncology, ReadingCategory.Oncology);
#endregion
var taskInfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstOrDefaultAsync();
List<ReadingGenerataTaskDTO> needReadList = new List<ReadingGenerataTaskDTO>();
if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId&&x.SouceReadModuleId== taskInfo.SouceReadModuleId && x.ReadingTaskState != ReadingTaskState.HaveSigned))
{
case ReadingCategory.Visit:
//if (!await _visitTaskRepository.AnyAsync(x => x.SourceSubjectVisitId == taskInfo.SourceSubjectVisitId && x.ReadingTaskState != ReadingTaskState.HaveSigned))
//{
// var needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId)
// .Select(x=> new ReadingGenerataTaskDTO {
// IsUrgent=x.IsUrgent,
// SubjectId=x.SubjectId,
// ReadingName=
// }).ToListAsync();
// if()
// 任务类型
switch (taskInfo.ReadingCategory)
{
case ReadingCategory.Visit:
needReadList = await _readModuleRepository.Where(x => x.SubjectVisitId == taskInfo.SourceSubjectVisitId)
.Select(x => new ReadingGenerataTaskDTO
{
IsUrgent = x.IsUrgent ?? false,
SubjectId = x.SubjectId,
ReadingName = x.ModuleName,
ReadModuleId = x.Id,
ReadingCategory = typeChange[x.ModuleType],
}).ToListAsync();
if (needReadList.Any(x => x.ReadingCategory == ReadingCategory.ReadingPeriod))
{
needReadList = needReadList.Where(x => x.ReadingCategory != ReadingCategory.Oncology).ToList();
}
needReadList = needReadList.Where(x => _visitTaskRepository.Where(y => y.SouceReadModuleId == x.ReadModuleId).Count() == 0).ToList();
await _visitTaskHelpeService.AddTaskAsync(new GenerateTaskCommand()
{
//}
break;
ReadingCategory = ReadingCategory.ReadingPeriod,
TrialId = taskInfo.TrialId,
ReadingGenerataTaskList = needReadList
}) ;
break;
// 肿瘤学
case ReadingCategory.ReadingPeriod:
var subjectId = await _readModuleRepository.Where(x => x.Id == taskInfo.SouceReadModuleId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync();
needReadList=await _readModuleRepository.Where(x => x.SubjectVisitId == subjectId&&x.ModuleType==ModuleTypeEnum.Oncology)
.Select(x => new ReadingGenerataTaskDTO
{
IsUrgent = x.IsUrgent ?? false,
SubjectId = x.SubjectId,
ReadingName = x.ModuleName,
ReadModuleId = x.Id,
ReadingCategory = typeChange[x.ModuleType],
}).ToListAsync();
needReadList = needReadList.Where(x => _visitTaskRepository.Where(y => y.SouceReadModuleId == x.ReadModuleId).Count() == 0).ToList();
break;
}
}
}
/// <summary>
/// 触发裁判任务(新)
/// </summary>
/// <param name="VisitTaskId"></param>
/// <param name="visitTaskId"></param>
/// <returns></returns>
private async Task TriggerJudgeQuestionNew(Guid VisitTaskId)
private async Task TriggerJudgeQuestionNew(Guid visitTaskId)
{
var visitTask = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
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();
if (visitTaskids.Count == 2)
{
@@ -423,11 +487,11 @@ namespace IRaCIS.Application.Services
/// <summary>
/// 触发裁判任务(老)
/// </summary>
/// <param name="VisitTaskId"></param>
/// <param name="visitTaskId"></param>
/// <returns></returns>
private async Task TriggerJudgeQuestionOld(Guid VisitTaskId)
private async Task TriggerJudgeQuestionOld(Guid visitTaskId)
{
var visitTask = await _visitTaskRepository.Where(x => x.Id == VisitTaskId).FirstOrDefaultAsync();
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();
if (visitTaskids.Count == 2)
{