diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 13a2857bb..dbed0f7c8 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -146,20 +146,21 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc public async Task AddOrUpdateArchiveStudy(NewArchiveStudyCommand incommand) { - //var @uploadLock = _distributedLockProvider.CreateLock($"UploadDicom"); + var @uploadLock = _distributedLockProvider.CreateLock($"UploadDicom"); - //using (await @uploadLock.AcquireAsync()) - //{ - // if (_provider.Exists($"StudyUid_{incommand.TrialId}_{incommand.Study.StudyInstanceUid}")) - // { - // //---当前已有人正在上传和归档该检查! - // return ResponseOutput.NotOk(StaticData.International("UploadDownLoad_ArchiveInProgress")); - // } - // else - // { - // _provider.Set($"StudyUid_{incommand.TrialId}_{incommand.Study.StudyInstanceUid}", _userInfo.Id, TimeSpan.FromSeconds(30)); - // } - //} + using (await @uploadLock.AcquireAsync()) + { + if (_provider.Exists($"{incommand.TrialId}_{incommand.Study.StudyInstanceUid}")) + { + //---当前已有人正在上传和归档该检查! + return ResponseOutput.NotOk(StaticData.International("UploadDownLoad_ArchiveInProgress")); + } + else + { + //在事务未完成前 防止前端重复提交 + _provider.Set($"{incommand.TrialId}_{incommand.Study.StudyInstanceUid}", _userInfo.Id, TimeSpan.FromMinutes(3)); + } + } var modalitys = string.Empty; @@ -355,6 +356,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc finally { _provider.Remove($"StudyUid_{incommand.TrialId}_{incommand.Study.StudyInstanceUid}"); + _provider.Remove($"{incommand.TrialId}_{incommand.Study.StudyInstanceUid}"); }