diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 139b6bb2f..d0e3ea134 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -1772,85 +1772,84 @@ namespace IRaCIS.Core.Application.Image.QA - [HttpGet("{trialId:guid}/{subjectVisitId:guid}")] - public async Task ForwardSVDicomImage(Guid subjectVisitId, [FromServices] DicomFileStoreHelper _dicomFileStoreHelper) + [HttpPost("{trialId:guid}")] + public async Task ForwardSVDicomImage(Guid[] subjectVisitIdList, [FromServices] DicomFileStoreHelper _dicomFileStoreHelper) { - - var info = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); - - var targetPath = "/IMPORT-IMAGES/" + info.TrialCode + "_" + info.SubjectCode + "_" + info.VisitName; - - var path = _dicomFileStoreHelper.GetSubjectVisitPath(info.TrialId, info.SiteId, info.SubjectId, info.SubjectVisitId); - - try + foreach (var subjectVisitId in subjectVisitIdList) { - // 主机及端口信息后面可以改到 配置文件 - SessionOptions sessionOptions = new SessionOptions + var info = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); + + var targetPath = "/IMPORT-IMAGES/" + info.TrialCode + "_" + info.SubjectCode + "_" + info.VisitName; + + var path = _dicomFileStoreHelper.GetSubjectVisitPath(info.TrialId, info.SiteId, info.SubjectId, info.SubjectVisitId); + + try { - Protocol = Protocol.Sftp, - PortNumber = 8022, - HostName = "CS-690-sftp.mint-imaging.com", - UserName = "zdong", - Password = "Everest@2021", - SshHostKeyFingerprint = @"ecdsa-sha2-nistp384 384 59gkjJ5lMwv3jsB8Wz2B35tBAIor5pSd8PcJYtoamPo=" - }; - - using (Session session = new Session()) - { - var studyFolders = (new DirectoryInfo(path)).GetDirectories(); - - session.Open(sessionOptions); - - if (!session.FileExists(targetPath)) + // 主机及端口信息后面可以改到 配置文件 + SessionOptions sessionOptions = new SessionOptions { - session.CreateDirectory(targetPath); - } + Protocol = Protocol.Sftp, + PortNumber = 8022, + HostName = "CS-690-sftp.mint-imaging.com", + UserName = "zdong", + Password = "Everest@2021", + SshHostKeyFingerprint = @"ecdsa-sha2-nistp384 384 59gkjJ5lMwv3jsB8Wz2B35tBAIor5pSd8PcJYtoamPo=" + }; - foreach (var studyFolder in studyFolders) + using (Session session = new Session()) { - if (!session.FileExists(Path.Combine(targetPath, studyFolder.Name))) + var studyFolders = (new DirectoryInfo(path)).GetDirectories(); + + session.Open(sessionOptions); + + if (!session.FileExists(targetPath)) { session.CreateDirectory(targetPath); } - foreach (var file in studyFolder.GetFiles()) + foreach (var studyFolder in studyFolders) { - if (file.Extension.Contains("dcm", StringComparison.OrdinalIgnoreCase)) + if (!session.FileExists(Path.Combine(targetPath, studyFolder.Name))) { - string remoteFilePath = - RemotePath.TranslateLocalPathToRemote(file.FullName, studyFolder.FullName, targetPath); + session.CreateDirectory(targetPath); + } - var result = session.PutFiles(file.FullName, remoteFilePath, false); - - if (!result.IsSuccess) + foreach (var file in studyFolder.GetFiles()) + { + if (file.Extension.Contains("dcm", StringComparison.OrdinalIgnoreCase)) { - await _subjectVisitRepository.UpdateFromQueryAsync(t => t.Id == subjectVisitId, - u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed }); + string remoteFilePath = + RemotePath.TranslateLocalPathToRemote(file.FullName, studyFolder.FullName, targetPath); - return ResponseOutput.NotOk("Forward Failed" + result.Failures.ToString() + result.ToJson()); + var result = session.PutFiles(file.FullName, remoteFilePath, false); + + if (!result.IsSuccess) + { + await _subjectVisitRepository.UpdateFromQueryAsync(t => t.Id == subjectVisitId, + u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed }); + + return ResponseOutput.NotOk("Forward Failed" + result.Failures.ToString() + result.ToJson()); + } } } } + } } + catch (Exception e) + { - } - catch (Exception e) - { - + await _subjectVisitRepository.UpdateFromQueryAsync(t => t.Id == subjectVisitId, + u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed }); + } await _subjectVisitRepository.UpdateFromQueryAsync(t => t.Id == subjectVisitId, - u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed }); - - + u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded }); } - - await _subjectVisitRepository.UpdateFromQueryAsync(t => t.Id == subjectVisitId, - u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded }); - + return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs index fc609650b..7207adc24 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs @@ -39,7 +39,7 @@ namespace IRaCIS.Core.Application.Contracts //现在需要签署的总数(项目待签署 +系统待签署) - public int? WaitSignDocCount => TotalNeedSignTrialDocCount + TotalNeedSignSystemDocCount; + public int? TotalNeedSignDocCount => TotalNeedSignTrialDocCount + TotalNeedSignSystemDocCount; } public class TrialSiteSurveyStatQuery : PageInput diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs index 66d1af01b..26a0f9793 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs @@ -129,6 +129,10 @@ namespace IRaCIS.Application.Contracts public string UserRealName => LastName + " / " + FirstName; + public string IsGenerateAccountStr => IsGenerateAccount ? "是" : "否"; + + public string StateStr => State.GetDescription(); + } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index 8b7882f1b..e5c6d37d0 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -99,29 +99,40 @@ namespace IRaCIS.Core.Application [HttpPost] public async Task> GetTrialDocStatList(TrialSiteSurveyStatQuery query) { - var trialDocStat = await _trialRepository.ProjectTo(_mapper.ConfigurationProvider, new { userTypeEnumInt = _userInfo.UserTypeEnumInt, userId = _userInfo.Id, userTypeId = _userInfo.UserTypeId }) - .ToPagedListAsync(query.PageIndex, query.PageSize - 1, query.SortField, query.Asc); - - - var sysDocStat = new DocSignStat() + if (_userInfo.IsAdmin) { - IsSystemDoc = true, - WaitSignCount = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin - ? 0 - : await _systemDocumentRepository - .Where(t => - t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId) && - !t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id)) - .CountAsync() + return new PageOutput(query.PageIndex, query.PageSize, 0, new List()); + } + else + { + var trialDocStat = await _trialRepository + .WhereIf(!_userInfo.IsAdmin, c => c.TrialDocumentList.Where(t => t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId) && !t.TrialDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id)).Count() > 0) + .ProjectTo(_mapper.ConfigurationProvider, new { userTypeEnumInt = _userInfo.UserTypeEnumInt, userId = _userInfo.Id, userTypeId = _userInfo.UserTypeId }) + .ToPagedListAsync(query.PageIndex, query.PageSize - 1, query.SortField, query.Asc); - }; - var list = trialDocStat.CurrentPageData.ToList(); + var sysDocStat = new DocSignStat() + { + IsSystemDoc = true, + WaitSignCount = _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin + ? 0 + : await _systemDocumentRepository + .Where(t => + t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId) && + !t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id)) + .CountAsync() - list.Insert(0,sysDocStat); + }; - trialDocStat.CurrentPageData= list; - return trialDocStat; + var list = trialDocStat.CurrentPageData.ToList(); + + list.Insert(0, sysDocStat); + + trialDocStat.CurrentPageData = list; + return trialDocStat; + } + + } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs index 957f1b9af..14533b3d3 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs @@ -104,6 +104,8 @@ namespace IRaCIS.Core.Application.Services var exportInfo = data; + //处理翻译 + return await ExcelExportHelper.DataExportAsync(StaticData.TrialSiteUserSummary_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment); diff --git a/IRaCIS.Core.Infrastructure/Extention/EnumToSelectExtension.cs b/IRaCIS.Core.Infrastructure/Extention/EnumToSelectExtension.cs index c00338cad..d64fe4783 100644 --- a/IRaCIS.Core.Infrastructure/Extention/EnumToSelectExtension.cs +++ b/IRaCIS.Core.Infrastructure/Extention/EnumToSelectExtension.cs @@ -30,8 +30,35 @@ namespace IRaCIS.Core.Infrastructure.Extention } return dict; } + + /// + /// 扩展方法,获得枚举的Description + /// + /// 枚举值 + /// 当枚举值没有定义DescriptionAttribute,是否使用枚举名代替,默认是使用 + /// 枚举的Description + public static string GetDescription(this Enum value, Boolean nameInstead = true) + { + Type type = value.GetType(); + string name = Enum.GetName(type, value); + if (name == null) + { + return null; + } + + FieldInfo field = type.GetField(name); + DescriptionAttribute attribute = System.Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute; + + if (attribute == null && nameInstead == true) + { + return name; + } + return attribute?.Description; + } + } - + + }