diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index bd8ccb5fc..bce86463d 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -78,371 +78,302 @@ namespace IRaCIS.Core.Application.Service int currentMaxCodeInt = cacheMaxCodeInt > dbMaxCode ? cacheMaxCodeInt : dbMaxCode; - if (generateTaskCommand.ReadingCategory == ReadingCategory.Visit) + switch (generateTaskCommand.ReadingCategory) { - - foreach (var subjectVisit in generateTaskCommand.VisitGenerataTaskList) - { - var assignConfigList = await _subjectUserRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId).Select(u => new { u.DoctorUserId, u.ArmEnum }).ToListAsync(); + case ReadingCategory.Visit: + foreach (var subjectVisit in generateTaskCommand.VisitGenerataTaskList) + { + var assignConfigList = await _subjectUserRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId).Select(u => new { u.DoctorUserId, u.ArmEnum }).ToListAsync(); + if (trialConfig.ReadingType == ReadingMethod.Double) + { + //每个访视 根据项目配置生成任务 双审生成两个 + var task1 = await _visitTaskRepository.AddAsync(new VisitTask() + { + TrialId = trialId, + SubjectId = subjectVisit.SubjectId, + IsUrgent = subjectVisit.IsUrgent, + TaskBlindName = subjectVisit.BlindName, + TaskName = subjectVisit.VisitName, + CheckPassedTime = subjectVisit.CheckPassedTime, + ArmEnum = Arm.DoubleReadingArm1,//特殊 + Code = currentMaxCodeInt + 1, + SourceSubjectVisitId = subjectVisit.Id, + TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)), + ReadingCategory = ReadingCategory.Visit + }); + + var task2 = await _visitTaskRepository.AddAsync(new VisitTask() + { + TrialId = trialId, + SubjectId = subjectVisit.SubjectId, + IsUrgent = subjectVisit.IsUrgent, + TaskBlindName = subjectVisit.BlindName, + TaskName = subjectVisit.VisitName, + CheckPassedTime = subjectVisit.CheckPassedTime, + ArmEnum = Arm.DoubleReadingArm2,//特殊 + Code = currentMaxCodeInt + 2, + SourceSubjectVisitId = subjectVisit.Id, + TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 2, nameof(VisitTask)), + ReadingCategory = ReadingCategory.Visit + }); + + currentMaxCodeInt = currentMaxCodeInt + 2; + + _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30)); + + + #region 分配 + if (isAssignSubjectToDoctor) + { + + + if (trialConfig.TaskAllocateObjEnum == TaskAllocateObj.Subject) + { + + if (trialConfig.IsFollowVisitAutoAssign) + { + + #region 验证历史任务 + + var allocateSubjectArmList = _visitTaskRepository.Where(t => t.SubjectId == subjectVisit.SubjectId && t.TrialId == trialId && t.DoctorUserId != null && t.ArmEnum != Arm.JudgeArm) + .Select(t => new { t.DoctorUserId, t.ArmEnum }).Distinct().ToList(); + + + //不是初次分配 直接分配给Subject 之前的医生 + if (allocateSubjectArmList.Count != 0) + { + if (_taskAllocationRuleRepository.Where(t => t.TrialId == trialId && t.IsEnable && t.IsJudgeDoctor == false).Count() < 2) + { + throw new BusinessValidationFailedException("能参与读片的医生数量必须大于2,自动分配任务中止"); + } + + if (allocateSubjectArmList.GroupBy(t => t.DoctorUserId).Any(g => g.Count() == 2)) + { + throw new BusinessValidationFailedException("请确认是否改了配置,导致同一受试者 分配给同一个医生 在不同的Arm,无法完成自动分配"); + } + + //手动分配的时候 如果只分配了Arm1 没有分配Arm2 就会有问题 + if (!(allocateSubjectArmList.Any(t => t.ArmEnum == Arm.DoubleReadingArm1) && allocateSubjectArmList.Any(t => t.ArmEnum == Arm.DoubleReadingArm2))) + { + throw new BusinessValidationFailedException("请确认是否改了配置,或者手动分配时,只分配了一个Arm "); + } + + //配置了医生 + if (assignConfigList.Count > 0) + { + var defaultState = trialConfig.FollowVisitAutoAssignDefaultState == TaskAllocateDefaultState.InitAllocated ? TaskState.InitAllocated : TaskState.Allocated; + + + task1.TaskState = defaultState; + task2.TaskState = defaultState; + + //分配给对应Arm的人 + task1.DoctorUserId = assignConfigList.FirstOrDefault(t => t.ArmEnum == Arm.DoubleReadingArm1).DoctorUserId; + task2.DoctorUserId = assignConfigList.FirstOrDefault(t => t.ArmEnum == Arm.DoubleReadingArm1).DoctorUserId; + } + + } + #endregion + + + + } + + //找到配置规则表 进行分配 + + + else + { + //后续Subect 不自动分配 不处理 + return; + } + } + + + task1.AllocateTime = DateTime.Now; + task2.AllocateTime = DateTime.Now; + } + + + #endregion + + await _visitTaskRepository.AddAsync(task1); + await _visitTaskRepository.AddAsync(task2); + + } + else if (trialConfig.ReadingType == ReadingMethod.Single) + { + + + var singleTask = await _visitTaskRepository.AddAsync(new VisitTask() + { + TrialId = trialId, + SubjectId = subjectVisit.SubjectId, + IsUrgent = subjectVisit.IsUrgent, + TaskBlindName = subjectVisit.BlindName, + TaskName = subjectVisit.VisitName, + CheckPassedTime = subjectVisit.CheckPassedTime, + ArmEnum = Arm.SingleReadingArm, //特殊 + Code = currentMaxCodeInt + 1, + SourceSubjectVisitId = subjectVisit.Id, + TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)), + ReadingCategory = ReadingCategory.Visit + }); + + singleTask.AllocateTime = DateTime.Now; + + currentMaxCodeInt = currentMaxCodeInt + 1; + + _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30)); + + #region 分配 + + if (isAssignSubjectToDoctor) + { + + if (trialConfig.TaskAllocateObjEnum == TaskAllocateObj.Subject) + { + + if (trialConfig.IsFollowVisitAutoAssign) + { + + + //该Subject 之前是否有已分配的 如果改变配置 可能会出现 一个Subject 分配的同一个医生 有的在Arm1 有的在Arm2 + var allocateSubjectArmList = _visitTaskRepository.Where(t => t.SubjectId == subjectVisit.SubjectId && t.TrialId == trialId && t.DoctorUserId != null && t.ArmEnum != Arm.JudgeArm) + .Select(t => new { t.DoctorUserId, t.ArmEnum }).Distinct().ToList(); + + //不是初次分配 + if (allocateSubjectArmList.Count != 0) + { + if (_taskAllocationRuleRepository.Where(t => t.TrialId == trialId && t.IsEnable).Count() < 2) + { + throw new BusinessValidationFailedException("能参与读片的医生数量必须大于2,自动分配任务中止"); + } + + //配置了医生 + if (assignConfigList.Count > 0) + { + var defaultState = trialConfig.FollowVisitAutoAssignDefaultState == TaskAllocateDefaultState.InitAllocated ? TaskState.InitAllocated : TaskState.Allocated; + + singleTask.TaskState = defaultState; + + singleTask.DoctorUserId = assignConfigList.FirstOrDefault(t => t.ArmEnum == 0).DoctorUserId; + } + } + + + } + else + { + //后续Subect 不自动分配 不处理 + return; + } + } + + } + #endregion + + + await _visitTaskRepository.AddAsync(singleTask); + } + + + await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.Id == subjectVisit.Id, u => new SubjectVisit() { IsVisitTaskGenerated = true }); + } + break; + case ReadingCategory.Judge: + var firstTask = await _visitTaskRepository.Where(x => generateTaskCommand.JudgeVisitTaskIdList.Contains(x.Id)).FirstOrDefaultAsync(); + + VisitTask visitTask = new VisitTask() + { + ArmEnum = Arm.JudgeArm, + Id = NewId.NextGuid(), + SubjectId = firstTask.SubjectId, + ReadingTaskState = ReadingTaskState.WaitReading, + TaskName = firstTask.TaskName, + ReadingCategory = ReadingCategory.Judge, + TrialId = firstTask.TrialId, + Code = currentMaxCodeInt + 1, + TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)), + }; + + await _visitTaskRepository.AddAsync(visitTask); + currentMaxCodeInt = currentMaxCodeInt + 1; + + _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30)); + + await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => generateTaskCommand.JudgeVisitTaskIdList.Contains(x.Id), x => new VisitTask() + { + JudgeVisitTaskId = visitTask.Id + }); + break; + + case ReadingCategory.ReadingPeriod: + case ReadingCategory.Global: + case ReadingCategory.Oncology: 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, - CheckPassedTime = subjectVisit.CheckPassedTime, - ArmEnum = Arm.DoubleReadingArm1,//特殊 - Code = currentMaxCodeInt + 1, - SourceSubjectVisitId = subjectVisit.Id, - TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)), - ReadingCategory = ReadingCategory.Visit - }); - - var task2 = await _visitTaskRepository.AddAsync(new VisitTask() - { - TrialId = trialId, - SubjectId = subjectVisit.SubjectId, - IsUrgent = subjectVisit.IsUrgent, - TaskBlindName = subjectVisit.BlindName, - TaskName = subjectVisit.VisitName, - CheckPassedTime = subjectVisit.CheckPassedTime, - ArmEnum = Arm.DoubleReadingArm2,//特殊 - Code = currentMaxCodeInt + 2, - SourceSubjectVisitId = subjectVisit.Id, - TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 2, nameof(VisitTask)), - ReadingCategory = ReadingCategory.Visit - }); - - currentMaxCodeInt = currentMaxCodeInt + 2; - - _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30)); - - - #region 分配 - if (isAssignSubjectToDoctor) - { - - - if (trialConfig.TaskAllocateObjEnum == TaskAllocateObj.Subject) + //每个访视 根据项目配置生成任务 双审生成两个 + var task1 = await _visitTaskRepository.AddAsync(new VisitTask() { - - if (trialConfig.IsFollowVisitAutoAssign) - { - - #region 验证历史任务 - - var allocateSubjectArmList = _visitTaskRepository.Where(t => t.SubjectId == subjectVisit.SubjectId && t.TrialId == trialId && t.DoctorUserId != null && t.ArmEnum != Arm.JudgeArm) - .Select(t => new { t.DoctorUserId, t.ArmEnum }).Distinct().ToList(); - - - //不是初次分配 直接分配给Subject 之前的医生 - if (allocateSubjectArmList.Count != 0) - { - if (_taskAllocationRuleRepository.Where(t => t.TrialId == trialId && t.IsEnable && t.IsJudgeDoctor == false).Count() < 2) - { - throw new BusinessValidationFailedException("能参与读片的医生数量必须大于2,自动分配任务中止"); - } - - if (allocateSubjectArmList.GroupBy(t => t.DoctorUserId).Any(g => g.Count() == 2)) - { - throw new BusinessValidationFailedException("请确认是否改了配置,导致同一受试者 分配给同一个医生 在不同的Arm,无法完成自动分配"); - } - - //手动分配的时候 如果只分配了Arm1 没有分配Arm2 就会有问题 - if (!(allocateSubjectArmList.Any(t => t.ArmEnum == Arm.DoubleReadingArm1) && allocateSubjectArmList.Any(t => t.ArmEnum == Arm.DoubleReadingArm2))) - { - throw new BusinessValidationFailedException("请确认是否改了配置,或者手动分配时,只分配了一个Arm "); - } - - //配置了医生 - if (assignConfigList.Count > 0) - { - var defaultState = trialConfig.FollowVisitAutoAssignDefaultState == TaskAllocateDefaultState.InitAllocated ? TaskState.InitAllocated : TaskState.Allocated; - - - task1.TaskState = defaultState; - task2.TaskState = defaultState; - - //分配给对应Arm的人 - task1.DoctorUserId = assignConfigList.FirstOrDefault(t => t.ArmEnum == Arm.DoubleReadingArm1).DoctorUserId; - task2.DoctorUserId = assignConfigList.FirstOrDefault(t => t.ArmEnum == Arm.DoubleReadingArm1).DoctorUserId; - } - - } - #endregion - - - - } - - //找到配置规则表 进行分配 - - - else - { - //后续Subect 不自动分配 不处理 - return; - } - } - - - task1.AllocateTime = DateTime.Now; - task2.AllocateTime = DateTime.Now; - } - - - #endregion - - await _visitTaskRepository.AddAsync(task1); - await _visitTaskRepository.AddAsync(task2); - - } - else if (trialConfig.ReadingType == ReadingMethod.Single) - { - - - var singleTask = await _visitTaskRepository.AddAsync(new VisitTask() - { - TrialId = trialId, - SubjectId = subjectVisit.SubjectId, - IsUrgent = subjectVisit.IsUrgent, - TaskBlindName = subjectVisit.BlindName, - TaskName = subjectVisit.VisitName, - CheckPassedTime = subjectVisit.CheckPassedTime, - ArmEnum = Arm.SingleReadingArm, //特殊 - Code = currentMaxCodeInt + 1, - SourceSubjectVisitId = subjectVisit.Id, - TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)), - ReadingCategory = ReadingCategory.Visit - }); - - singleTask.AllocateTime = DateTime.Now; - - currentMaxCodeInt = currentMaxCodeInt + 1; - - _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30)); - - #region 分配 - - if (isAssignSubjectToDoctor) - { - - if (trialConfig.TaskAllocateObjEnum == TaskAllocateObj.Subject) + 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 = item.ReadingCategory + }); + var task2 = await _visitTaskRepository.AddAsync(new VisitTask() { - - if (trialConfig.IsFollowVisitAutoAssign) - { - - - //该Subject 之前是否有已分配的 如果改变配置 可能会出现 一个Subject 分配的同一个医生 有的在Arm1 有的在Arm2 - var allocateSubjectArmList = _visitTaskRepository.Where(t => t.SubjectId == subjectVisit.SubjectId && t.TrialId == trialId && t.DoctorUserId != null && t.ArmEnum != Arm.JudgeArm) - .Select(t => new { t.DoctorUserId, t.ArmEnum }).Distinct().ToList(); - - //不是初次分配 - if (allocateSubjectArmList.Count != 0) - { - if (_taskAllocationRuleRepository.Where(t => t.TrialId == trialId && t.IsEnable).Count() < 2) - { - throw new BusinessValidationFailedException("能参与读片的医生数量必须大于2,自动分配任务中止"); - } - - //配置了医生 - if (assignConfigList.Count > 0) - { - var defaultState = trialConfig.FollowVisitAutoAssignDefaultState == TaskAllocateDefaultState.InitAllocated ? TaskState.InitAllocated : TaskState.Allocated; - - singleTask.TaskState = defaultState; - - singleTask.DoctorUserId = assignConfigList.FirstOrDefault(t => t.ArmEnum == 0).DoctorUserId; - } - } - - - } - else - { - //后续Subect 不自动分配 不处理 - return; - } - } - + 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 = item.ReadingCategory + }); + currentMaxCodeInt = currentMaxCodeInt + 2; + _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30)); } - #endregion - - - await _visitTaskRepository.AddAsync(singleTask); } + else + { + foreach (var item in generateTaskCommand.ReadingGenerataTaskList) + { + 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 = item.ReadingCategory + }); + singleTask.AllocateTime = DateTime.Now; - await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.Id == subjectVisit.Id, u => new SubjectVisit() { IsVisitTaskGenerated = true }); - } + currentMaxCodeInt = currentMaxCodeInt + 1; + _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30)); + } + } + break; } - else if (generateTaskCommand.ReadingCategory == ReadingCategory.Judge) - { - var firstTask = await _visitTaskRepository.Where(x => generateTaskCommand.JudgeVisitTaskIdList.Contains(x.Id)).FirstOrDefaultAsync(); - - VisitTask visitTask = new VisitTask() - { - ArmEnum = Arm.JudgeArm, - Id= NewId.NextGuid(), - SubjectId = firstTask.SubjectId, - ReadingTaskState = ReadingTaskState.WaitReading, - TaskName = firstTask.TaskName, - ReadingCategory = ReadingCategory.Judge, - TrialId = firstTask.TrialId, - Code = currentMaxCodeInt + 1, - TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)), - }; - - - await _visitTaskRepository.AddAsync(visitTask); - currentMaxCodeInt = currentMaxCodeInt + 1; - - _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30)); - - await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => generateTaskCommand.JudgeVisitTaskIdList.Contains(x.Id), x => new VisitTask() - { - JudgeVisitTaskId = visitTask.Id - }); - - - } - else if(generateTaskCommand.ReadingCategory == ReadingCategory.ReadingPeriod) - { - if (trialConfig.ReadingType == ReadingMethod.Double) - { - foreach (var item in generateTaskCommand.ReadingGenerataTaskList) - { - //每个访视 根据项目配置生成任务 双审生成两个 - 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($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30)); - } - } - else - { - foreach (var item in generateTaskCommand.ReadingGenerataTaskList) - { - 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; - - currentMaxCodeInt = currentMaxCodeInt + 1; - - _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30)); - } - - - - } - } - else if (generateTaskCommand.ReadingCategory == ReadingCategory.Oncology) - { - if (trialConfig.ReadingType == ReadingMethod.Double) - { - foreach (var item in generateTaskCommand.ReadingGenerataTaskList) - { - //每个访视 根据项目配置生成任务 双审生成两个 - 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.Oncology - }); - 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.Oncology - }); - currentMaxCodeInt = currentMaxCodeInt + 2; - _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 2, TimeSpan.FromMinutes(30)); - } - } - else - { - foreach (var item in generateTaskCommand.ReadingGenerataTaskList) - { - 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.Oncology - }); - - singleTask.AllocateTime = DateTime.Now; - - currentMaxCodeInt = currentMaxCodeInt + 1; - - _provider.Set($"{trialId }_{ StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt + 1, TimeSpan.FromMinutes(30)); - } - - - - } - } - - + await _visitTaskRepository.SaveChangesAsync(); }