From 73f1f2938f294d0a5274e187542c86d4979257c9 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 18 Aug 2025 13:42:04 +0800 Subject: [PATCH] =?UTF-8?q?HIR=20=E8=AF=BE=E9=A2=98=E7=BB=84=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_ServiceExtensions/SwaggerSetup.cs | 4 +- .../IRaCIS.Core.Application.xml | 20 +++++++ .../Service/Management/UserService.cs | 2 +- .../Visit/DTO/HospitalGroupViewModel.cs | 19 ++++++ .../Service/Visit/HospitalGroupService.cs | 59 ++++++++++++++++--- .../Service/Visit/PatientService.cs | 2 +- .../Service/Visit/_MapConfig.cs | 26 +++++--- .../Management/HospitalGroup.cs | 19 ++++++ 8 files changed, 132 insertions(+), 19 deletions(-) diff --git a/IRaCIS.Core.API/_ServiceExtensions/SwaggerSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/SwaggerSetup.cs index e2878576b..2552950d0 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/SwaggerSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/SwaggerSetup.cs @@ -16,8 +16,8 @@ namespace IRaCIS.Core.API; public enum SwaggerVersion { - [Description("测试")] - Test = -1, + [Description("HIR修改")] + HIR = -1, [Description("医生模块")] Reviewer = 1, diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 87569ee7c..72bead5d5 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -13564,6 +13564,26 @@ + + + GA用户列表 + + + + + + 不分页课题组列表 + + + + + + + 分页课题组列表 + + + + 添加或更新受试者信息[New] diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs index 00e8d1f84..b65c6ec47 100644 --- a/IRaCIS.Core.Application/Service/Management/UserService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserService.cs @@ -23,7 +23,7 @@ using LoginReturnDTO = IRaCIS.Application.Contracts.LoginReturnDTO; namespace IRaCIS.Core.Application.Service { - [ApiExplorerSettings(GroupName = "Management")] + [ApiExplorerSettings(GroupName = "HIR")] public class UserService(IRepository _userRoleRepository, IMailVerificationService _mailVerificationService, IRepository _verificationCodeRepository, diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs index 17cc81945..0518e0ae4 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs @@ -16,6 +16,8 @@ public class HospitalGroupView : HospitalGroupAddOrEdit public DateTime UpdateTime { get; set; } + public List GAUserList { get; set; } + } @@ -32,6 +34,8 @@ public class HospitalGroupAddOrEdit public string ContactPhone { get; set; } public string Name { get; set; } + + public List IdentityUserIdList { get; set; } } public class HospitalGroupQuery : PageInput @@ -50,3 +54,18 @@ public class HospitalGroupQuery : PageInput +public class HospitalGroupAdminUserInfo +{ + public Guid Id { get; set; } + + public string UserName { get; set; } + + public string FullName { get; set; } + + public string Email { get; set; } + +} + + + + diff --git a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs index 967b17e4d..0753d5dad 100644 --- a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs +++ b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs @@ -14,14 +14,29 @@ using IRaCIS.Core.Infra.EFCore; using IRaCIS.Application.Contracts; namespace IRaCIS.Core.Application.Service; -[ApiExplorerSettings(GroupName = "Test")] +[ApiExplorerSettings(GroupName = "HIR")] public class HospitalGroupService(IRepository _hospitalGroupRepository, + IRepository _identityUserRepository, IRepository _hospitalGroupIdentityUserRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IHospitalGroupService { + /// + /// GA用户列表 + /// + /// + + public async Task> GetGAUserList() + { + var list = await _identityUserRepository.Where(t => t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.GA)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + return list; + } - - + /// + /// 不分页课题组列表 + /// + /// + /// [HttpPost] public async Task> GetHospitalGroupList(HospitalGroupQuery inQuery) { @@ -32,14 +47,18 @@ public class HospitalGroupService(IRepository _hospitalGroupRepos .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Affiliation), t => t.Affiliation.Contains(inQuery.Affiliation)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactPhone), t => t.ContactPhone.Contains(inQuery.ContactPhone)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactName), t => t.ContactName.Contains(inQuery.ContactName)) - .ProjectTo(_mapper.ConfigurationProvider); + .ProjectTo(_mapper.ConfigurationProvider); var pageList = await hospitalGroupQueryable.SortToListAsync(inQuery); return pageList; } - + /// + /// 分页课题组列表 + /// + /// + /// [HttpPost] public async Task> GetHospitalGroupPageList(HospitalGroupQuery inQuery) { @@ -50,7 +69,7 @@ public class HospitalGroupService(IRepository _hospitalGroupRepos .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Affiliation), t => t.Affiliation.Contains(inQuery.Affiliation)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactPhone), t => t.ContactPhone.Contains(inQuery.ContactPhone)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ContactName), t => t.ContactName.Contains(inQuery.ContactName)) - .ProjectTo(_mapper.ConfigurationProvider); + .ProjectTo(_mapper.ConfigurationProvider); var pageList = await hospitalGroupQueryable.ToPagedListAsync(inQuery); @@ -67,10 +86,34 @@ public class HospitalGroupService(IRepository _hospitalGroupRepos VerifyMsg = _localizer["HospitalGroup_DuplicateCode"] }; + if (addOrEditHospitalGroup.Id == null) + { - var entity = await _hospitalGroupRepository.InsertOrUpdateAsync(addOrEditHospitalGroup, true, verifyExp1); + var addEntity = _mapper.Map(addOrEditHospitalGroup); - return ResponseOutput.Ok(entity.Id.ToString()); + addEntity.IdentityUserList = addOrEditHospitalGroup.IdentityUserIdList.Select(t => new HospitalGroupIdentityUser() { IdentityUserId = t }).ToList(); + + var newEntity = await _hospitalGroupRepository.AddAsync(addEntity, true, verifyExp1); + + return ResponseOutput.Ok(newEntity.Id.ToString()); + } + else + { + await _hospitalGroupIdentityUserRepository.BatchDeleteNoTrackingAsync(t => t.HospitalGroupId == addOrEditHospitalGroup.Id && t.IsManager); + + //var find = await _hospitalGroupRepository.FirstOrDefaultAsync(t => t.Id == addOrEditHospitalGroup.Id); + + //_mapper.Map(addOrEditHospitalGroup, find); + + var adminUserList = addOrEditHospitalGroup.IdentityUserIdList.Select(t => new HospitalGroupIdentityUser() { IdentityUserId = t, HospitalGroupId = (Guid)addOrEditHospitalGroup.Id }).ToList(); + + await _hospitalGroupIdentityUserRepository.AddRangeAsync(adminUserList); + var entity = await _hospitalGroupRepository.UpdateFromDTOAsync(addOrEditHospitalGroup, false, false, verifyExp1); + + + } + + return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 7225513d2..2eb3b178c 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -57,7 +57,7 @@ using IRaCIS.Core.Application.Helper.OtherTool; namespace IRaCIS.Application.Services { - [ApiExplorerSettings(GroupName = "Trial")] + [ApiExplorerSettings(GroupName = "HIR")] public class PatientService(IRepository _studySubjectVisitRepository, IRepository _subjectPatientRepository, IRepository _trialRepository, diff --git a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs index 4f96e4055..120ec68fb 100644 --- a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs @@ -32,7 +32,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUserRole.UserTypeEnum)); CreateMap(); - + CreateMap() .ForMember(d => d.CreateUser, u => u.MapFrom(g => g.CreateUserRole.LastName + " / " + g.CreateUserRole.FirstName)); @@ -114,7 +114,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.CallingAEList, u => u.MapFrom(s => s.SCPStudyList.Select(t => t.CallingAE).Distinct())) .ForMember(d => d.PatientId, u => u.MapFrom(s => s.Id)); - CreateMap().IncludeMembers(t=>t.SCPStudy) + CreateMap().IncludeMembers(t => t.SCPStudy) .ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName)); CreateMap() @@ -136,13 +136,13 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(d => d.TrialId, u => u.MapFrom(s => s.Id)) - .ForMember(d => d.UnSubmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t=>t.SubmitState==SubmitStateEnum.ToSubmit))) - .ForMember(d => d.UnReadCount, u => u.MapFrom(s => s.VisitTaskList.Count(t=>t.TaskState==TaskState.Effect && t.SignTime==null))) + .ForMember(d => d.UnSubmitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.SubmitState == SubmitStateEnum.ToSubmit))) + .ForMember(d => d.UnReadCount, u => u.MapFrom(s => s.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.SignTime == null))) ; CreateMap() .ForMember(d => d.DictionaryList, u => u.MapFrom(s => s.TrialDicList.Select(t => t.Dictionary).OrderBy(t => t.ShowOrder))); - + CreateMap() .ForMember(d => d.SCPStudyId, u => u.MapFrom(s => s.Id)); @@ -161,7 +161,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.ExperimentName, u => u.MapFrom(s => s.Subject.Trial.ExperimentName)); CreateMap(); - + CreateMap(); @@ -202,8 +202,20 @@ namespace IRaCIS.Core.Application.Service - CreateMap(); + CreateMap() + .ForMember(d => d.GAUserList, u => u.MapFrom(s => s.IdentityUserList.Where(t => t.IsManager).Select(t => t.IdentityUser))) + .ForMember(d => d.IdentityUserIdList, u => u.MapFrom(s => s.IdentityUserList.Where(t => t.IsManager).Select(t => t.IdentityUser.Id))); + + CreateMap().ReverseMap(); + + + CreateMap(); + + + + + } } diff --git a/IRaCIS.Core.Domain/Management/HospitalGroup.cs b/IRaCIS.Core.Domain/Management/HospitalGroup.cs index e72625fcc..8dff639a0 100644 --- a/IRaCIS.Core.Domain/Management/HospitalGroup.cs +++ b/IRaCIS.Core.Domain/Management/HospitalGroup.cs @@ -12,6 +12,13 @@ namespace IRaCIS.Core.Domain.Models [Comment("课题组")] public class HospitalGroup : BaseFullAuditEntity { + #region 导航属性 + [JsonIgnore] + public List IdentityUserList { get; set; } + + #endregion + + public string Name { get; set; } public string Code { get; set; } @@ -23,11 +30,23 @@ namespace IRaCIS.Core.Domain.Models public string ContactPhone { get; set; } + + + } [Comment("用户课题组中间关系表")] public class HospitalGroupIdentityUser : BaseFullAuditEntity { + #region 导航属性 + [JsonIgnore] + public HospitalGroup HospitalGroup { get; set; } + + [JsonIgnore] + public IdentityUser IdentityUser { get; set; } + #endregion + + public Guid HospitalGroupId { get; set; }