diff --git a/IRaCIS.Core.API/appsettings.Prod_IRC.json b/IRaCIS.Core.API/appsettings.Prod_IRC.json index b318514e2..183eb939d 100644 --- a/IRaCIS.Core.API/appsettings.Prod_IRC.json +++ b/IRaCIS.Core.API/appsettings.Prod_IRC.json @@ -7,10 +7,10 @@ } }, "ConnectionStrings": { - "RemoteNew": "Server=101.132.193.237,1434;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true", - "Hangfire": "Server=101.132.193.237,1434;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true" - //"RemoteNew": "Server=prod_mssql_standard,1433;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true", - //"Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true" + //"RemoteNew": "Server=101.132.193.237,1434;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true", + //"Hangfire": "Server=101.132.193.237,1434;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true" + "RemoteNew": "Server=prod_mssql_standard,1433;Database=Prod_IRC;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true", + "Hangfire": "Server=prod_mssql_standard,1433;Database=Prod_IRC_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true" }, "ObjectStoreService": { "ObjectStoreUse": "AliyunOSS", diff --git a/IRaCIS.Core.Application/Helper/OSSService.cs b/IRaCIS.Core.Application/Helper/OSSService.cs index 8882d7dd7..58877a5a1 100644 --- a/IRaCIS.Core.Application/Helper/OSSService.cs +++ b/IRaCIS.Core.Application/Helper/OSSService.cs @@ -18,6 +18,7 @@ using Minio.DataModel.Args; using Minio.Exceptions; using System.Reactive.Linq; using System.Runtime.InteropServices; +using System.Web; namespace IRaCIS.Core.Application.Helper; @@ -1022,9 +1023,10 @@ public class OSSService : IOSSService var _ossClient = new OssClient(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? aliConfig.EndPoint : aliConfig.InternalEndpoint, AliyunOSSTempToken.AccessKeyId, AliyunOSSTempToken.AccessKeySecret, AliyunOSSTempToken.SecurityToken); - var metadata = _ossClient.GetObjectMetadata(aliConfig.BucketName, objectkey); + var key = HttpUtility.UrlDecode(objectkey); + var metadata = _ossClient.GetObjectMetadata(aliConfig.BucketName, key); - long fileSize = metadata.ContentLength; // 文件大小(字节) + long fileSize = metadata?.ContentLength??0; // 文件大小(字节) return fileSize; } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs index e5e3f45fa..ce8be47c4 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs @@ -328,6 +328,8 @@ namespace IRaCIS.Core.Application.Service trial.DeclarationTypes = $"|{string.Join('|', updateModel.DeclarationTypeEnumList.Select(x => ((int)x).ToString()).ToList())}|"; trial.AttendedReviewerTypes = $"|{string.Join('|', updateModel.AttendedReviewerTypeEnumList.Select(x => ((int)x).ToString()).ToList())}|"; + trial.UpdateTime = DateTime.Now; + var success = await _trialRepository.SaveChangesAsync(); //维护CRO Sponsor diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs index c9fe6896b..e9d5c9588 100644 --- a/IRaCIS.Core.Application/TestService.cs +++ b/IRaCIS.Core.Application/TestService.cs @@ -396,7 +396,7 @@ namespace IRaCIS.Core.Application.Service [FromServices] IRepository _noneDicomStudyFileRepository, [FromServices] IRepository _readingClinicalDataPDFRepository) { - var noneDicomList = _noneDicomStudyFileRepository.Where(t => t.FileSize == 0 || t.FileSize == null).Select(t => new { t.Path, t.Id }).ToList(); + var noneDicomList = _noneDicomStudyFileRepository/*.Where(t=>t.NoneDicomStudy.TrialId==Guid.Parse("01000000-ac13-0242-3ae4-08dc9b0495c6"))*/.Where(t => t.FileSize == 0 || t.FileSize == null).Select(t => new { t.Path, t.Id }).ToList(); var clinicalDataPDFList = _readingClinicalDataPDFRepository.Where(t => t.Size == 0).Select(t => new { t.Path, t.Id }).ToList(); @@ -409,9 +409,9 @@ namespace IRaCIS.Core.Application.Service await _noneDicomStudyFileRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Id, u => new NoneDicomStudyFile() { FileSize = fileSize }); } - catch (Exception) + catch (Exception ex) { - + Console.WriteLine(item.Path+" : " + ex.Message); } @@ -427,9 +427,9 @@ namespace IRaCIS.Core.Application.Service await _readingClinicalDataPDFRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Id, u => new ReadingClinicalDataPDF() { Size = (int)fileSize }); } - catch (Exception) + catch (Exception ex) { - + Console.WriteLine(item.Path + " : " + ex.Message); } } diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index 1a6dbcf67..0c61dffb3 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -67,7 +67,13 @@ namespace IRaCIS.Core.Infra.EFCore.Common typeof(TrialSiteSurvey), typeof(TrialSiteUserRole), typeof(VisitStage), - typeof(TrialSite) + typeof(TrialSite), + typeof(NoneDicomStudy), + typeof(NoneDicomStudyFile), + typeof(DicomInstance), + typeof(DicomSeries), + typeof(DicomStudy) + }; } } @@ -169,6 +175,13 @@ namespace IRaCIS.Core.Infra.EFCore.Common var memoryClinicalDataSetNameList = entitys.Where(x => x.Entity.GetType() == typeof(ClinicalDataTrialSet)).Select(t => t.Entity as ClinicalDataTrialSet) .Where(t => t.TrialId == entity.Id && t.IsConfirm).Select(t => _userInfo.IsEn_Us ? t.ClinicalDataSetEnName : t.ClinicalDataSetName).ToList(); + //项目字典TrialDictionary + + var memoryModalityIdList = entitys.Where(x => x.Entity.GetType() == typeof(TrialDictionary)).Select(t => t.Entity as TrialDictionary) + .Where(t => t.TrialId == entity.Id && t.KeyName == StaticData.Modality).Select(t => t.DictionaryId).ToList(); + + var modalityList = _dbContext.Dictionary.Where(t => memoryModalityIdList.Contains(t.Id)).Select(t => _userInfo.IsEn_Us ? t.Value : t.ValueCN).ToList(); + Guid id = entity.Id; var oldentity = await _dbContext.Trial.Where(x => x.Id == id).Select(t => new @@ -210,6 +223,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common ExtraIndentification = extraIdentification, }, new { + ModalityListStr = string.Join(",", modalityList), //TrialDicList = string.Join(",", trialDics) //CalledAE = trialDicomAE?.CalledAE, @@ -224,7 +238,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common ClinicalDataSetNames = string.Join(",", clinicalDataSetNameList.Union(memoryClinicalDataSetNameList).Distinct().OrderBy(t => t)), - }); ; + }); } #region 已修改 @@ -2016,10 +2030,10 @@ namespace IRaCIS.Core.Infra.EFCore.Common } break; - + } - if(_userInfo.RequestUrl== "NoneDicomStudy/deleteNoneDicomStudy"|| _userInfo.RequestUrl == "NoneDicomStudy/deleteNoneDicomStudyFile") + if (_userInfo.RequestUrl == "NoneDicomStudy/deleteNoneDicomStudy" || _userInfo.RequestUrl == "NoneDicomStudy/deleteNoneDicomStudyFile") { isDistinctionInterface = false; @@ -2178,8 +2192,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common SubjectVisitId = noneDicomStudy.SubjectVisitId, SubjectId = noneDicomStudy.SubjectId, ObjectRelationParentId = x.VisitTaskId, - ObjectRelationParentId2=x.NoneDicomStudyId, - ObjectRelationParentId3=x.OriginNoneDicomStudyId, + ObjectRelationParentId2 = x.NoneDicomStudyId, + ObjectRelationParentId3 = x.OriginNoneDicomStudyId, ExtraIndentification = extraIdentification }, new { @@ -2305,6 +2319,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common var enrollId = first.EnrollId; + var trialReadingCriterionId = first.TrialReadingCriterionId; + Guid? trialId = Guid.Empty; if (first.Enroll != null) @@ -2320,12 +2336,14 @@ namespace IRaCIS.Core.Infra.EFCore.Common await InsertInspection(first, type, x => new InspectionConvertDTO() { //GeneralId 和ObjectRelationParentId 一样 会成环 所以查询的时候 需要排除自身 - GeneralId = enrollId, + GeneralId = IdentifierHelper.CreateGuid(enrollId.ToString(), trialReadingCriterionId.ToString()), TrialId = trialId, ObjectRelationParentId = enrollId, + ObjectRelationParentId2=trialReadingCriterionId, + IsDistinctionInterface = false }, new { @@ -2616,9 +2634,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common if (entity.ReadingScope == ReadingScopeEnum.Site) { var siteIds = entity.ReadingPeriodSites.Select(t => t.TrialSiteId).ToList(); - if(siteIds == null || siteIds.Count == 0) + if (siteIds == null || siteIds.Count == 0) { - siteIds= await _dbContext.ReadingPeriodSite.Where(c => c.ReadingPeriodSetId== entity.Id).Select(t => t.TrialSiteId).ToListAsync(); + siteIds = await _dbContext.ReadingPeriodSite.Where(c => c.ReadingPeriodSetId == entity.Id).Select(t => t.TrialSiteId).ToListAsync(); } var nameList = _dbContext.TrialSite.Where(c => c.TrialId == entity.TrialId && siteIds.Contains(c.Id)).Select(t => t.TrialSiteCode).ToList(); @@ -3139,12 +3157,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common } - var mark = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionMark)).Select(x=>x.Entity as ReadingTaskQuestionMark).FirstOrDefault(); + var mark = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionMark)).Select(x => x.Entity as ReadingTaskQuestionMark).FirstOrDefault(); - var markName= string.Empty; + var markName = string.Empty; if (mark != null) { - markName=mark.OrderMarkName; + markName = mark.OrderMarkName; } await InsertInspection(cloneEntity, type, x => new InspectionConvertDTO() @@ -3160,8 +3178,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common }, new { - MarkName= markName, - PicturePath= mark!=null?mark.PicturePath:string.Empty, + MarkName = markName, + PicturePath = mark != null ? mark.PicturePath : string.Empty, QuestionAnswerList = taskQuestionAnswerList.Join(quesionList, t => t.ReadingQuestionTrialId, u => u.QuestionId, @@ -3195,16 +3213,16 @@ namespace IRaCIS.Core.Infra.EFCore.Common var tableQuestionAnswer = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTableQuestionAnswer)).Select(x => x.Entity as ReadingTableQuestionAnswer) .Where(x => x.RowId == entity.RowId && x.TableQuestionId == entity.TableQuestionId).FirstOrDefault(); - var answer=string.Empty; - + var answer = string.Empty; + if (tableQuestionAnswer != null) { answer = tableQuestionAnswer.Answer; } - var rowMark= await _dbContext.ReadingTableAnswerRowInfo.Where(x => x.Id == entity.RowId).Select(x => x.RowMark).FirstOrDefaultAsync(); + var rowMark = await _dbContext.ReadingTableAnswerRowInfo.Where(x => x.Id == entity.RowId).Select(x => x.RowMark).FirstOrDefaultAsync(); - var tableQuestionName = await _dbContext.ReadingTableQuestionTrial.Where(x => x.Id == entity.TableQuestionId).Select(x => _userInfo.IsEn_Us? x.QuestionEnName:x.QuestionName).FirstOrDefaultAsync(); + var tableQuestionName = await _dbContext.ReadingTableQuestionTrial.Where(x => x.Id == entity.TableQuestionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefaultAsync(); var questionName = await _dbContext.ReadingQuestionTrial.Where(x => x.Id == entity.QuestionId).Select(x => _userInfo.IsEn_Us ? x.QuestionEnName : x.QuestionName).FirstOrDefaultAsync(); var liverSegmentation = await _dbContext.ReadingTableQuestionAnswer.Where(x => x.RowId == entity.RowId && x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.liverSegmentation).Select(x => x.Answer).FirstOrDefaultAsync(); @@ -3221,7 +3239,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common TableQuestionName = tableQuestionName, Answer = answer, LiverSegmentation = liverSegmentation, - },_userInfo.AuditIdentification); + }, _userInfo.AuditIdentification); } diff --git a/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj b/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj index b2df13578..12aa90fdc 100644 --- a/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj +++ b/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj @@ -28,7 +28,7 @@ - +