From 2c0d1cdc82b21d66b3320eceafd2c27a6ec4b2d7 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 24 Jan 2024 09:03:51 +0800
Subject: [PATCH 01/20] =?UTF-8?q?[=E9=82=AE=E4=BB=B6=E6=A8=A1=E6=9D=BF?=
=?UTF-8?q?=E5=90=AF=E7=94=A8=E4=B8=8E=E5=90=A6=E6=B2=A1=E7=94=A8bug?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Application/Service/Document/EmailSendService.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs
index d38d3726a..00ac82688 100644
--- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs
+++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs
@@ -356,7 +356,7 @@ namespace IRaCIS.Core.Application.Service
.Include(t => t.TrialEmailNoticeUserList).Include(t => t.TrialEmailBlackUserList).FirstOrDefaultAsync();
- if (trialEmailConfig == null || trialEmailConfig.IsAutoSend == false)
+ if (trialEmailConfig == null || trialEmailConfig.IsAutoSend == false || trialEmailConfig.IsEnable==false)
{
return;
}
From 39d9cefda90fcf7e4b41493e3b154fee5cf20199 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 19 Jan 2024 16:32:34 +0800
Subject: [PATCH 02/20] =?UTF-8?q?[=E4=B8=8A=E4=BC=A0=E7=9B=91=E6=8E=A7?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=90=9C=E7=B4=A2?=
=?UTF-8?q?=E6=9D=A1=E4=BB=B6]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs | 11 ++++++++++-
.../Service/ImageAndDoc/StudyService.cs | 4 ++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs
index 75f6d7d81..870ad98b4 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs
@@ -173,7 +173,16 @@ namespace IRaCIS.Core.Application.Contracts
public string[]? VisitPlanArray { get; set; }
- }
+ public Guid? VisitTaskId { get; set; }
+
+ public bool? IsDicom { get; set; }
+
+ public string? Uploader { get; set; }
+
+ public bool? IsSuccess { get; set; }
+
+ public string? StudyCode { get; set; }
+ }
public class PreArchiveDicomStudyCommand
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
index 54880b1ed..f4b2440f4 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
@@ -457,6 +457,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
.WhereIf(studyQuery.SubjectId != null, t => t.SubjectId == studyQuery.SubjectId)
.WhereIf(studyQuery.SubjectVisitId != null, t => t.SubjectId == studyQuery.SubjectVisitId)
.WhereIf(studyQuery.SiteId != null, t => t.SiteId == studyQuery.SiteId)
+ .WhereIf(studyQuery.IsDicom != null, t => t.IsDicom == studyQuery.IsDicom )
+ .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.Uploader), t => t.Uploader.UserName.Contains(studyQuery.Uploader))
+ .WhereIf(studyQuery.IsSuccess != null, t => t.IsSuccess == studyQuery.IsSuccess)
+ .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.StudyCode), t => t.StudyCode.Contains(studyQuery.StudyCode))
.Select(t => new UnionStudyMonitorModel()
{
TrialId = t.TrialId,
From 79c5824051feb4f32d12ace20911a1e0c903138b Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Thu, 11 Jan 2024 11:43:07 +0800
Subject: [PATCH 03/20] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E6=97=A5=E5=BF=97?=
=?UTF-8?q?=E8=AE=B0=E5=BD=95=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Serilog/SerilogConfig.cs | 2 +-
.../Serilog/SerilogHelper.cs | 7 ++--
.../Serilog/SerilogSetup.cs | 32 ++++++++++---------
3 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/IRaCIS.Core.API/_PipelineExtensions/Serilog/SerilogConfig.cs b/IRaCIS.Core.API/_PipelineExtensions/Serilog/SerilogConfig.cs
index c5af7adbe..1f88b7746 100644
--- a/IRaCIS.Core.API/_PipelineExtensions/Serilog/SerilogConfig.cs
+++ b/IRaCIS.Core.API/_PipelineExtensions/Serilog/SerilogConfig.cs
@@ -17,7 +17,7 @@ namespace IRaCIS.Core.API
app.UseSerilogRequestLogging(opts
=>
{
- opts.MessageTemplate = "{TokenUserRealName} {TokenUserType} {ClientIp} {RequestIP} {Host} {Protocol} {RequestMethod} {RequestPath} {RequestBody} responded {StatusCode} in {Elapsed:0.0000} ms";
+ opts.MessageTemplate = "{TokenUserRealName} {TokenUserTypeShortName} {ClientIp} {LocalIP} {Host} {Protocol} {RequestMethod} {RequestPath} {RequestBody} responded {StatusCode} in {Elapsed:0.0000} ms";
opts.EnrichDiagnosticContext = SerilogHelper.EnrichFromRequest;
});
diff --git a/IRaCIS.Core.API/_PipelineExtensions/Serilog/SerilogHelper.cs b/IRaCIS.Core.API/_PipelineExtensions/Serilog/SerilogHelper.cs
index 1bb30e7bd..6699cb74b 100644
--- a/IRaCIS.Core.API/_PipelineExtensions/Serilog/SerilogHelper.cs
+++ b/IRaCIS.Core.API/_PipelineExtensions/Serilog/SerilogHelper.cs
@@ -1,4 +1,5 @@
-using IRaCIS.Core.Infrastructure.Extention;
+using IRaCIS.Core.Domain.Share;
+using IRaCIS.Core.Infrastructure.Extention;
using Microsoft.AspNetCore.Http;
using Serilog;
using System;
@@ -41,9 +42,9 @@ namespace IRaCIS.Core.API
// Set the content-type of the Response at this point
diagnosticContext.Set("ContentType", httpContext.Response.ContentType);
- diagnosticContext.Set("TokenUserRealName", httpContext?.User?.FindFirst("realName")?.Value);
+ diagnosticContext.Set("TokenUserRealName", httpContext?.User?.FindFirst(JwtIRaCISClaimType.RealName)?.Value);
- diagnosticContext.Set("TokenUserType", httpContext?.User?.FindFirst("userTypeEnumName")?.Value);
+ diagnosticContext.Set("TokenUserTypeShortName", httpContext?.User?.FindFirst(JwtIRaCISClaimType.UserTypeShortName)?.Value);
// Retrieve the IEndpointFeature selected for the request
var endpoint = httpContext.GetEndpoint();
diff --git a/IRaCIS.Core.API/_ServiceExtensions/Serilog/SerilogSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/Serilog/SerilogSetup.cs
index a27de1505..6cd35a1ae 100644
--- a/IRaCIS.Core.API/_ServiceExtensions/Serilog/SerilogSetup.cs
+++ b/IRaCIS.Core.API/_ServiceExtensions/Serilog/SerilogSetup.cs
@@ -26,24 +26,26 @@ namespace IRaCIS.Core.API
//控制台 方便调试 问题 我们显示记录日志 时 获取上下文的ip 和用户名 用户类型
.WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Warning,
- outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3} ] {LocalIP} {ClientIp} {TokenUserRealName} {TokenUserType} {Message:lj} {Properties:j}{NewLine} {Exception}")
+ outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {SourceContext:l} || {Message} || {Exception} ||end {NewLine}")
+
.WriteTo.File($"{AppContext.BaseDirectory}Serilogs/.log", rollingInterval: RollingInterval.Day,
- outputTemplate: "{Timestamp:HH:mm:ss} || {Level} || {SourceContext:l} || {Message} ||{Exception} ||end {NewLine}");
+ outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {SourceContext:l} || {Message} || {Exception} ||end {NewLine}");
+
//.WriteTo.MSSqlServer("Data Source=DESKTOP-4TU9A6M;Initial Catalog=CoreFrame;User ID=sa;Password=123456", "logs", autoCreateSqlTable: true, restrictedToMinimumLevel: LogEventLevel.Information)//从左至右四个参数分别是数据库连接字符串、表名、如果表不存在是否创建、最低等级。Serilog会默认创建一些列。
- if (environment == "Production")
- {
- config.WriteTo.Email(new EmailConnectionInfo()
- {
- EmailSubject = "系统警告,请速速查看!",//邮件标题
- FromEmail = "test@extimaging.com",//发件人邮箱
- MailServer = "smtp.qiye.aliyun.com",//smtp服务器地址
- NetworkCredentials = new NetworkCredential("test@extimaging.com", "SHzyyl2021"),//两个参数分别是发件人邮箱与客户端授权码
- Port = 465,//端口号
- ToEmail = "872297557@qq.com"//收件人
- }, restrictedToMinimumLevel: LogEventLevel.Error,
- outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [ {Level} {ClientIp} {ClientAgent} {TokenUserRealName} {TokenUserType} ] || [path: {RequestPath} arguments: {RequestBody}] {SourceContext:l} || {Message} || {Exception} ||end {NewLine})");
- }
+ //if (environment == "Production")
+ //{
+ // config.WriteTo.Email(new EmailConnectionInfo()
+ // {
+ // EmailSubject = "系统警告,请速速查看!",//邮件标题
+ // FromEmail = "test@extimaging.com",//发件人邮箱
+ // MailServer = "smtp.qiye.aliyun.com",//smtp服务器地址
+ // NetworkCredentials = new NetworkCredential("test@extimaging.com", "SHzyyl2021"),//两个参数分别是发件人邮箱与客户端授权码
+ // Port = 465,//端口号
+ // ToEmail = "872297557@qq.com"//收件人
+ // }, restrictedToMinimumLevel: LogEventLevel.Error,
+ // outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [ {Level} {ClientIp} {ClientAgent} {TokenUserRealName} {TokenUserType} ] || [path: {RequestPath} arguments: {RequestBody}] {SourceContext:l} || {Message} || {Exception} ||end {NewLine})");
+ //}
//扩展方法 获取上下文的ip 用户名 用户类型
Log.Logger = config.Enrich.WithHttpContextInfo(serviceProvider).CreateLogger();
From 025a8e7af1eaf24f630dce32ff1b62d6bcce76d7 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 12 Jan 2024 13:41:59 +0800
Subject: [PATCH 04/20] =?UTF-8?q?[=E4=B8=8A=E4=BC=A0=E5=A2=9E=E5=8A=A0?=
=?UTF-8?q?=E7=A8=BD=E6=9F=A5=E5=AD=97=E6=AE=B5]=E8=BF=81=E7=A7=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs | 2 ++
IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs | 3 ++-
IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs | 2 ++
3 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs
index 870ad98b4..c940a3af3 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs
@@ -224,6 +224,8 @@ namespace IRaCIS.Core.Application.Contracts
public int FailedFileCount { get; set; }
+ public string RecordPath { get; set; }
+
public AddOrUpdateStudyDto Study { get; set; }
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
index f4b2440f4..44ab0fc58 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
@@ -151,7 +151,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
studyMonitor.UploadFinishedTime = DateTime.Now;
studyMonitor.ArchiveFinishedTime = DateTime.Now;
studyMonitor.FailedFileCount = incommand.FailedFileCount;
- studyMonitor.IsSuccess = true;
+ studyMonitor.IsSuccess = incommand.FailedFileCount==0;
+ studyMonitor.RecordPath=incommand.RecordPath;
//上传
if (studyMonitor.IsDicomReUpload == false)
diff --git a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs
index 39d940765..afd66d0aa 100644
--- a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs
+++ b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs
@@ -87,6 +87,8 @@ namespace IRaCIS.Core.Domain.Models
public string Note = string.Empty;
+ public string RecordPath { get; set; }
+
}
}
From 4874533804d0484f63899a5d17dc7768e614299f Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 12 Jan 2024 13:49:03 +0800
Subject: [PATCH 05/20] =?UTF-8?q?[=E5=A2=9E=E5=8A=A0=E9=BB=98=E8=AE=A4?=
=?UTF-8?q?=E5=80=BC]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs
index afd66d0aa..09b7989c9 100644
--- a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs
+++ b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs
@@ -87,7 +87,7 @@ namespace IRaCIS.Core.Domain.Models
public string Note = string.Empty;
- public string RecordPath { get; set; }
+ public string RecordPath { get; set; }=string.Empty;
}
From 353f5df217a3dca9156bdc2fadfbbc91519c5241 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 12 Jan 2024 13:58:39 +0800
Subject: [PATCH 06/20] =?UTF-8?q?[=E4=BF=AE=E6=94=B9=E4=B8=8A=E4=BC=A0?=
=?UTF-8?q?=EF=BC=8C=E5=A4=B1=E8=B4=A5=E6=95=B0=E9=87=8F=E4=BC=A0=E9=80=92?=
=?UTF-8?q?=E4=B8=8D=E5=87=86=E9=97=AE=E9=A2=98]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs | 3 +++
1 file changed, 3 insertions(+)
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
index 44ab0fc58..58ac3ce1a 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
@@ -210,6 +210,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
series.SubjectId = incommand.SubjectId;
series.SubjectVisitId = incommand.SubjectVisitId;
+ //前端传递的数量不准,上传的时候,把失败的也加进来了,以实际数组的数字为准
+ series.InstanceCount = seriesItem.InstanceList.Count;
+
await _dicomSeriesRepository.AddAsync(series);
foreach (var instanceItem in seriesItem.InstanceList)
From fca2a81c6647c0bac090285d05007d9134fd2e23 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Mon, 15 Jan 2024 15:14:37 +0800
Subject: [PATCH 07/20] =?UTF-8?q?[=E9=81=97=E6=BC=8F=20get=20set]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs
index 09b7989c9..734865204 100644
--- a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs
+++ b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs
@@ -85,7 +85,7 @@ namespace IRaCIS.Core.Domain.Models
public bool IsSuccess { get; set; }
- public string Note = string.Empty;
+ public string Note { get; set; } = string.Empty;
public string RecordPath { get; set; }=string.Empty;
From 81b033885e1e1f4d20fc19653c54dcc1d590dc71 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Tue, 16 Jan 2024 11:19:39 +0800
Subject: [PATCH 08/20] =?UTF-8?q?[=E4=B8=8A=E4=BC=A0=E7=9B=91=E6=8E=A7?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Application/IRaCIS.Core.Application.xml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 8e31348c2..e48c8d5d2 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -12413,6 +12413,12 @@
+
+
+ 维护OSS 影像数据
+
+
+
Reviewer 列表查询参数
From 0e8ecdaf46478aaf8c370148255b8b41becd8968 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Thu, 18 Jan 2024 17:41:36 +0800
Subject: [PATCH 09/20] =?UTF-8?q?[=E4=B8=8A=E4=BC=A0=E5=A4=B1=E8=B4=A5?=
=?UTF-8?q?=E8=BF=87=EF=BC=8C=E8=BF=94=E5=9B=9E=E6=A0=87=E5=BF=97]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs | 1 +
IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs | 2 +-
IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs | 2 ++
IRaCIS.Core.Application/Service/QC/_MapConfig.cs | 2 ++
4 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs
index ef437c37a..5fb7e3610 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs
@@ -62,6 +62,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime))
.ForMember(o => o.Uploader, t => t.MapFrom(u => u.Uploader.LastName + " / " + u.Uploader.FirstName))
.ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id))
+ .ForMember(o => o.IsHaveUploadFailed, t => t.MapFrom(u => u.DicomStudyMonitorList.Any(t=>t.FailedFileCount>0)))
.ForMember(o => o.Modalities, t => t.MapFrom(u => string.Join('、', u.SeriesList.Select(t => t.Modality).Distinct()) ));
diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs
index 490f23911..33157b4d2 100644
--- a/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs
+++ b/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs
@@ -386,7 +386,7 @@ namespace IRaCIS.Core.Application.Contracts.DTO
public string ModalityForEdit { get; set; } = string.Empty;
-
+ public bool IsHaveUploadFailed { get; set; }
}
public class QASeriesInfoDto
diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
index 44786acb2..9b768d332 100644
--- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
+++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
@@ -1099,6 +1099,8 @@ namespace IRaCIS.Core.Application.Contracts
public int? Age { get; set; }
public string Sex { get; set; } = string.Empty;
+ public bool IsHaveUploadFailed { get; set; }
+
}
diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
index 6ab146a12..afde027f9 100644
--- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs
@@ -395,6 +395,8 @@ namespace IRaCIS.Core.Application.Service
|| t.ReadingClinicalDataList.Any(x => x.ClinicalDataTrialSet.UploadRole == Domain.Share.UploadRole.CRC && x.ReadingClinicalDataPDFList.Count() > 0)
|| t.PreviousSurgeryList.Any()))
+ .ForMember(d => d.IsHaveUploadFailed, u => u.MapFrom(t => t.StudyList.SelectMany(c=>c.DicomStudyMonitorList).Any(h => h.FailedFileCount>0) ))
+
//.ForMember(d => d.VisitName, u => u.MapFrom(t =>t.InPlan? t.VisitStage.VisitName : t.VisitName))
//.ForMember(d => d.VisitNum, u => u.MapFrom(t => t.InPlan ? t.VisitStage.VisitNum : t.VisitNum))
//.ForMember(d => d.VisitDay, u => u.MapFrom(t => t.InPlan ? t.VisitStage.VisitDay : t.VisitDay))
From fd9fdcb8be043283d88b5f23b364a9225d084af6 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 19 Jan 2024 15:12:47 +0800
Subject: [PATCH 10/20] =?UTF-8?q?[=E4=BF=AE=E6=94=B9=E5=8C=BB=E7=94=9Fbug?=
=?UTF-8?q?=20=E5=92=8Csite=20bug]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Application/Service/Institution/SiteService.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/IRaCIS.Core.Application/Service/Institution/SiteService.cs b/IRaCIS.Core.Application/Service/Institution/SiteService.cs
index 4a78b453a..9d77f48ed 100644
--- a/IRaCIS.Core.Application/Service/Institution/SiteService.cs
+++ b/IRaCIS.Core.Application/Service/Institution/SiteService.cs
@@ -67,7 +67,7 @@ namespace IRaCIS.Application.Services
siteCommand.Code = await _siteRepository.Select(t => t.Code).DefaultIfEmpty().MaxAsync() + 1;
- siteCommand.SiteCode = AppSettings.GetCodeStr(siteCommand.Code, nameof(User));
+ siteCommand.SiteCode = AppSettings.GetCodeStr(siteCommand.Code, nameof(Site));
}
var site = await _siteRepository.InsertOrUpdateAsync(siteCommand, true, exp);
From 41bbb7540799a557a1b4f76b651dec4b75ed924e Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 19 Jan 2024 15:33:52 +0800
Subject: [PATCH 11/20] =?UTF-8?q?[=E4=BF=AE=E6=94=B9=E9=87=8D=E4=BC=A0?=
=?UTF-8?q?=E6=B2=A1=E6=9C=89=E6=A3=80=E6=9F=A5id]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
index 58ac3ce1a..6a9f84aec 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
@@ -245,6 +245,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
var study = await _dicomstudyRepository.FirstOrDefaultAsync(t => t.Id == studyId);
+ //重传的时候也要赋值检查Id
+ studyMonitor.StudyId = study.Id;
//特殊处理逻辑
study.Modalities = string.Join("、", incommand.Study.SeriesList.Select(t => t.Modality).Union(study.Modalities.Split("、", StringSplitOptions.RemoveEmptyEntries)).Distinct());
From be477818d791deb5681f0fc24a57490d5132c6c8 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 19 Jan 2024 16:22:00 +0800
Subject: [PATCH 12/20] =?UTF-8?q?[AWS=20=E5=AF=B9=E6=8E=A5=E4=B8=8A?=
=?UTF-8?q?=E4=BC=A0=20=E9=9C=80=E8=A6=81=E4=BC=A0=E9=80=92=E6=96=87?=
=?UTF-8?q?=E4=BB=B6=E5=A4=A7=E5=B0=8F]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Application/Helper/OSSService.cs | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/IRaCIS.Core.Application/Helper/OSSService.cs b/IRaCIS.Core.Application/Helper/OSSService.cs
index 4cacd52f1..26cbd2b3c 100644
--- a/IRaCIS.Core.Application/Helper/OSSService.cs
+++ b/IRaCIS.Core.Application/Helper/OSSService.cs
@@ -163,7 +163,8 @@ namespace IRaCIS.Core.Application.Helper
var putObjectArgs = new PutObjectArgs()
.WithBucket(minIOConfig.bucketName)
.WithObject(ossRelativePath)
- .WithStreamData(memoryStream);
+ .WithStreamData(memoryStream)
+ .WithObjectSize(memoryStream.Length);
await minioClient.PutObjectAsync(putObjectArgs);
}
@@ -179,7 +180,8 @@ namespace IRaCIS.Core.Application.Helper
var putObjectArgs = new PutObjectArgs()
.WithBucket(minIOConfig.bucketName)
.WithObject(ossRelativePath)
- .WithStreamData(memoryStream);
+ .WithStreamData(memoryStream)
+ .WithObjectSize(memoryStream.Length);
await minioClient.PutObjectAsync(putObjectArgs);
}
From 85897f990d9a19a3db82a4a1e75923f9749e53de Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 24 Jan 2024 09:03:51 +0800
Subject: [PATCH 13/20] =?UTF-8?q?[=E9=82=AE=E4=BB=B6=E6=A8=A1=E6=9D=BF?=
=?UTF-8?q?=E5=90=AF=E7=94=A8=E4=B8=8E=E5=90=A6=E6=B2=A1=E7=94=A8bug?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Application/Service/Document/EmailSendService.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs
index 00ac82688..0e92fb158 100644
--- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs
+++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs
@@ -477,7 +477,7 @@ namespace IRaCIS.Core.Application.Service
.Include(t => t.TrialEmailNoticeUserList).Include(t => t.TrialEmailBlackUserList).FirstOrDefaultAsync();
- if (trialEmailConfig == null || trialEmailConfig.IsAutoSend == false)
+ if (trialEmailConfig == null || trialEmailConfig.IsAutoSend == false || trialEmailConfig.IsEnable==false)
{
return (null, null);
}
From 7b1a0affbe9e315da8fce07bf0f17b87186c70f9 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Tue, 9 Jan 2024 14:27:13 +0800
Subject: [PATCH 14/20] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=89=8D=E7=AB=AF?=
=?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../DTO/InternationalizationViewModel.cs | 16 +++--
.../Common/InternationalizationService.cs | 68 +++++++++++++++++--
.../Service/Common/_MapConfig.cs | 3 +
.../Common/Internationalization.cs | 10 +--
4 files changed, 82 insertions(+), 15 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/Common/DTO/InternationalizationViewModel.cs b/IRaCIS.Core.Application/Service/Common/DTO/InternationalizationViewModel.cs
index 16ed714b1..c6b7567b3 100644
--- a/IRaCIS.Core.Application/Service/Common/DTO/InternationalizationViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Common/DTO/InternationalizationViewModel.cs
@@ -42,6 +42,8 @@ namespace IRaCIS.Core.Application.ViewModel
public string Value { get; set; } = string.Empty;
public string ValueCN { get; set; } = string.Empty;
+ public string FrontType { get; set; } = string.Empty;
+
public int InternationalizationType { get; set; }
}
@@ -55,19 +57,23 @@ namespace IRaCIS.Core.Application.ViewModel
}
- public class BatchAddInternationalizationDto
+ public class BatchInternationalizationDto
{
public string Description { get; set; } = string.Empty;
public string Code { get; set; } = string.Empty;
public string Value { get; set; } = string.Empty;
+ public string FrontType { get; set; } = string.Empty;
public string ValueCN { get; set; } = string.Empty;
}
- public class InternationalizationSimpleDto
+ public class BatchAddInternationalizationDto : BatchInternationalizationDto
{
- public string Code { get; set; } = string.Empty;
- public string Value { get; set; } = string.Empty;
- public string ValueCN { get; set; } = string.Empty;
+
+ }
+
+ public class InternationalizationSimpleDto: BatchInternationalizationDto
+ {
+
}
}
diff --git a/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs b/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs
index efdcd51e5..7a422f521 100644
--- a/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs
+++ b/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs
@@ -27,22 +27,56 @@ namespace IRaCIS.Core.Application.Service
_internationalizationRepository = internationalizationRepository;
}
-
+ ///
+ /// 前端国际化内容接口
+ ///
+ ///
[AllowAnonymous]
-
- public async Task> GetFrontInternationalizationList()
+ [HttpGet]
+ public async Task> GetFrontInternationalizationList()
{
var list = await _internationalizationRepository.Where(t => t.InternationalizationType == 0).Select(t => new InternationalizationSimpleDto()
{
Code = t.Code,
Value = t.Value,
- ValueCN = t.ValueCN
+ ValueCN = t.ValueCN,
+ FrontType = t.FrontType,
+ Description = t.Description,
}).ToListAsync();
return list;
}
+ ///
+ /// 前端批量提交,后端判断不存在就添加,存在就更新
+ ///
+ ///
+ public async Task BatchAddOrUpdateFrontInternationalization(List batchList)
+ {
+ foreach (var item in batchList)
+ {
+ var find = await _internationalizationRepository.FirstOrDefaultAsync(t => t.Code == item.Code && t.Description == item.Description && t.InternationalizationType == 0);
+
+ if (find != null)
+ {
+ _mapper.Map(item, find);
+ }
+ else
+ {
+ var mapItem = _mapper.Map(item);
+ mapItem.InternationalizationType = 0;
+ mapItem.State = 1;
+
+ await _internationalizationRepository.AddAsync(mapItem);
+ }
+ }
+
+ await _internationalizationRepository.SaveChangesAsync();
+
+ return ResponseOutput.Ok();
+ }
+
[HttpPost]
public async Task> GetInternationalizationList(InternationalizationQuery inQuery)
{
@@ -63,6 +97,11 @@ namespace IRaCIS.Core.Application.Service
return pageList;
}
+ ///
+ /// 后端之前批量添加接口
+ ///
+ ///
+ ///
[HttpPost]
public async Task BatchAddInternationalization(BatchAddInternationalization batchAdd)
{
@@ -91,17 +130,34 @@ namespace IRaCIS.Core.Application.Service
return ResponseOutput.Ok();
}
+ ///
+ /// 前后端添加的时候,区分了,前端判断重复多了多了一个路由 路由+标识唯一
+ ///
+ ///
+ ///
public async Task AddOrUpdateInternationalization(InternationalizationAddOrEdit addOrEditInternationalization)
{
+ var internationalizationType = addOrEditInternationalization.InternationalizationType;
+
+ //后端验证标识重复与否
var verifyExp1 = new EntityVerifyExp()
{
VerifyExp = t => t.Code == addOrEditInternationalization.Code && t.InternationalizationType == addOrEditInternationalization.InternationalizationType,
VerifyMsg = $"该类型已有{addOrEditInternationalization.Code}名称的国际化标识",
- IsVerify = true
+ IsVerify = internationalizationType == 1
};
- var entity = await _internationalizationRepository.InsertOrUpdateAsync(addOrEditInternationalization, true, verifyExp1);
+ //前端验证标识重复与否
+ var verifyExp2 = new EntityVerifyExp()
+ {
+ VerifyExp = t => t.Code == addOrEditInternationalization.Code && t.InternationalizationType == addOrEditInternationalization.InternationalizationType && t.Description == addOrEditInternationalization.Description,
+
+ VerifyMsg = $"该类型已有{addOrEditInternationalization.Description}下的{addOrEditInternationalization.Code}名称的国际化标识",
+ IsVerify = internationalizationType == 0
+ };
+
+ var entity = await _internationalizationRepository.InsertOrUpdateAsync(addOrEditInternationalization, true, verifyExp1, verifyExp2);
if (addOrEditInternationalization.InternationalizationType == 1)
{
diff --git a/IRaCIS.Core.Application/Service/Common/_MapConfig.cs b/IRaCIS.Core.Application/Service/Common/_MapConfig.cs
index f157924cb..c8c297ede 100644
--- a/IRaCIS.Core.Application/Service/Common/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/Common/_MapConfig.cs
@@ -74,6 +74,9 @@ namespace IRaCIS.Core.Application.Service
CreateMap();
CreateMap().ReverseMap();
+ CreateMap().ReverseMap();
+
+
CreateMap();
diff --git a/IRaCIS.Core.Domain/Common/Internationalization.cs b/IRaCIS.Core.Domain/Common/Internationalization.cs
index dc3292224..e4a7be5e9 100644
--- a/IRaCIS.Core.Domain/Common/Internationalization.cs
+++ b/IRaCIS.Core.Domain/Common/Internationalization.cs
@@ -33,16 +33,18 @@ namespace IRaCIS.Core.Domain.Models
public int State { get; set; }
- public string Description { get; set; }
+ public string Description { get; set; } = string.Empty;
- public string Code { get; set; }
+ public string Code { get; set; } = string.Empty;
- public string Value { get; set; }
+ public string Value { get; set; } = string.Empty;
- public string ValueCN { get; set; }
+ public string ValueCN { get; set; } = string.Empty;
public int InternationalizationType { get; set; }
+ public string FrontType { get; set; }=string.Empty;
+
}
}
From 403885ef3f1192403cfde783756ede3e17f9e13d Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 10 Jan 2024 10:23:34 +0800
Subject: [PATCH 15/20] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9B=BD=E9=99=85?=
=?UTF-8?q?=E5=8C=96=E5=8F=96=E6=B6=88=E6=9D=83=E9=99=90=E9=99=90=E5=88=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Service/Common/InternationalizationService.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs b/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs
index 7a422f521..20345c647 100644
--- a/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs
+++ b/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs
@@ -52,6 +52,7 @@ namespace IRaCIS.Core.Application.Service
/// 前端批量提交,后端判断不存在就添加,存在就更新
///
///
+ [AllowAnonymous]
public async Task BatchAddOrUpdateFrontInternationalization(List batchList)
{
foreach (var item in batchList)
From 9adf2ad52b785659a3c723a266cfe533427bbd3c Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 10 Jan 2024 15:24:45 +0800
Subject: [PATCH 16/20] =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=89=8D=E7=AB=AF?=
=?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E5=A2=9E=E5=8A=A0=E7=BC=93=E5=AD=98?=
=?UTF-8?q?-=E9=9C=80=E8=A6=81=E8=BF=81=E7=A7=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Common/InternationalizationService.cs | 39 +++++++++++++------
IRaCIS.Core.Domain/_Config/_StaticData.cs | 5 ++-
2 files changed, 32 insertions(+), 12 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs b/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs
index 20345c647..46ed1e447 100644
--- a/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs
+++ b/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs
@@ -10,6 +10,9 @@ using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.ViewModel;
using Microsoft.AspNetCore.Authorization;
using IRaCIS.Core.Application.Helper;
+using EasyCaching.Core;
+using IRaCIS.Core.Domain.Share;
+using OfficeOpenXml.FormulaParsing.Utilities;
namespace IRaCIS.Core.Application.Service
{
@@ -19,12 +22,13 @@ namespace IRaCIS.Core.Application.Service
[ApiExplorerSettings(GroupName = "Common")]
public class InternationalizationService : BaseService, IInternationalizationService
{
-
+ private readonly IEasyCachingProvider _provider;
private readonly IRepository _internationalizationRepository;
- public InternationalizationService(IRepository internationalizationRepository)
+ public InternationalizationService(IRepository internationalizationRepository, IEasyCachingProvider provider)
{
_internationalizationRepository = internationalizationRepository;
+ _provider = provider;
}
///
@@ -35,17 +39,28 @@ namespace IRaCIS.Core.Application.Service
[HttpGet]
public async Task> GetFrontInternationalizationList()
{
+ var cacheList= _provider.Get>(StaticData.InternationalData.Front).Value;
- var list = await _internationalizationRepository.Where(t => t.InternationalizationType == 0).Select(t => new InternationalizationSimpleDto()
+ if(cacheList != null && cacheList.Count!=0)
{
- Code = t.Code,
- Value = t.Value,
- ValueCN = t.ValueCN,
- FrontType = t.FrontType,
- Description = t.Description,
- }).ToListAsync();
+ return cacheList;
+ }
+ else
+ {
+ var list = await _internationalizationRepository.Where(t => t.InternationalizationType == 0).Select(t => new InternationalizationSimpleDto()
+ {
+ Code = t.Code,
+ Value = t.Value,
+ ValueCN = t.ValueCN,
+ FrontType = t.FrontType,
+ Description = t.Description,
+ }).ToListAsync();
- return list;
+ _provider.Set>(StaticData.InternationalData.Front, list, TimeSpan.FromDays(1));
+
+ return list;
+ }
+
}
///
@@ -72,9 +87,11 @@ namespace IRaCIS.Core.Application.Service
await _internationalizationRepository.AddAsync(mapItem);
}
}
-
await _internationalizationRepository.SaveChangesAsync();
+ //清理缓存
+ _provider.Set>(StaticData.InternationalData.Front, new List(), TimeSpan.FromDays(1));
+
return ResponseOutput.Ok();
}
diff --git a/IRaCIS.Core.Domain/_Config/_StaticData.cs b/IRaCIS.Core.Domain/_Config/_StaticData.cs
index 83954751b..2791b6f50 100644
--- a/IRaCIS.Core.Domain/_Config/_StaticData.cs
+++ b/IRaCIS.Core.Domain/_Config/_StaticData.cs
@@ -183,7 +183,10 @@ public static class StaticData
-
+ public static class InternationalData
+ {
+ public const string Front = "Front";
+ }
///
/// 匿名化配置 key
From 6cfcb9bfe1c002a7acca7a6908439aa502be5f44 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Wed, 24 Jan 2024 11:22:20 +0800
Subject: [PATCH 17/20] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.Application/TestService.cs | 297 +++++++++++++++++++------
1 file changed, 225 insertions(+), 72 deletions(-)
diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs
index 5f36aecbe..ffd97ded6 100644
--- a/IRaCIS.Core.Application/TestService.cs
+++ b/IRaCIS.Core.Application/TestService.cs
@@ -1,4 +1,6 @@
-using DocumentFormat.OpenXml.Office2010.Excel;
+using Aliyun.OSS;
+using Castle.DynamicProxy.Generators.Emitters.SimpleAST;
+using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.Service;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Share;
@@ -12,8 +14,15 @@ using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using MiniExcelLibs;
+using Minio;
+using Minio.DataModel.Args;
+using NPOI.HPSF;
+using NPOI.POIFS.Crypt;
+using SharpCompress.Common;
+using Spire.Doc;
using System.Linq.Expressions;
using System.Reflection.Metadata;
+using System.Security.AccessControl;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
@@ -25,7 +34,7 @@ namespace IRaCIS.Application.Services
public class TestService : BaseService
{
- public static int IntValue = 100;
+ public static int IntValue = 100;
private readonly IRepository _dicRepository;
private readonly IRepository _trialRepository;
@@ -40,7 +49,7 @@ namespace IRaCIS.Application.Services
private readonly ILogger _logger;
- public TestService(IRepository dicRepository, IRepository trialRepository,ILogger logger
+ public TestService(IRepository dicRepository, IRepository trialRepository, ILogger logger
, IOptionsMonitor systemEmailConfig, IOptionsMonitor basicConfig, IRepository visitTaskRepository, IDistributedLockProvider distributedLockProvider)
{
@@ -52,31 +61,56 @@ namespace IRaCIS.Application.Services
_dicRepository = dicRepository;
_trialRepository = trialRepository;
- _distributedLockProvider= distributedLockProvider;
+ _distributedLockProvider = distributedLockProvider;
- _logger= logger;
+ _logger = logger;
//_cache = cache;
}
- [AllowAnonymous]
- public async Task TestDistributedLock( )
+ public async Task TestEFcore8()
{
- await _repository.Where().Select(t => t.FullName).FirstNotNullAsync();
+
+ //var aa= _dicRepository._dbContext.Subject.Where(t => t.Id == Guid.Empty).ExecuteUpdate("FirstName","ddd");
+
+ await _repository.BatchUpdateAsync(t => t.Id == Guid.Empty, u => new Subject() { FirstName = "fddd", LastName = "sss", UpdateTime = DateTime.Now });
+
+ await _repository.Where().ExecuteUpdateAsync(t => t.SetProperty(t => t.UpdateTime, u => DateTime.Now));
+
+ return ResponseOutput.Ok();
+ }
+ // 设置 Ne
+
+ [AllowAnonymous]
+ public async Task TestMinIO([FromServices] IOSSService oSSService)
+ {
+
+ await oSSService.UploadToOSSAsync("C:\\Users\\Administrator\\Desktop\\TrialSiteUserImportTemplate.xlsx", "myfolder");
+
+ await oSSService.DownLoadFromOSSAsync("/myfolder/TrialSiteUserImportTemplate.xlsx", "C:\\Users\\Administrator\\Desktop\\aws.xlsx");
+
+ return ResponseOutput.Ok();
+ }
+
+ [AllowAnonymous]
+ public async Task TestDistributedLock()
+ {
+
+ await _repository.Where().Select(t => t.FullName).FirstNotNullAsync();
Console.WriteLine($"我进来了当前值是:" + IntValue);
_logger.LogWarning($"我进来了当前值是:" + IntValue);
var @lock = _distributedLockProvider.CreateLock($"UserAccount");
- using (await @lock.AcquireAsync())
+ using (await @lock.AcquireAsync())
{
await Task.Delay(4);
IntValue--;
- _logger.LogWarning( IntValue.ToString());
+ _logger.LogWarning(IntValue.ToString());
Console.WriteLine(IntValue);
}
@@ -85,86 +119,126 @@ namespace IRaCIS.Application.Services
[AllowAnonymous]
- public async Task GetMemoryStoreData()
+ public async Task InternationazitionInit()
{
-
+ var rows = await MiniExcel.QueryAsync(@"C:\Users\Administrator\Desktop\i18n-new2.xlsx");
- return ResponseOutput.Ok(new { StaticData.En_US_Dic , StaticData.Zh_CN_Dic });
+ rows = rows.Where(t => !string.IsNullOrEmpty(t.Code)).ToList();
+
+ foreach (var row in rows)
+ {
+ await _repository.InsertOrUpdateAsync(row);
+
+ }
+
+ await _repository.SaveChangesAsync();
+
+ return ResponseOutput.Ok();
}
-
- //[AllowAnonymous]
- //public async Task InternationazitionInit()
- //{
-
-
- // var rows = await MiniExcel.QueryAsync(@"C:\Users\Administrator\Desktop\Export\vue.xlsx");
-
- // foreach (var row in rows)
- // {
- // await _repository.InsertOrUpdateAsync(row);
-
- // }
-
- // await _repository.SaveChangesAsync();
-
- // return ResponseOutput.Ok();
- //}
- [AllowAnonymous]
[UnitOfWork]
public async Task Get()
{
-
- return "修改服务器时间自动发布测试--我又修改了";
+
+ //Expression> visitTaskLambda = x => x.TrialId == Guid.Empty && x.SubjectId == Guid.Empty && x.TrialReadingCriterionId == Guid.Empty;
+
+ //var visitTaskIdQueryable = _visitTaskRepositoryy.Where(visitTaskLambda).Where(t => t.Subject.SubjectVisitTaskList.AsQueryable().Where(visitTaskLambda).Any(c => c.IsNeedClinicalDataSign == true && c.IsClinicalDataSign == false && c.VisitTaskNum < t.VisitTaskNum)).Select(t => t.Id);
+
+ //await _visitTaskRepositoryy.BatchUpdateNoTrackingAsync(t => visitTaskIdQueryable.Contains(t.Id), u => new VisitTask()
+ //{
+ // IsFrontTaskNeedSignButNotSign = true
+ //});
+
+
+ //var a = ((Decimal)1.00).ToString().TrimEnd(new char[] { '.', '0' });
+ //var b = ((Decimal)1.01).ToString().TrimEnd(new char[] { '.', '0' });
+ //var c = ((Decimal)100).ToString().TrimEnd(new char[] { '.', '0' });
+ //var subject1 = Guid.Parse("431D0C58-ABC5-4166-B9BC-08DA0E391693");
+ //var subject2 = Guid.Parse("431D0C58-ABC5-4166-B9BC-08DA0E391694");
+
+ // var subjectList = new List() { Guid.Parse("431D0C58-ABC5-4166-B9BC-08DA0E391693") ,
+ // Guid.Parse("431D0C58-ABC5-4166-B9BC-08DA0E391694") ,
+ // Guid.Parse("431D0C58-ABC5-4166-B9BC-08DA0E391695")
+ // };
+
+ //string[] citys = new string[] { "广州", "深圳", "上海", "北京" };
+ //foreach (var item in subjectList)
+ //{
+ // Console.WriteLine(await BNRFactory.Default.Create($"[CN:{item}][N:[CN:{item}]/0000000]"));
+ //}
+ //foreach (var item in subjectList)
+ //{
+ // Console.WriteLine(await BNRFactory.Default.Create($"[N:[CN:{item}]/0000000]"));
+ //}
+
+ //foreach (var item in subjectList)
+ //{
+ // Console.WriteLine(await BNRFactory.Default.Create($"[CN:{item}][redis:city/0000000]"));
+ //}
+
+ //var needAddVisitList = await _repository.Where(t => t.TrialId == Guid.Empty).DistinctBy(t => t.VisitTaskNum).ToListAsync();
+
+
+ //await _repository.BatchUpdateAsync(t => t.Id == Guid.Empty, u => new VisitTask()
+ //{
+ // SuggesteFinishedTime = u.IsUrgent ? DateTime.Now.AddDays(2) : DateTime.Now.AddDays(7),
+
+ // Code = u.Code + 1
+ //});
+
+ //var query = from item1 in _repository.Where()
+ // join item2 in _repository.Where() on item1.ValueType equals item2.ValueType
+ // select new
+ // {
+ // item1.ValueType,
+ // dd = item2.ValueType
+ // };
+
+ //var list2 = query.ToList();
+
+ //await Task.CompletedTask;
+
+ //var list = await _repository.Where(t => t.TrialId == Guid.Parse("40400000-3e2c-0016-239b-08da581f0e74")).ToListAsync();
+
+ ////await _repository.BatchDeleteAsync(t => t.TrialId == Guid.Parse("40400000-3e2c-0016-239b-08da581f0e74"));
+
+ //await _repository.AddRangeAsync(list, true);
+
+ //await _repository.SaveChangesAsync();
+
+ //await _repository.BatchUpdateAsync(t => t.TrialId == Guid.Parse("40400000-3e2c-0016-239b-08da581f0e74") && t.EntityName== "ClinicalDataTrialSet", t => new DataInspection() { CreateTime= DateTime.Now.AddMonths(-2) } );
+
+ //await _visitTaskRepositoryy.UpdatePartialFromQueryAsync( Guid.Parse("78360000-3E2C-0016-9B53-08DA6A002040"), c => new VisitTask() { UpdateTime = DateTime.Now });
+
+ //await _visitTaskRepositoryy.UpdatePartialFromQueryAsync( Guid.Parse("78360000-3E2C-0016-9B53-08DA6A002040"), c => new VisitTask() { UpdateTime = DateTime.Now.AddMinutes(1) });
+
+ //var a = _userInfo.IsTestUser;
+
+ //var list1 = await _repository.Where().Select(t => t.TranslateValue(t.Value, t.ValueCN, true)).ToListAsync();
+ //var list2 = await _repository.Where().Select(t => t.TranslateValue(t.Value, t.ValueCN, false)).ToListAsync();
+
+ return "测试自动发布--再次提交";
}
- private static Dictionary _replacePatterns = new Dictionary()
- {
- { "test", "Atlanta Knight" },
- { "GAME_TIME", "7:30pm" },
- { "GAME_NUMBER", "161" },
- { "DATE", "October 18 2018" },
- };
-
- private static string ReplaceFunc(string findStr)
- {
- if (_replacePatterns.ContainsKey(findStr))
- {
- return _replacePatterns[findStr];
- }
- return findStr;
- }
-
-
[AllowAnonymous]
- public async Task> testwwwww([FromServices] IWebHostEnvironment env)
+ public async Task testwwwww([FromServices] IWebHostEnvironment env)
{
- int count = 200;
-
- var list=new List();
-
- for (int i = 0; i < count; i++)
- {
- Guid guid = NewId.NextGuid();
- list.Add(guid);
- }
-
- return list;
+ await Task.CompletedTask;
}
[AllowAnonymous]
public async Task
+
+
+ 前端国际化内容接口
+
+
+
+
+
+ 前端批量提交,后端判断不存在就添加,存在就更新
+
+
+
+
+
+ 后端之前批量添加接口
+
+
+
+
+
+
+ 前后端添加的时候,区分了,前端判断重复多了多了一个路由 路由+标识唯一
+
+
+
+
PublishLogService
diff --git a/IRaCIS.Core.Infra.EFCore/Repository/DynamicRelationalExtensions.cs b/IRaCIS.Core.Infra.EFCore/Repository/DynamicRelationalExtensions.cs
new file mode 100644
index 000000000..b2ebb10f0
--- /dev/null
+++ b/IRaCIS.Core.Infra.EFCore/Repository/DynamicRelationalExtensions.cs
@@ -0,0 +1,120 @@
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Query;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace IRaCIS.Core.Infra.EFCore
+{
+
+ public static class DynamicRelationalExtensions
+ {
+ static MethodInfo UpdateMethodInfo =
+ typeof(RelationalQueryableExtensions).GetMethod(nameof(RelationalQueryableExtensions.ExecuteUpdate));
+
+ static MethodInfo UpdateAsyncMethodInfo =
+ typeof(RelationalQueryableExtensions).GetMethod(nameof(RelationalQueryableExtensions.ExecuteUpdateAsync));
+
+ #region 避免使用
+
+ public static int ExecuteUpdate(this IQueryable query, string fieldName, object? fieldValue)
+ {
+ var updateBody = BuildUpdateBody(query.ElementType,
+ new Dictionary { { fieldName, fieldValue } });
+
+ return (int)UpdateMethodInfo.MakeGenericMethod(query.ElementType).Invoke(null, new object?[] { query, updateBody });
+ }
+
+ public static int ExecuteUpdate(this IQueryable query, IReadOnlyDictionary fieldValues)
+ {
+ var updateBody = BuildUpdateBody(query.ElementType, fieldValues);
+
+ return (int)UpdateMethodInfo.MakeGenericMethod(query.ElementType).Invoke(null, new object?[] { query, updateBody });
+ }
+ public static Task ExecuteUpdateAsync(this IQueryable query, string fieldName, object? fieldValue, CancellationToken cancellationToken = default)
+ {
+ var updateBody = BuildUpdateBody(query.ElementType,
+ new Dictionary { { fieldName, fieldValue } });
+
+ return (Task)UpdateAsyncMethodInfo.MakeGenericMethod(query.ElementType).Invoke(null, new object?[] { query, updateBody, cancellationToken })!;
+ }
+ #endregion
+
+ public static Dictionary ExtractFieldValues(this Expression> updateFactory)
+ {
+ var dic = new Dictionary();
+ var obj = (TSource)Activator.CreateInstance(typeof(TSource));
+
+ Func func = updateFactory.Compile();
+
+ TSource applyObj = func(obj);
+
+ var propList = ((MemberInitExpression)updateFactory.Body).Bindings.Select(mb => mb.Member.Name)
+ .Select(propName => typeof(TSource).GetProperty(propName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)).ToList();
+
+
+ foreach (PropertyInfo prop in propList)
+ {
+ object value = prop.GetValue(applyObj);
+ dic.Add(prop.Name, value);
+ }
+
+ return dic;
+ }
+
+
+
+ public static Task ExecuteUpdateAsync(this IQueryable query, IReadOnlyDictionary fieldValues, CancellationToken cancellationToken = default)
+ {
+ var updateBody = BuildUpdateBody(query.ElementType, fieldValues);
+
+ return (Task)UpdateAsyncMethodInfo.MakeGenericMethod(query.ElementType).Invoke(null, new object?[] { query, updateBody, cancellationToken })!;
+ }
+
+
+ static LambdaExpression BuildUpdateBody(Type entityType, IReadOnlyDictionary fieldValues)
+ {
+ var setParam = Expression.Parameter(typeof(SetPropertyCalls<>).MakeGenericType(entityType), "s");
+ var objParam = Expression.Parameter(entityType, "e");
+
+ Expression setBody = setParam;
+
+ foreach (var pair in fieldValues)
+ {
+ var propExpression = Expression.PropertyOrField(objParam, pair.Key);
+ var valueExpression = ValueForType(propExpression.Type, pair.Value);
+
+ // s.SetProperty(e => e.SomeField, value)
+ setBody = Expression.Call(setBody, nameof(SetPropertyCalls