diff --git a/IRaCIS.Core.API/Properties/launchSettings.json b/IRaCIS.Core.API/Properties/launchSettings.json index aed031839..9016eb3ac 100644 --- a/IRaCIS.Core.API/Properties/launchSettings.json +++ b/IRaCIS.Core.API/Properties/launchSettings.json @@ -36,7 +36,7 @@ "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Staging" }, - "applicationUrl": "http://localhost:6200" + "applicationUrl": "http://localhost:6100" }, "IRaCIS.Production": { "commandName": "Project", diff --git a/IRaCIS.Core.API/Startup.cs b/IRaCIS.Core.API/Startup.cs index 21772cf98..dcd24c696 100644 --- a/IRaCIS.Core.API/Startup.cs +++ b/IRaCIS.Core.API/Startup.cs @@ -179,6 +179,7 @@ namespace IRaCIS.Core.API //不需要 token 访问的静态文件 wwwroot css, JavaScript, and images don't require authentication. app.UseStaticFiles(); + app.UseMiddleware(); //LogDashboard app.UseLogDashboard("/LogDashboard"); @@ -186,8 +187,7 @@ namespace IRaCIS.Core.API //hangfire app.UseHangfireConfig(env); - ////暂时废弃 - //app.UseHttpReports(); + ////限流 中间件 //app.UseIpRateLimiting(); @@ -204,7 +204,6 @@ namespace IRaCIS.Core.API } Console.WriteLine("当前环境: " + env.EnvironmentName); - //app.UseMiddleware(); // 特殊异常处理 比如 404 app.UseStatusCodePagesWithReExecute("/Error/{0}"); @@ -221,15 +220,13 @@ namespace IRaCIS.Core.API app.UseCors(t => t.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader()); //app.UseIRacisHostStaticFileStore(env); - app.UseMiddleware(); + + app.UseAuthentication(); - //app.UseJwtBearerQueryString(); app.UseAuthorization(); - ////文件伺服 必须带Token 访问 - ////app.UseIRacisHostStaticFileStore(env); app.UseEndpoints(endpoints => { diff --git a/IRaCIS.Core.API/_PipelineExtensions/IRacisHostFile/MultiDiskStaticFilesMiddleware.cs b/IRaCIS.Core.API/_PipelineExtensions/IRacisHostFile/MultiDiskStaticFilesMiddleware.cs index e8137fbd8..681419848 100644 --- a/IRaCIS.Core.API/_PipelineExtensions/IRacisHostFile/MultiDiskStaticFilesMiddleware.cs +++ b/IRaCIS.Core.API/_PipelineExtensions/IRacisHostFile/MultiDiskStaticFilesMiddleware.cs @@ -1,8 +1,11 @@ -锘縰sing IRaCIS.Core.Application.Helper; +锘縰sing Azure; +using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Domain.Share; +using IRaCIS.Core.Infrastructure.Extention; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.StaticFiles; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.FileProviders.Physical; @@ -11,6 +14,7 @@ using Microsoft.Extensions.Hosting.Internal; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Microsoft.VisualBasic; +using Newtonsoft.Json; using SharpCompress.Common; using System.IO; using System.Linq; @@ -147,6 +151,12 @@ namespace IRaCIS.Core.API return; } } + + // 濡傛灉娌℃湁鎵惧埌鏂囦欢锛岃繑鍥404 + context.Response.StatusCode = 404; + context.Response.ContentType = "application/json"; + + await context.Response.WriteAsync(JsonConvert.SerializeObject(ResponseOutput.NotOk("File not found"))); } diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 1809aa067..e134eefbf 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -405,14 +405,8 @@ - - - 閲嶉槄鍘熶换鍔¤窡韪鐞 鍙細鍦ㄥ悓鎰忕殑鏃跺欒皟鐢ㄨ繖涓 - - - - - + + PM 鐢宠閲嶉槄 琚悓鎰 鎴栬 PM 鐩存帴閫鍥炵殑鏃跺欏奖鍝 @@ -2045,6 +2039,14 @@ + + + 淇濈暀灏忔暟 + + + + + 鍒犻櫎鐥呯伓鑾峰彇璧峰鐥呯伓搴忓彿 diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomSeriesModel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomSeriesModel.cs index a9062fd24..5dcd1e3fa 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomSeriesModel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomSeriesModel.cs @@ -37,6 +37,8 @@ public List InstancePathList { get; set; } = new List(); + public List InstanceHtmlPathList { get; set; } + //瀛樻斁鍦╥nstance 涓婇潰 public string WindowCenter { get; set; } = string.Empty; public string WindowWidth { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index a2ff95f1e..37fbae848 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -264,17 +264,17 @@ namespace IRaCIS.Core.Application.Contracts public string SeriesInstanceUid { get; set; } public int SeriesNumber { get; set; } public DateTime? SeriesTime { get; set; } - public string Modality { get; set; } - public string Description { get; set; } + public string Modality { get; set; } = string.Empty; + public string Description { get; set; } = string.Empty; public int InstanceCount { get; set; } - public string SliceThickness { get; set; } + public string SliceThickness { get; set; } = string.Empty; - public string ImagePositionPatient { get; set; } - public string ImageOrientationPatient { get; set; } - public string BodyPartExamined { get; set; } - public string SequenceName { get; set; } - public string ProtocolName { get; set; } - public string ImagerPixelSpacing { get; set; } + public string ImagePositionPatient { get; set; } = string.Empty; + public string ImageOrientationPatient { get; set; } = string.Empty; + public string BodyPartExamined { get; set; } = string.Empty; + public string SequenceName { get; set; } = string.Empty; + public string ProtocolName { get; set; } = string.Empty; + public string ImagerPixelSpacing { get; set; } = string.Empty; public string AcquisitionTime { get; set; } = string.Empty; public string AcquisitionNumber { get; set; } = string.Empty; @@ -300,14 +300,14 @@ namespace IRaCIS.Core.Application.Contracts public int SliceLocation { get; set; } - public string SliceThickness { get; set; } + public string SliceThickness { get; set; } = string.Empty; public int NumberOfFrames { get; set; } - public string PixelSpacing { get; set; } + public string PixelSpacing { get; set; } = string.Empty; - public string ImagerPixelSpacing { get; set; } - public string FrameOfReferenceUID { get; set; } - public string WindowCenter { get; set; } - public string WindowWidth { get; set; } + public string ImagerPixelSpacing { get; set; } = string.Empty; + public string FrameOfReferenceUID { get; set; } = string.Empty; + public string WindowCenter { get; set; } = string.Empty; + public string WindowWidth { get; set; } = string.Empty; public bool Anonymize { get; set; } public string Path { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs index 7a1912366..32032bdac 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs @@ -23,11 +23,15 @@ namespace IRaCIS.Core.Application.Services /// 鎸囧畾璧勬簮Id锛岃幏鍙朌icom搴忓垪鎵灞炵殑瀹炰緥淇℃伅鍒楄〃 /// Dicom搴忓垪鐨処d [HttpGet("{seriesId:guid}")] - public async Task> List(Guid seriesId) + public async Task>> List(Guid seriesId) { - return await _instanceRepository.Where(s => s.SeriesId == seriesId).OrderBy(s => s.InstanceNumber). + var list = await _instanceRepository.Where(s => s.SeriesId == seriesId).OrderBy(s => s.InstanceNumber). ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + var imageResizePath = await _instanceRepository.Where(s => s.SeriesId == seriesId).Select(t => t.DicomSerie.ImageResizePath).FirstOrDefaultAsync(); + + return ResponseOutput.Ok(list, new { ImageResizePath = imageResizePath }); } @@ -103,6 +107,6 @@ namespace IRaCIS.Core.Application.Services } } - + } } \ No newline at end of file diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/Interface/IInstanceService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/Interface/IInstanceService.cs index 24a3f6307..792923e3a 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/Interface/IInstanceService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/Interface/IInstanceService.cs @@ -6,7 +6,7 @@ namespace IRaCIS.Core.Application.Services public interface IInstanceService { Task Content(Guid instanceId); - Task> List(Guid seriesId); + Task>> List(Guid seriesId); IEnumerable List(Guid seriesId, string tpCode, bool? key); Task Preview(Guid instanceId); } diff --git a/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs b/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs index 98b33fd25..d5a9e076c 100644 --- a/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs +++ b/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs @@ -85,7 +85,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject [HttpPost] public async Task> GetVisitTaskList(VisitTaskQuery_UltrasonicDicom queryVisitTask) { - var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect && t.SourceSubjectVisitId != null) + var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect &&t.TaskAllocationState==TaskAllocationState.Allocated && t.SourceSubjectVisitId != null) .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) .WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index 67f574346..ac8f54f33 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -1108,7 +1108,7 @@ namespace IRaCIS.Core.Application .WhereIf(!string.IsNullOrEmpty(inQuery.Code), o => o.TrialCode.Contains(inQuery.Code)) .WhereIf(!string.IsNullOrEmpty(inQuery.ResearchProgramNo), o => o.ResearchProgramNo.Contains(inQuery.ResearchProgramNo)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), o => o.ExperimentName.Contains(inQuery.ExperimentName)) - .WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin, t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id && t.IsDeleted == false) && t.IsDeleted == false) + .WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin, t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id && t.IsDeleted == false) && t.IsDeleted == false) .Select(t => new TrialToBeDoneDto() { TrialId = t.Id, diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index 695454728..e4c19c5e9 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -262,7 +262,7 @@ namespace IRaCIS.Core.Application.Services var studyIds = studyList.Select(t => t.StudyId).ToList(); var instanceList = await _repository.Where(t => studyIds.Contains(t.StudyId)) - .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames }).ToListAsync(); + .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames,t.HtmlPath }).ToListAsync(); foreach (var t in studyList) { @@ -275,7 +275,9 @@ namespace IRaCIS.Core.Application.Services { series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList(); - //series.InstancePathList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Path).ToList(); + + series.InstanceHtmlPathList = instanceList.Where(t => t.SeriesId == series.Id && t.HtmlPath != string.Empty).OrderBy(t => t.InstanceNumber).Select(k => k.HtmlPath).ToList(); + //澶勭悊澶氬抚 series.InstancePathList = instanceList.OrderBy(t => t.InstanceNumber).Where(s => s.SeriesId == series.Id) @@ -458,7 +460,7 @@ namespace IRaCIS.Core.Application.Services var studyIds = studyList.Select(t => t.StudyId).ToList(); var instanceList = await _repository.Where(t => studyIds.Contains(t.StudyId)) - .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames,t.WindowCenter,t.WindowWidth }).ToListAsync(); + .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames,t.WindowCenter,t.WindowWidth,t.HtmlPath }).ToListAsync(); @@ -478,7 +480,7 @@ namespace IRaCIS.Core.Application.Services series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList(); - //series.InstancePathList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Path).ToList(); + series.InstanceHtmlPathList = instanceList.Where(t => t.SeriesId == series.Id && t.HtmlPath!=string.Empty).OrderBy(t => t.InstanceNumber).Select(k => k.HtmlPath).ToList(); //澶勭悊澶氬抚 series.InstancePathList = instanceList.Where(s => s.SeriesId == series.Id).OrderBy(t => t.InstanceNumber) diff --git a/IRaCIS.Core.Domain.Share/User/UserType.cs b/IRaCIS.Core.Domain.Share/User/UserType.cs index 10c1e767d..d38149bdd 100644 --- a/IRaCIS.Core.Domain.Share/User/UserType.cs +++ b/IRaCIS.Core.Domain.Share/User/UserType.cs @@ -26,12 +26,12 @@ Dashboard = 6, // 瓒呯骇绠$悊鍛樼敤鎴风被鍨嬶紝鐢ㄤ簬鍙栦唬 SuperAdmin瀛楁 鏁版嵁搴撲笉鍐呯疆杩欎釜鐢ㄦ埛绫诲瀷鍜岃鑹茬殑閰嶇疆锛屽洜涓哄彧鍏佽鏈変竴涓 - SuperAdmin=8, + SuperAdmin=7, + + Admin = 8, - - - CRA=9, + CRA =9, SPM=10,