diff --git a/IRaCIS.Core.API/Controllers/InspectionController.cs b/IRaCIS.Core.API/Controllers/InspectionController.cs index 963a5c08..94471623 100644 --- a/IRaCIS.Core.API/Controllers/InspectionController.cs +++ b/IRaCIS.Core.API/Controllers/InspectionController.cs @@ -569,8 +569,9 @@ namespace IRaCIS.Core.API.Controllers { return ResponseOutput.NotOk(fun.ErrorMessage); } - opt.AuditInfo.VisitStageId = Guid.Parse(fun.Data); - opt.OptCommand.Id = Guid.Parse(fun.Data); + opt.AuditInfo.VisitStageId = fun.Data.Id; + opt.OptCommand.Id = fun.Data.Id; + return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, null, fun); } @@ -599,6 +600,7 @@ namespace IRaCIS.Core.API.Controllers public async Task ConfirmTrialVisitPlan(DataInspectionDto opt) { var fun = _visitPlanService.ConfirmTrialVisitPlan; + opt.AuditInfo.NeedSava = false; return await _inspectionService.Enforcement(opt.OptCommand.Id, opt.AuditInfo, opt.SignInfo, fun); } diff --git a/IRaCIS.Core.Application/Service/Visit/Interface/IVisitPlanService.cs b/IRaCIS.Core.Application/Service/Visit/Interface/IVisitPlanService.cs index 4c2cb03c..381cff97 100644 --- a/IRaCIS.Core.Application/Service/Visit/Interface/IVisitPlanService.cs +++ b/IRaCIS.Core.Application/Service/Visit/Interface/IVisitPlanService.cs @@ -6,7 +6,7 @@ namespace IRaCIS.Application.Interfaces { public interface IVisitPlanService { - Task> AddOrUpdateVisitStage(VisitPlanCommand visitPlan); + Task> AddOrUpdateVisitStage(VisitPlanCommand visitPlan); Task ConfirmTrialVisitPlan(Guid trialId); Task DeleteVisitStage(Guid id); Task DownloadInflunceStudyList(Guid visitPlanInfluenceStatId); diff --git a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs index aeb4e3d0..5c46d95a 100644 --- a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs +++ b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs @@ -11,6 +11,7 @@ using Magicodes.ExporterAndImporter.Excel; using Magicodes.ExporterAndImporter.Excel.AspNetCore; using IRaCIS.Core.Application.Service.Inspection.Interface; using Newtonsoft.Json; +using IRaCIS.Core.Infrastructure; namespace IRaCIS.Application.Services { @@ -89,13 +90,14 @@ namespace IRaCIS.Application.Services /// 添加或更新访视计划某项[New] [HttpPost] [UnitOfWork] - public async Task> AddOrUpdateVisitStage(VisitPlanCommand visitPlan) + public async Task> AddOrUpdateVisitStage(VisitPlanCommand visitPlan) { DateTime createtime = DateTime.Now; - List datas = new List(); + if (!await _trialRepository.Where(t => t.Id == visitPlan.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialOngoing || t.TrialStatusStr == StaticData.TrialInitializing)) { - return ResponseOutput.NotOk(" only in Initializing or Ongoing State can operate "); + throw new BusinessValidationFailedException(" only in Initializing or Ongoing State can operate "); + } var visitPlanList = await _visitStageRepository.Where(t => t.TrialId == visitPlan.TrialId,ignoreQueryFilters:true) @@ -112,7 +114,8 @@ namespace IRaCIS.Application.Services //比当前 visitNum小的 visitDay的最大值 还小 不允许添加 if (visitPlan.VisitDay <= visitPlanList.Where(t => t.VisitNum < visitPlan.VisitNum).Select(t => t.VisitDay).Max()) { - return ResponseOutput.NotOk("For the visit plan, the VisitDay with a larger VisitNum should be larger than the VisitDay with a smaller VisitNum."); + throw new BusinessValidationFailedException(" For the visit plan, the VisitDay with a larger VisitNum should be larger than the VisitDay with a smaller VisitNum."); + } } @@ -120,7 +123,7 @@ namespace IRaCIS.Application.Services { if (visitPlan.VisitDay >= visitPlanList.Where(t => t.VisitNum > visitPlan.VisitNum).Select(t => t.VisitDay).Min()) { - return ResponseOutput.NotOk("For the visit plan, the VisitDay with a larger VisitNum should be larger than the VisitDay with a smaller VisitNum."); + throw new BusinessValidationFailedException("For the visit plan, the VisitDay with a larger VisitNum should be larger than the VisitDay with a smaller VisitNum."); } } @@ -129,12 +132,12 @@ namespace IRaCIS.Application.Services if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum), true)) { - return ResponseOutput.NotOk("A visit with the same VisitName/VisitNum already existed in the current visit plan."); + throw new BusinessValidationFailedException("A visit with the same VisitName/VisitNum already existed in the current visit plan."); } if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine, true) && visitPlan.IsBaseLine) { - return ResponseOutput.NotOk("A visit already is baseline in the current visit plan."); + throw new BusinessValidationFailedException("A visit already is baseline in the current visit plan."); } //已添加受试者 都不存在该新增的计划名称 那么该项目所有受试者都增加一个访视记录 @@ -158,19 +161,7 @@ namespace IRaCIS.Application.Services { svItem.VisitExecuted = VisitExecutedEnum.Unavailable; } - //datas.Add(new DataInspection() - //{ - // SubjectVisitId = svItem.Id, - // SubjectVisitName = svItem.VisitName, - // BlindName = visitPlan.BlindName, - // Identification = "Add|Visit|Info|Visit-Image Upload", - // SiteId = svItem.SiteId, - // TrialId = svItem.TrialId, - // SubjectId = svItem.SubjectId, - // IsSign = false, - // CreateTime = createtime, - // JsonDetail = JsonConvert.SerializeObject(svItem) - //}); + await _repository.AddAsync(svItem); @@ -184,16 +175,7 @@ namespace IRaCIS.Application.Services var result = await _repository.AddAsync(visitPlanItem); visitPlan.Id = result.Id; - //datas.Add(new DataInspection() - //{ - // BlindName = visitPlan.BlindName, - // Identification = "Add|Visit|Info|Visit-Image Upload", - // TrialId = visitPlan.TrialId, - // IsSign = false, - // CreateTime = createtime.AddSeconds(1), - // VisitStageId = result.Id, - // JsonDetail = JsonConvert.SerializeObject(visitPlan) - //}); + //更新项目访视计划状态为未确认 await _trialRepository.BatchUpdateAsync(u => u.Id == visitPlan.TrialId, t => new Trial() { VisitPlanConfirmed = false }); @@ -202,7 +184,7 @@ namespace IRaCIS.Application.Services //return ResponseOutput.Ok(result.Id.ToString()); - + return ResponseOutput.Ok(visitPlanItem); } else//update @@ -211,25 +193,25 @@ namespace IRaCIS.Application.Services if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum) && t.Id != visitPlan.Id,true)) { - return ResponseOutput.NotOk("A visit with the same VisitName/VisitNum already existed in the current visit plan."); + throw new BusinessValidationFailedException("A visit with the same VisitName/VisitNum already existed in the current visit plan."); } if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine && t.Id != visitPlan.Id,true) && visitPlan.IsBaseLine) { - return ResponseOutput.NotOk("A visit already is baseline in the current visit plan."); + throw new BusinessValidationFailedException("A visit already is baseline in the current visit plan."); } var stage = await _visitStageRepository.FirstOrDefaultAsync(t => t.Id == visitPlan.Id,true); - if (stage == null) return ResponseOutput.NotOk("None"); + if (stage == null) throw new BusinessValidationFailedException("None"); //修改是否是基线 if (stage.IsBaseLine && stage.IsBaseLine != visitPlan.IsBaseLine) { if (await _repository.Where(t => t.TrialId == visitPlan.TrialId).AnyAsync(v => v.IsBaseLine && v.SubmitState >= SubmitStateEnum.ToSubmit)) { - return ResponseOutput.NotOk("有CRC已经为基线上传了影像数据,不允许修改基线"); + throw new BusinessValidationFailedException("有CRC已经为基线上传了影像数据,不允许修改基线"); } } @@ -241,13 +223,13 @@ namespace IRaCIS.Application.Services //await _trialRepository.UpdateFromQueryAsync(u => u.Id == visitPlan.TrialId, t => new Trial() { VisitPlanConfirmed = false }); await _repository.SaveChangesAsync(); - + return ResponseOutput.Ok(stage); //return ResponseOutput.Ok(); } - await _inspectionService.AddListInspectionRecordAsync(datas); - return ResponseOutput.Ok(visitPlan.Id.Value.ToString()); + + } /// 删除项目计划某一项[New]