diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index eaf2b1520..476fb5cf4 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -504,6 +504,8 @@ namespace IRaCIS.Core.Application.ViewModel public Guid TrialId { get; set; } + public bool IsCopyOrigenalForms { get; set; } + public RequestReReadingType RequestReReadingType { get; set; } public string RequestReReadingReason { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index d75eb2e03..6bded7b8a 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -32,10 +32,12 @@ namespace IRaCIS.Core.Application.Service private readonly IRepository _visitTaskReReadingRepository; + private readonly IRepository _readingTaskQuestionAnswerRepository; + public VisitTaskService(IRepository visitTaskRepository, IRepository trialRepository, IRepository subjectVisitRepository, IRepository subjectRepository, IRepository subjectUserRepository, IRepository taskAllocationRuleRepository, - IRepository readModuleRepository, IRepository visitTaskReReadingRepository + IRepository readModuleRepository, IRepository visitTaskReReadingRepository, IRepository readingTaskQuestionAnswerRepository ) { _taskAllocationRuleRepository = taskAllocationRuleRepository; @@ -46,6 +48,7 @@ namespace IRaCIS.Core.Application.Service _subjectUserRepository = subjectUserRepository; _readModuleRepository = readModuleRepository; _visitTaskReReadingRepository = visitTaskReReadingRepository; + _readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; } @@ -1044,23 +1047,29 @@ namespace IRaCIS.Core.Application.Service foreach (var item in agreeReReadingCommand.ConfirmReReadingList) { - await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == item.OriginalReReadingTaskId, u => new VisitTask() - { - ReReadingApplyState = (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? ReReadingApplyState.Agree : ReReadingApplyState.Reject), - TaskState = (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? TaskState.HaveReturned : TaskState.Effect) + //await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == item.OriginalReReadingTaskId, u => new VisitTask() + //{ + // ReReadingApplyState = (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? ReReadingApplyState.Agree : ReReadingApplyState.Reject), + // TaskState = (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? TaskState.HaveReturned : TaskState.Effect) - }); + //}); + var origenalTask = (await _visitTaskRepository.Where(t => item.OriginalReReadingTaskId == t.Id, true).FirstOrDefaultAsync()).IfNullThrowException(); + //更新原始任务 + origenalTask.ReReadingApplyState = (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? ReReadingApplyState.Agree : ReReadingApplyState.Reject); + origenalTask.TaskState = (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree ? TaskState.HaveReturned : origenalTask.TaskState); + + //更新申请信息 + var visitTaskReReadingAppply = await _visitTaskReReadingRepository.FirstOrDefaultAsync(t => t.Id == item.Id); + visitTaskReReadingAppply.RequestReReadingConfirmUserId = _userInfo.Id; + visitTaskReReadingAppply.RequestReReadingResultEnum = agreeReReadingCommand.RequestReReadingResultEnum; + visitTaskReReadingAppply.RequestReReadingRejectReason = agreeReReadingCommand.RequestReReadingRejectReason; if (agreeReReadingCommand.RequestReReadingResultEnum == RequestReReadingResult.Agree) { - var origenalTask = (await _visitTaskRepository.Where(t => item.OriginalReReadingTaskId == t.Id).FirstOrDefaultAsync()).IfNullThrowException(); - - - - //产生的新任务,状态保持跟申请的一致 + //产生的新任务 await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand() { @@ -1074,19 +1083,20 @@ namespace IRaCIS.Core.Application.Service Action = (newTask) => { + visitTaskReReadingAppply.NewReReadingTaskId = newTask.Id; - _visitTaskReReadingRepository.UpdatePartialFromQueryAsync(t => t.Id == item.Id, u => new VisitTaskReReading() - { - RequestReReadingConfirmUserId = _userInfo.Id, - RequestReReadingResultEnum = agreeReReadingCommand.RequestReReadingResultEnum, - RequestReReadingRejectReason = agreeReReadingCommand.RequestReReadingRejectReason, - - NewReReadingTaskId = newTask.Id, - }).Wait(); if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer) { + if (visitTaskReReadingAppply.IsCopyOrigenalForms) + { + var origenalAnswerList = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + + origenalAnswerList.ForEach(t => { t.VisitTaskId = newTask.Id}); + + _readingTaskQuestionAnswerRepository.AddRangeAsync(origenalAnswerList); + } } //PM 立即分配 diff --git a/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs b/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs index 04dcfb2a8..913f57247 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs @@ -58,6 +58,8 @@ namespace IRaCIS.Core.Domain.Models public User RequestReReadingConfirmUser { get; set; } + + public bool IsCopyOrigenalForms { get; set; } public Guid CreateUserId { get; set; }