diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 80bc46697..727f85b8d 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -858,10 +858,10 @@ namespace IRaCIS.Application.Services { foreach (var hospitalGroupId in incommand.HospitalGroupIdList) { - if (_studySubjectVisitRepository.Any(t => t.SCPStudy.HospitalGroupList.Any(c => c.HospitalGroupId == hospitalGroupId))) + if (_studySubjectVisitRepository.Where(t => t.SCPStudyId == item).Any(t => t.SCPStudy.HospitalGroupList.Any(c => c.HospitalGroupId == hospitalGroupId))) { //已经添加到项目,不允许删除课题组 - return ResponseOutput.NotOk(_localizer["Patient_StudyHospitalGroupBinded"]); + return ResponseOutput.NotOk(_localizer["Patient_StudyHospitalGroupBinded"]); } await _SCPStudyHospitalGroupRepository.DeleteFromQueryAsync(t => t.HospitalGroupId == hospitalGroupId && t.SCPStudyId == item); @@ -876,6 +876,16 @@ namespace IRaCIS.Application.Services //更新 foreach (var item in incommand.SCPstudyIdList) { + var existList = _SCPStudyHospitalGroupRepository.Where(t => t.SCPStudyId == item).Select(t => t.HospitalGroupId).ToList(); + + var deleteIdList = existList.Except(incommand.HospitalGroupIdList); + + if (_studySubjectVisitRepository.Where(t => t.SCPStudyId == item).Any(t => t.SCPStudy.HospitalGroupList.Any(c => deleteIdList.Contains(c.HospitalGroupId)))) + { + //已经添加到项目,不允许删除课题组 + return ResponseOutput.NotOk(_localizer["Patient_StudyHospitalGroupBinded"]); + } + await _SCPStudyHospitalGroupRepository.BatchDeleteNoTrackingAsync(t => t.SCPStudyId == item); foreach (var hospitalGroupId in incommand.HospitalGroupIdList) @@ -2177,7 +2187,7 @@ namespace IRaCIS.Application.Services VisitMinStudyTime = g.Min(c => c.StudyTime) }).ToList(); - var list = _subjectVisitReposiotry.Where(t => t.SubjectId == inQuery.SubjectId).ProjectTo(_mapper.ConfigurationProvider).OrderBy(t=>t.VisitNum).ToList(); + var list = _subjectVisitReposiotry.Where(t => t.SubjectId == inQuery.SubjectId).ProjectTo(_mapper.ConfigurationProvider).OrderBy(t => t.VisitNum).ToList(); foreach (var item in list) {