From ab4847b51047c58e70f5b45a7ef26ac82aa6a8c7 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 22 Apr 2022 08:58:56 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=93=E5=82=A8=E4=BF=A1?=
=?UTF-8?q?=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
IRaCIS.Core.API/IRaCIS.Core.API.csproj | 24 ++---
IRaCIS.Core.API/Program.cs | 4 +-
IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs | 10 +-
.../IRaCIS.Core.Application.csproj | 5 +
.../Service/ImageAndDoc/StudyService.cs | 27 +++---
.../Service/QC/NoneDicomStudyService.cs | 46 +--------
.../Service/QC/QCOperationService.cs | 76 ++++-----------
.../Triggers/SubjectVisitImageDateTrigger.cs | 95 +++++++++++++++++++
IRaCIS.Core.Domain/Visit/SubjectVisit.cs | 2 +-
.../Context/IRaCISDBContext.cs | 1 -
.../IRaCIS.Core.Infra.EFCore.csproj | 6 +-
.../Repository/ICommandRepository.cs | 9 +-
.../Repository/IQueryRepository.cs | 1 -
.../Repository/Repository.cs | 8 +-
14 files changed, 165 insertions(+), 149 deletions(-)
create mode 100644 IRaCIS.Core.Application/Triggers/SubjectVisitImageDateTrigger.cs
diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.csproj b/IRaCIS.Core.API/IRaCIS.Core.API.csproj
index 9d12b7c80..c426b6c08 100644
--- a/IRaCIS.Core.API/IRaCIS.Core.API.csproj
+++ b/IRaCIS.Core.API/IRaCIS.Core.API.csproj
@@ -65,25 +65,27 @@
-
+
-
-
-
-
-
+
+
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
+
+
-
-
-
+
+
+
diff --git a/IRaCIS.Core.API/Program.cs b/IRaCIS.Core.API/Program.cs
index 590c672f8..2405bb310 100644
--- a/IRaCIS.Core.API/Program.cs
+++ b/IRaCIS.Core.API/Program.cs
@@ -130,9 +130,9 @@ namespace IRaCIS.Core.API
options.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(20);
});
- webBuilder.UseSerilog();//在宿主机启动的时候配置serilog,与微软ILogger进行整合
+ //webBuilder.UseSerilog();//在宿主机启动的时候配置serilog,与微软ILogger进行整合
webBuilder.UseStartup();
- })
+ }).UseSerilog()
.UseServiceProviderFactory(new AutofacServiceProviderFactory());//使用Autofac替代本身容器
//ConfigureLogging(logging =>
//{
diff --git a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs
index eac408ead..2dcfa2add 100644
--- a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs
+++ b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs
@@ -1,4 +1,5 @@
-锘縰sing IRaCIS.Core.Infra.EFCore;
+锘縰sing IRaCIS.Core.Application.Triggers;
+using IRaCIS.Core.Infra.EFCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
@@ -26,7 +27,14 @@ namespace IRaCIS.Core.API
//options.AddInterceptors(new AuditingInterceptor(configuration.GetSection("ConnectionStrings:RemoteNew").Value));
+ //options.UseTriggers(triggerOptions => triggerOptions.AddTrigger());
+
+ options.UseTriggers(triggerOptions => triggerOptions.AddAssemblyTriggers(typeof(SubjectVisitImageDateTrigger).Assembly));
+
});
+
+
+ //services.AddAssemblyTriggers(typeof(SubjectVisitImageDateTrigger).Assembly);
}
}
}
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj
index 8bf21b688..7cb0fee49 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj
@@ -61,6 +61,7 @@
+
@@ -99,4 +100,8 @@
+
+
+
+
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
index 0301c7931..5376b8b70 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
@@ -102,25 +102,26 @@ namespace IRaCIS.Application.Services
subjectVisit.VisitExecuted = VisitExecutedEnum.Executed;
-
- //澶勭悊鎷嶇墖鏃ユ湡
- var svTime = _subjectVisitRepository.Where(t => t.Id == archiveStudyCommand.SubjectVisitId).Select(t => new
- {
- DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
- DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
- NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
- NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
- }).FirstOrDefault();
- var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
- var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
- subjectVisit.EarliestScanDate = minArray.Min();
- subjectVisit.LatestScanDate = maxArray.Max();
+ ////澶勭悊鎷嶇墖鏃ユ湡
+ //var svTime = _subjectVisitRepository.Where(t => t.Id == archiveStudyCommand.SubjectVisitId).Select(t => new
+ //{
+ // DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
+ // DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
+ // NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
+ // NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
+ //}).FirstOrDefault();
+
+ //var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
+ //var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
+
+ //subjectVisit.EarliestScanDate = minArray.Min();
+ //subjectVisit.LatestScanDate = maxArray.Max();
#endregion
diff --git a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs
index d20983c4d..6d7b88563 100644
--- a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs
+++ b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs
@@ -85,27 +85,7 @@ namespace IRaCIS.Core.Application.Contracts
await _noneDicomStudyRepository.SaveChangesAsync();
}
- var svTime = _repository.Where(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId).Select(t => new
- {
- DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
- DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
- NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
- NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
- }).FirstOrDefault().IfNullThrowException();
- var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime, addOrEditNoneDicomStudy.ImageDate };
- var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime, addOrEditNoneDicomStudy.ImageDate };
-
- await _repository.BatchUpdateAsync(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId, u => new SubjectVisit()
- {
- VisitExecuted = VisitExecutedEnum.Executed,
-
- EarliestScanDate = minArray.Min(),
-
- LatestScanDate = maxArray.Max()
- });
-
- await _repository.SaveChangesAsync();
NoneDicomStudyAddReturnDto noneDicom = new NoneDicomStudyAddReturnDto()
{
@@ -130,34 +110,12 @@ namespace IRaCIS.Core.Application.Contracts
if (noneDicomStudy == null) return Null404NotFound(noneDicomStudy);
- await _noneDicomStudyRepository.BatchDeleteAsync(t => t.Id == noneDicomStudyId);
+ await _noneDicomStudyRepository.DeleteAsync(noneDicomStudy);
+
await _noneDicomStudyFileRepository.BatchDeleteAsync(t => t.NoneDicomStudyId == noneDicomStudyId);
await _repository.BatchDeleteAsync(t => t.StudyId == noneDicomStudyId);
- var svTime = await _repository.Where(t => t.Id == noneDicomStudy.SubjectVisitId).Select(t => new
- {
- DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
- DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
- NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
- NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
- }).FirstOrDefaultAsync().IfNullThrowException();
-
- var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
- var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
-
- await _repository.BatchUpdateAsync(t => t.Id == noneDicomStudy.SubjectVisitId, u => new SubjectVisit()
- {
- EarliestScanDate = minArray.Min(),
-
- LatestScanDate = maxArray.Max()
- });
-
- //濡傛灉鏃㈡病鏈 dicom鏁版嵁 涔熸病鏈夐潪dicom 鏂囦欢 閭d箞鎻愪氦鐘舵佸彉鏇村洖鍘
- if (await _repository.CountAsync(t => t.SubjectVisitId == noneDicomStudy.SubjectVisitId) == 0 && await _repository.CountAsync(t => t.NoneDicomStudy.SubjectVisitId == noneDicomStudy.SubjectVisitId) == 0)
- {
- await _repository.BatchUpdateAsync(t => t.Id == noneDicomStudy.SubjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit, u => new SubjectVisit() { VisitExecuted = 0, SubmitState = SubmitStateEnum.None });
- }
return ResponseOutput.Ok();
}
diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
index ebe4c6e0d..226b717c9 100644
--- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs
@@ -13,13 +13,10 @@ using MiniExcelLibs;
using ExcelDataReader;
using System.Text;
using System.Data;
-using IRaCIS.Core.Infra.EFCore;
-using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Authorization;
using WinSCP;
using Magicodes.ExporterAndImporter.Excel;
using Newtonsoft.Json;
-using Magicodes.ExporterAndImporter.Csv;
using IRaCIS.Core.Application.Service.Inspection.Interface;
using IRaCIS.Core.Infrastructure;
using IRaCIS.Core.Application.Service.Inspection.DTO;
@@ -32,26 +29,24 @@ namespace IRaCIS.Core.Application.Image.QA
private readonly DicomFileStoreHelper _dicomFileStoreHelper;
private readonly IRepository _subjectVisitRepository;
+ private readonly IRepository _dicomStudyRepository;
private readonly IRepository _trialRepository;
- private readonly IServiceProvider serviceProvider;
private readonly IMediator _mediator;
private readonly IInspectionService _inspectionService;
private object _locker = new object();
public QCOperationService(DicomFileStoreHelper dicomFileStoreHelper, IRepository subjectVisitRepository,
IRepository trialRepository,
- IServiceProvider serviceProvider,
IMediator mediator,
- IInspectionService sinspectionService,
- IRepository _trialRepository
+ IInspectionService inspectionService,
+ IRepository dicomStudyRepository
)
{
_dicomFileStoreHelper = dicomFileStoreHelper;
_subjectVisitRepository = subjectVisitRepository;
- this._trialRepository = trialRepository;
- this.serviceProvider = serviceProvider;
+ _dicomStudyRepository = dicomStudyRepository;
_mediator = mediator;
- this._inspectionService = sinspectionService;
+ this._inspectionService = inspectionService;
}
#region QC璐ㄧ枒 浠ュ強鍥炲 鍏抽棴
@@ -1015,20 +1010,23 @@ namespace IRaCIS.Core.Application.Image.QA
/// SeriesCount
[HttpPost, Route("{trialId:guid}/{subjectVisitId:guid}")]
[TypeFilter(typeof(TrialResourceFilter))]
+ [UnitOfWork]
public async Task DeleteStudyList(Guid[] ids, Guid subjectVisitId, Guid trialId)
{
//鎻愪氦浜 浣嗘槸IQC鍚屾剰鐨勬椂鍊 鏄彲浠ュ垹闄ょ殑
- if (await _repository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
+ if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
{
return ResponseOutput.NotOk("CRC Has Submited Image锛宑an not delete");
}
- var DicomStudys = await _repository.GetQueryable().Where(x => ids.Contains(x.Id)).ToListAsync();
+ var waitDeleteStudyList= await _dicomStudyRepository.Where(x => ids.Contains(x.Id)).ToListAsync();
List datas = new List();
- DicomStudys.ForEach(x =>
+ waitDeleteStudyList.ForEach(x =>
{
+
+
datas.Add(new DataInspection()
{
@@ -1054,22 +1052,13 @@ namespace IRaCIS.Core.Application.Image.QA
-
-
-
-
- #region will calls error wried
- //ids.ToList().ForEach(async id =>
- //{
- // var success1 = await _repository.DeleteFromQueryAsync(t => t.Id == id);
- // var succeess2 = await _repository.DeleteFromQueryAsync(t => t.StudyId == id);
- // var success3 = await _repository.DeleteFromQueryAsync(t => t.StudyId == id);
- //});
- #endregion
var createtime = DateTime.Now.AddMilliseconds(200);
- foreach (var id in ids)
+ foreach (var study in waitDeleteStudyList)
{
- var success1 = await _repository.BatchDeleteAsync(t => t.Id == id);
+
+ var id = study.Id;
+
+ await _dicomStudyRepository.DeleteAsync(study,true);
var succeess2 = await _repository.BatchDeleteAsync(t => t.StudyId == id);
var DicomSeriess = await _repository.GetQueryable().Where(t => t.StudyId == id).Select(x => new {
@@ -1135,39 +1124,6 @@ namespace IRaCIS.Core.Application.Image.QA
- //涓涓瑙嗕笅闈㈡湁澶氫釜妫鏌ワ紝鎵浠ラ渶瑕佹娴 娌℃湁鐨勬椂鍊欐墠娓呯┖ 闈瀌icom 鏄鏌ユ枃浠 涓嶆槸琛ㄨ褰
- if (await _repository.CountAsync(t => t.SubjectVisitId == subjectVisitId) == 0 && await _repository.CountAsync(t => t.NoneDicomStudy.SubjectVisitId == subjectVisitId) == 0)
- {
- await _repository.BatchUpdateAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit,
- u => new SubjectVisit() { VisitExecuted = 0, SVENDTC = null, SVSTDTC = null, SubmitState = SubmitStateEnum.None });
-
- //_qaNoticeRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
- //_qaNoticeUserRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
- //_qcChallengeRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
- //_qcChallengeDialogRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
- //_trialQCQuestionAnswerRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
- //_checkChallengeDialogRepository.Delete(t => t.SubjectVisitId == subjectVisitId);
- }
-
-
- var svTime = await _repository.Where(t => t.Id == subjectVisitId).Select(t => new
- {
- DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
- DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
- NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
- NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
- }).FirstOrDefaultAsync().IfNullThrowException();
-
- var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
- var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
-
- await _repository.BatchUpdateAsync(t => t.Id == subjectVisitId, u => new SubjectVisit()
- {
- EarliestScanDate = minArray.Min(),
-
- LatestScanDate = maxArray.Max()
- });
-
var subvisit = await _repository.GetQueryable().FirstOrDefaultAsync(x => x.Id == subjectVisitId);
diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitImageDateTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitImageDateTrigger.cs
new file mode 100644
index 000000000..7be6aaf09
--- /dev/null
+++ b/IRaCIS.Core.Application/Triggers/SubjectVisitImageDateTrigger.cs
@@ -0,0 +1,95 @@
+锘縰sing EntityFrameworkCore.Triggered;
+using IRaCIS.Core.Domain.Share;
+
+namespace IRaCIS.Core.Application.Triggers
+{
+ public class SubjectVisitImageDateTrigger : IAfterSaveTrigger, IAfterSaveTrigger
+ {
+ private readonly IRepository _subjectVisitRepository;
+
+ public SubjectVisitImageDateTrigger(IRepository subjectVisitRepository)
+ {
+ _subjectVisitRepository = subjectVisitRepository;
+ }
+
+ //娉ㄦ剰鍒犻櫎涓嶈兘鐢ㄦ墿灞曟柟娉曪紝蹇呴』鐢‥F璺熻釜鐨勫疄浣 鍚﹀垯涓嶈兘鍙栧埌 SubjectVisitId
+ public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken)
+ {
+ var subjectVisitId = context.Entity.SubjectVisitId;
+ if (context.ChangeType == ChangeType.Added || context.ChangeType == ChangeType.Modified)
+ {
+ await UpdateSubjectVisitImageDateAsync(context.Entity.SubjectVisitId);
+
+ await _subjectVisitRepository.UpdatePartialFieldsNow(subjectVisitId, u => new SubjectVisit()
+ {
+ VisitExecuted = VisitExecutedEnum.Executed
+ });
+ }
+
+
+ if (context.ChangeType == ChangeType.Deleted)
+ {
+ await UpdateSubjectVisitImageDateAsync(context.Entity.SubjectVisitId);
+
+ await UpdateSubjectVisitSubmitStateAsync(subjectVisitId);
+ }
+ }
+
+ public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken)
+ {
+ var subjectVisitId = context.Entity.SubjectVisitId;
+ if (context.ChangeType == ChangeType.Added )
+ {
+ await UpdateSubjectVisitImageDateAsync(subjectVisitId);
+
+ await _subjectVisitRepository.UpdatePartialFieldsNow(subjectVisitId, u => new SubjectVisit()
+ {
+ VisitExecuted = VisitExecutedEnum.Executed
+ });
+ }
+
+ if (context.ChangeType == ChangeType.Deleted)
+ {
+ await UpdateSubjectVisitImageDateAsync(subjectVisitId);
+
+ await UpdateSubjectVisitSubmitStateAsync(subjectVisitId);
+ }
+
+ }
+
+ public async Task UpdateSubjectVisitSubmitStateAsync(Guid subjectVisitId)
+ {
+ //涓涓瑙嗕笅闈㈡湁澶氫釜妫鏌ワ紝鎵浠ラ渶瑕佹娴 娌℃湁鐨勬椂鍊欐墠娓呯┖ 闈瀌icom 鏄鏌ユ枃浠 涓嶆槸琛ㄨ褰
+ if (await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).SelectMany(t => t.StudyList).CountAsync() == 0 &&
+ await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).SelectMany(t => t.NoneDicomStudyList.Select(u => u.NoneDicomFileList)).CountAsync() == 0)
+ {
+ await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit,
+ u => new SubjectVisit() { VisitExecuted = 0, SVENDTC = null, SVSTDTC = null, SubmitState = SubmitStateEnum.None });
+ }
+ }
+
+
+ private async Task UpdateSubjectVisitImageDateAsync(Guid subjectVisitId)
+ {
+ var svTime = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new
+ {
+ DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime),
+ DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime),
+ NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate),
+ NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate)
+ }).FirstOrDefault().IfNullThrowException();
+
+
+ var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
+ var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
+
+ await _subjectVisitRepository.UpdatePartialFieldsNow(subjectVisitId, u => new SubjectVisit()
+ {
+
+ EarliestScanDate = minArray.Min(),
+
+ LatestScanDate = maxArray.Max()
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs
index c897fce1f..82c5d536f 100644
--- a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs
+++ b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs
@@ -26,7 +26,7 @@ namespace IRaCIS.Core.Domain.Models
[Column(TypeName = "decimal(18,1)")]
public decimal VisitNum { get; set; }
//public string AnonymousVisitName { get; set; } = string.Empty;
- public string BlindName { get; set; }
+ public string BlindName { get; set; } = string.Empty;
diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
index c0a148cd4..539b6f78c 100644
--- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
+++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs
@@ -10,7 +10,6 @@ using Microsoft.EntityFrameworkCore.ChangeTracking;
using System.Reflection;
using EntityFramework.Exceptions.SqlServer;
using IRaCIS.Core.Domain.Share;
-using IRaCIS.Core.Infra.EFCore.ValueGenerator;
using MassTransit;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
diff --git a/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj b/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj
index a04961a99..4447e8c90 100644
--- a/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj
+++ b/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj
@@ -17,15 +17,11 @@
-
-
-
+
-
-
diff --git a/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs b/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs
index e04b32ca5..f221a6a83 100644
--- a/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs
+++ b/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs
@@ -20,14 +20,17 @@ namespace IRaCIS.Core.Infra.EFCore
Task UpdatePartialFields(TEntity entity, string[] propertyNames, bool autoSave = false, bool ignoreEntityNullProperty = true, params EntityVerifyExp[] verify);
+ /// 鏇存柊瀛楁锛岀珛鍗虫彁浜や簨鍔
+
Task UpdatePartialFieldsNow(Guid id, Expression> updateFactory, params EntityVerifyExp[] verify);
-
+ /// 鏇存柊瀛楁锛岄粯璁や笉鎻愪氦浜嬪姟锛屼竴鑸敤浜庢湇鍔¢噷闈 鍜屽埆鐨勬搷浣 涓璧锋彁浜や簨鍔
Task UpdatePartialFields(Guid id, Expression> updateFactory, bool autoSave = false, params EntityVerifyExp[] verify);
-
-
+ /// 鎵归噺鍒犻櫎锛岀浉褰撲簬鍘熺敓sql锛 娌$敤EF璺熻釜鏂瑰紡锛堟墍鏈夋煡璇㈠嚭鏉ワ紝鍐嶅垹闄 娴垂鎬ц兘锛
Task BatchDeleteAsync(Expression> deleteFilter);
+
+ /// 鎵归噺鏇存柊锛岀浉褰撲簬鍘熺敓sql锛 娌$敤EF璺熻釜鏂瑰紡锛堟墍鏈夋煡璇㈠嚭鏉ワ紝鍐嶆洿鏂 娴垂鎬ц兘锛
Task BatchUpdateAsync(Expression> where, Expression> updateFactory);
}
diff --git a/IRaCIS.Core.Infra.EFCore/Repository/IQueryRepository.cs b/IRaCIS.Core.Infra.EFCore/Repository/IQueryRepository.cs
index fcbe2ddee..8b9a723a6 100644
--- a/IRaCIS.Core.Infra.EFCore/Repository/IQueryRepository.cs
+++ b/IRaCIS.Core.Infra.EFCore/Repository/IQueryRepository.cs
@@ -1,5 +1,4 @@
锘縰sing AutoMapper;
-using AutoMapper.EntityFrameworkCore;
using IRaCIS.Core.Domain.Models;
//using AutoMapper.EntityFrameworkCore;
using System;
diff --git a/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs b/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs
index 7da8c3d1a..cb9f1e431 100644
--- a/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs
+++ b/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs
@@ -107,12 +107,7 @@ namespace IRaCIS.Core.Infra.EFCore
await SaveChangesAsync(autoSave);
- // 杩欓噷鐢ㄤ笉浜 switch
- //switch (typeof(TEntity))
- //{
- // case typeof(Dictionary):
- // break;
- //}
+
var createtime = DateTime.Now.AddSeconds(1);
@@ -193,7 +188,6 @@ namespace IRaCIS.Core.Infra.EFCore
}
await _dbContext.DataInspection.AddRangeAsync(datas);
- await _dbContext.SaveChangesAsync();
}