From 874d94cefb6be1a2d93e1b5a378e07164b4e1db2 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 29 Aug 2025 14:30:38 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E7=BC=96=E8=AF=91=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Service/Visit/PatientService.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 0989156d6..1367fe3c5 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -7,7 +7,6 @@ using Microsoft.AspNetCore.Authorization; using IRaCIS.Core.Application.Auth; using MassTransit; using Panda.DynamicWebApi.Attributes; -using DocumentFormat.OpenXml.Spreadsheet; using AutoMapper.EntityFrameworkCore; using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Application.Service.Reading.Dto; @@ -24,32 +23,27 @@ using Medallion.Threading; using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Application.Contracts; using MailKit.Search; -using DocumentFormat.OpenXml.Office2010.Excel; using IRaCIS.Core.Application.Contracts.Dicom.DTO; using IRaCIS.Core.Application.Helper; using System.Linq; using System.Linq.Dynamic.Core; using System.Text; -using DocumentFormat.OpenXml.EMMA; using Azure; using System.IO.Compression; using static IRaCIS.Core.Domain.Share.StaticData; using FellowOakDicom; using IDistributedLockProvider = Medallion.Threading.IDistributedLockProvider; -using DocumentFormat.OpenXml.InkML; using Microsoft.AspNetCore.Hosting; using IRaCIS.Core.Infrastructure.Encryption; using FellowOakDicom.Network.Client; using FellowOakDicom.Network; using Microsoft.Extensions.Logging; -using DocumentFormat.OpenXml.Wordprocessing; using System; using IRaCIS.Core.Infra.EFCore.Migrations; using System.Dynamic; using System.Threading.Channels; using IRaCIS.Core.Application.Helper.OtherTool; using IRaCIS.Core.Infrastructure.Extention; -using NPOI.SS.Formula.Functions; namespace IRaCIS.Application.Services From 9de6a3c8135faead8023b21888a75ba7a6c68e65 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 29 Aug 2025 14:52:24 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs | 2 + .../Management/DTO/UserLogViewModel.cs | 35 -------- .../AfterSaveTrigger/UserLogAfterTrigger.cs | 84 +++++++++++++++++++ IRaCIS.Core.Domain/Management/UserLog.cs | 46 ++++++++++ 4 files changed, 132 insertions(+), 35 deletions(-) create mode 100644 IRaCIS.Core.Application/Triggers/AfterSaveTrigger/UserLogAfterTrigger.cs diff --git a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs index acbdea6db..f21ef5404 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs @@ -84,6 +84,8 @@ namespace IRaCIS.Core.API triggerOptions.AddTrigger(); + triggerOptions.AddTrigger(); + diff --git a/IRaCIS.Core.Application/Service/Management/DTO/UserLogViewModel.cs b/IRaCIS.Core.Application/Service/Management/DTO/UserLogViewModel.cs index 7f6742ce3..7b46ab67b 100644 --- a/IRaCIS.Core.Application/Service/Management/DTO/UserLogViewModel.cs +++ b/IRaCIS.Core.Application/Service/Management/DTO/UserLogViewModel.cs @@ -38,41 +38,6 @@ namespace IRaCIS.Core.Application.ViewModel public UserLogJsonObj UserObj => JsonObj.IsNotNullOrEmpty() ? JsonConvert.DeserializeObject(JsonObj) : new UserLogJsonObj(); } - public class UserLogJsonObj - { - public string FullName => LastName + " / " + FirstName; - - public string UserCode { get; set; } - public string UserName { get; set; } - public string EMail { get; set; } - - public string FirstName { get; set; } - - public string LastName { get; set; } - - public string Phone { get; set; } - - public int? Sex { get; set; } - - public UserStateEnum Status { get; set; } = UserStateEnum.Enable; - - public string OrganizationName { get; set; } - public string PositionName { get; set; } - - public string DepartmentName { get; set; } - - public List UserRoleList { get; set; } - - } - - public class UserRoleLogObj - { - public string UserTypeShortName { get; set; } - - public UserTypeEnum UserTypeEnum { get; set; } - - public bool IsUserRoleDisabled { get; set; } - } public class SetIsIgnoreUncommonlyInDto diff --git a/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/UserLogAfterTrigger.cs b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/UserLogAfterTrigger.cs new file mode 100644 index 000000000..cb4c62261 --- /dev/null +++ b/IRaCIS.Core.Application/Triggers/AfterSaveTrigger/UserLogAfterTrigger.cs @@ -0,0 +1,84 @@ +using AutoMapper.QueryableExtensions; +using EntityFrameworkCore.Triggered; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IRaCIS.Core.Application.Triggers.AfterSaveTrigger +{ + /// + /// 账户日志 记录账户每次操作的信息 + /// + /// + public class UserLogAfterTrigger(IRepository _identityUserRepository) : IAfterSaveTrigger + { + public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) + { + var userlog = context.Entity; + + if (context.ChangeType == ChangeType.Added) + { + + if (userlog.TargetIdentityUserId != null) + { + + //判断是否需要记录详情 + + if (userlog.OptType == UserOptType.AddUser || userlog.OptType == UserOptType.UpdateUser || userlog.OptType == UserOptType.UpdateUserRole + || userlog.OptType == UserOptType.AccountEnable || userlog.OptType == UserOptType.AccountLocked) + { + var obj = await _identityUserRepository.Where(t => t.Id == userlog.TargetIdentityUserId).Select(t => new UserLogJsonObj() + { + DepartmentName = t.DepartmentName, + EMail = t.EMail, + FirstName = t.FirstName, + LastName = t.LastName, + OrganizationName = t.OrganizationName, + Phone = t.Phone, + PositionName = t.PositionName, + Sex = t.Sex, + Status = t.Status, + UserCode = t.UserCode, + UserName = t.UserName, + UserRoleList = t.UserRoleList.Select(t => new UserRoleLogObj() + { + IsUserRoleDisabled = t.IsUserRoleDisabled, + UserTypeEnum = t.UserTypeEnum, + UserTypeShortName = t.UserTypeRole.UserTypeShortName + }).ToList(), + + HospitalGroupList = t.IdentityUserHospitalGroupList.Select(t => new HospitalGroupLogObj() + { + HospitalGroupId = t.HospitalGroupId, + Code = t.HospitalGroup.Code, + Name = t.HospitalGroup.Name, + }).ToList(), + + }).FirstOrDefaultAsync(); + + + + userlog.JsonObj = obj.ToJsonStr(); + } + + + + } + + if (userlog.ActionIdentityUserId != null && userlog.ActionUserName.IsNullOrWhiteSpace()) + { + userlog.ActionUserName = await _identityUserRepository.Where(t => t.Id == userlog.ActionIdentityUserId).Select(t => t.UserName).FirstOrDefaultAsync(); + } + + await _identityUserRepository.SaveChangesAsync(); + + + } + } + } + + + +} diff --git a/IRaCIS.Core.Domain/Management/UserLog.cs b/IRaCIS.Core.Domain/Management/UserLog.cs index 1cb847702..0b56839b6 100644 --- a/IRaCIS.Core.Domain/Management/UserLog.cs +++ b/IRaCIS.Core.Domain/Management/UserLog.cs @@ -64,3 +64,49 @@ public class UserLog : BaseAddAuditEntity } +public class UserLogJsonObj +{ + public string FullName => LastName + " / " + FirstName; + + public string UserCode { get; set; } + public string UserName { get; set; } + public string EMail { get; set; } + + public string FirstName { get; set; } + + public string LastName { get; set; } + + public string Phone { get; set; } + + public int? Sex { get; set; } + + public UserStateEnum Status { get; set; } = UserStateEnum.Enable; + + public string OrganizationName { get; set; } + public string PositionName { get; set; } + + public string DepartmentName { get; set; } + + public List UserRoleList { get; set; } + + public List HospitalGroupList { get; set; } + +} + + +public class UserRoleLogObj +{ + public string UserTypeShortName { get; set; } + + public UserTypeEnum UserTypeEnum { get; set; } + + public bool IsUserRoleDisabled { get; set; } +} + +public class HospitalGroupLogObj +{ + public Guid HospitalGroupId { get; set; } + public string Name { get; set; } + + public string Code { get; set; } +} \ No newline at end of file From d769d43d230cffb6550e1582f3eabfe9a179c2ce Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 29 Aug 2025 15:59:45 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=92=8C=E6=B7=BB=E5=8A=A0=E5=88=B0=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 12 ++++++++++ .../Service/Management/UserService.cs | 22 ++++++++++++++++++- .../TrialSiteUser/TrialMaintenanceService.cs | 2 +- .../Service/Visit/HospitalGroupService.cs | 3 ++- 4 files changed, 36 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index a6f8a7ba2..566eec40d 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -17471,6 +17471,18 @@ + + + 账户日志 记录账户每次操作的信息 + + + + + + 账户日志 记录账户每次操作的信息 + + + 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务 diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs index 565bf5052..57ed4c7a8 100644 --- a/IRaCIS.Core.Application/Service/Management/UserService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserService.cs @@ -1,4 +1,5 @@ -using IP2Region.Net.Abstractions; +using DocumentFormat.OpenXml.Bibliography; +using IP2Region.Net.Abstractions; using IRaCIS.Application.Contracts; using IRaCIS.Core.Application.Auth; using IRaCIS.Core.Application.Contracts; @@ -27,6 +28,7 @@ namespace IRaCIS.Core.Application.Service [ApiExplorerSettings(GroupName = "HIR")] public class UserService(IRepository _userRoleRepository, IMailVerificationService _mailVerificationService, + IRepository _trialIdentityUserRepository, IRepository _verificationCodeRepository, IRepository _hirHospitalRepository, IRepository _userTrialRepository, @@ -577,6 +579,24 @@ namespace IRaCIS.Core.Application.Service await _identityUserRepository.AddAsync(saveItem); var success = await _identityUserRepository.SaveChangesAsync(); + + if (userAddModel.UserName.IsNotNullOrEmpty()) + { + //自动添加到项目用户里面 + + var trialId = (Guid)userAddModel.TrialId; + + var currentUser = new TrialIdentityUser() + { + TrialId = trialId, + IdentityUserId = saveItem.Id, + JoinTime = DateTime.Now, + TrialUserRoleList = saveItem.UserRoleList.Select(t => new TrialUserRole() { UserId = t.Id, TrialId = trialId }).ToList() + }; + + + await _trialIdentityUserRepository.AddAsync(currentUser); + } } if (hospitalInfo.IsCanConnectInternet) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs index 96808117a..013482a8a 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs @@ -126,7 +126,7 @@ namespace IRaCIS.Core.Application.Service //.Where(t => userTypeEnums.Contains(t.UserTypeEnum)) .Where(t => t.IdentityUser.Status == UserStateEnum.Enable && t.IsUserRoleDisabled == false) - .Where(t => t.IdentityUser.IdentityUserHospitalGroupList.Any(t => t.HospitalGroupId == hospitalGroupId)) + .Where(t => t.IdentityUser.IdentityUserHospitalGroupList.Any(t => t.HospitalGroupId == hospitalGroupId && t.IsDisabled == false)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.IdentityUser.FullName).Contains(inQuery.UserRealName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.IdentityUser.UserName.Contains(inQuery.UserName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.IdentityUser.OrganizationName.Contains(inQuery.OrganizationName)) diff --git a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs index 94aa77e37..636522376 100644 --- a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs +++ b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs @@ -26,7 +26,8 @@ public class HospitalGroupService(IRepository _hospitalGroupRepos public async Task> GetGAUserList(Guid hospitalGroupId) { - var list = await _identityUserRepository.Where(t => t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.GA && t.IsUserRoleDisabled == false) && t.IdentityUserHospitalGroupList.Any(t => t.HospitalGroupId == hospitalGroupId)) + var list = await _identityUserRepository.Where(t => t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.GA && t.IsUserRoleDisabled == false) + && t.IdentityUserHospitalGroupList.Any(t => t.HospitalGroupId == hospitalGroupId && t.IsDisabled == false)) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); return list; From be5fc58ef7f25550c85c7e6adcaf5a8886aeb1b5 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 29 Aug 2025 16:37:01 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9GA=E8=AF=BE=E9=A2=98?= =?UTF-8?q?=E7=BB=84=E7=AE=A1=E7=90=86=E5=91=98=E6=9F=A5=E8=AF=A2=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/IRaCIS.Core.Application.xml | 2 +- .../Service/Visit/DTO/HospitalGroupViewModel.cs | 6 ++++++ .../Service/Visit/HospitalGroupService.cs | 8 ++++---- IRaCIS.Core.Application/Service/Visit/_MapConfig.cs | 8 +++++++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 566eec40d..78dce940a 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -13604,7 +13604,7 @@ - + GA用户列表 diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs index 1ef4fb034..eea376683 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/HospitalGroupViewModel.cs @@ -62,7 +62,13 @@ public class HospitalGroupQuery : PageInput } +public class UserHospitalGroupAdminInfo : HospitalGroupAdminUserInfo +{ + public bool IsUserDisabled { get; set; } + public bool IsGACurrentHospitalDisabled { get; set; } + public bool IsGARoleDisabled { get; set; } +} public class HospitalGroupAdminUserInfo { diff --git a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs index 636522376..43f8930e4 100644 --- a/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs +++ b/IRaCIS.Core.Application/Service/Visit/HospitalGroupService.cs @@ -24,11 +24,11 @@ public class HospitalGroupService(IRepository _hospitalGroupRepos /// /// - public async Task> GetGAUserList(Guid hospitalGroupId) + public async Task> GetGAUserList(Guid hospitalGroupId, bool isAdd) { - var list = await _identityUserRepository.Where(t => t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.GA && t.IsUserRoleDisabled == false) - && t.IdentityUserHospitalGroupList.Any(t => t.HospitalGroupId == hospitalGroupId && t.IsDisabled == false)) - .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var list = await _identityUserRepository.Where(t => t.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.GA /*&& t.IsUserRoleDisabled == false*/) + && t.IdentityUserHospitalGroupList.Any(t => t.HospitalGroupId == hospitalGroupId /*&& t.IsDisabled == false*/) /*&& t.Status==UserStateEnum.Enable*/) + .ProjectTo(_mapper.ConfigurationProvider, new { hostpitalGroupId = hospitalGroupId }).ToListAsync(); return list; } diff --git a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs index 57e7c7986..df87ae7b1 100644 --- a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs @@ -206,7 +206,7 @@ namespace IRaCIS.Core.Application.Service CreateMap() - .ForMember(d => d.GAUserList, u => u.MapFrom(s => s.IdentityUserList.Where(t=>t.IsManager).Select(t => t.IdentityUser))) + .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.IdentityUserId))); @@ -215,6 +215,12 @@ namespace IRaCIS.Core.Application.Service CreateMap(); + var hostpitalGroupId = Guid.Empty; + CreateMap() + .ForMember(d => d.IsGARoleDisabled, u => u.MapFrom(s => s.UserRoleList.Any(t => t.UserTypeEnum == UserTypeEnum.GA && t.IsUserRoleDisabled))) + .ForMember(d => d.IsUserDisabled, u => u.MapFrom(s => s.Status == UserStateEnum.Disable)) + .ForMember(d => d.IsGACurrentHospitalDisabled, u => u.MapFrom(s => s.IdentityUserHospitalGroupList.Any(t => t.IsDisabled && t.HospitalGroupId == hostpitalGroupId))); + From 87c22f1033cc153af16a525235522675ea41918e Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 29 Aug 2025 17:34:27 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=AF=BE=E9=A2=98=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Service/Visit/PatientService.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 1367fe3c5..80bc46697 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -858,6 +858,12 @@ namespace IRaCIS.Application.Services { foreach (var hospitalGroupId in incommand.HospitalGroupIdList) { + if (_studySubjectVisitRepository.Any(t => t.SCPStudy.HospitalGroupList.Any(c => c.HospitalGroupId == hospitalGroupId))) + { + //已经添加到项目,不允许删除课题组 + return ResponseOutput.NotOk(_localizer["Patient_StudyHospitalGroupBinded"]); + } + await _SCPStudyHospitalGroupRepository.DeleteFromQueryAsync(t => t.HospitalGroupId == hospitalGroupId && t.SCPStudyId == item); } @@ -2171,7 +2177,7 @@ namespace IRaCIS.Application.Services VisitMinStudyTime = g.Min(c => c.StudyTime) }).ToList(); - var list = _subjectVisitReposiotry.Where(t => t.SubjectId == inQuery.SubjectId).ProjectTo(_mapper.ConfigurationProvider).ToList(); + var list = _subjectVisitReposiotry.Where(t => t.SubjectId == inQuery.SubjectId).ProjectTo(_mapper.ConfigurationProvider).OrderBy(t=>t.VisitNum).ToList(); foreach (var item in list) { From 5d1499025bd3871b797233e8117930b834566d19 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 29 Aug 2025 17:47:11 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=BE=E9=A2=98?= =?UTF-8?q?=E7=BB=84=E5=88=A0=E9=99=A4=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Visit/PatientService.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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) { From e143cb0e738c0117c37fe1e3796742e5e8e26a08 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 29 Aug 2025 18:09:59 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=91=E5=AE=9Abug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Visit/PatientService.cs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 727f85b8d..4b9fe806c 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -1257,7 +1257,7 @@ namespace IRaCIS.Application.Services MaxStudyTime = t.SCPStudySubjectVisitList.Max(t => t.SCPStudy.StudyTime), MinStudyTime = t.SCPStudySubjectVisitList.Min(t => t.SCPStudy.StudyTime) }) - .ToListAsync(); + .OrderBy(t => t.VisitNum).ToListAsync(); //2、获取项目配置 @@ -1265,7 +1265,26 @@ namespace IRaCIS.Application.Services //3、 未提交的最小的访视号 从这个访视开始绑定 因为重新开始绑定,所以将访视未提交的状态重置 - var subjectMaxVisitNum = startBindVisitNum == null ? subjectAllVisitList.Where(t => t.SubmitState != SubmitStateEnum.Submitted).MinOrDefault(t => t.VisitNum) : startBindVisitNum.Value; + decimal subjectMaxVisitNum = 0; + + if (startBindVisitNum == null) + { + if (subjectAllVisitList.Any(t => t.SubmitState != SubmitStateEnum.Submitted)) + { + subjectMaxVisitNum = subjectAllVisitList.Where(t => t.SubmitState != SubmitStateEnum.Submitted).MinOrDefault(t => t.VisitNum); + } + else + { + //没有未提交的,那么开始绑定的就是已提交的加1 + subjectMaxVisitNum = subjectAllVisitList.Last().VisitNum + 1; + } + } + else + { + subjectMaxVisitNum = startBindVisitNum.Value; + } + + //var subjectMaxVisitNum = startBindVisitNum == null ? subjectAllVisitList.Where(t => t.SubmitState != SubmitStateEnum.Submitted).MinOrDefault(t => t.VisitNum) : startBindVisitNum.Value; await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectId && t.SubmitState != SubmitStateEnum.Submitted && t.VisitNum > subjectMaxVisitNum, c => new SubjectVisit() { SubmitState = SubmitStateEnum.None });