领域事件修改
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-10-11 14:35:53 +08:00
parent 464f70f501
commit 2ee34b8e7c
3 changed files with 75 additions and 63 deletions

View File

@ -63,17 +63,13 @@ public static class DBContext_Ext
{
var subjectVisit = entry.Entity;
////跟踪的方式查询 不会查询数据库多次
//var findTrial = dbContext.Trial.Find(subjectVisit.TrialId);
//入组或者PD 才执行下面的逻辑
if (/*findTrial != null && findTrial.IsEnrollementQualificationConfirm && findTrial.IsPDProgressView && */
(subjectVisit.IsEnrollmentConfirm || subjectVisit.PDState == PDStateEnum.PDProgress))
{
var originSubmitState = entry.Property(p => p.SubmitState).OriginalValue;
var originAuditState = entry.Property(p => p.AuditState).OriginalValue;
var originCheckState = entry.Property(p => p.CheckState).OriginalValue;
//入组或者PD 才执行下面的逻辑
if ((subjectVisit.IsEnrollmentConfirm || subjectVisit.PDState == PDStateEnum.PDProgress))
{
//质控状态变为待审核的时候
if (originSubmitState == SubmitStateEnum.ToSubmit && subjectVisit.SubmitState == SubmitStateEnum.Submitted &&
@ -102,9 +98,8 @@ public static class DBContext_Ext
{
var qCChallengeDialog = entry.Entity;
//跟踪的方式查询 不会查询数据库多次
var findSubjectVisit = dbContext.SubjectVisit.Find(qCChallengeDialog.SubjectVisitId).IfNullThrowException();
//var findTrial = dbContext.Trial.Find(findSubjectVisit.TrialId);
var findSubjectVisit = dbContext.SubjectVisit.Where(t => t.Id == qCChallengeDialog.SubjectVisitId)
.Select(t => new { IsEnrollmentConfirm = t.IsEnrollmentConfirm, PDState = t.PDState, t.Id, t.TrialId }).FirstOrDefault().IfNullThrowException();
//入组或者PD 才执行下面的逻辑
if ((findSubjectVisit.IsEnrollmentConfirm || findSubjectVisit.PDState == PDStateEnum.PDProgress))
@ -131,8 +126,8 @@ public static class DBContext_Ext
{
var checkChallengeDialog = entry.Entity;
//跟踪的方式查询 不会查询数据库多次
var findSubjectVisit = dbContext.SubjectVisit.Find(checkChallengeDialog.SubjectVisitId).IfNullThrowException();
var findSubjectVisit = dbContext.SubjectVisit.Where(t => t.Id == checkChallengeDialog.SubjectVisitId)
.Select(t => new { IsEnrollmentConfirm = t.IsEnrollmentConfirm, PDState = t.PDState, t.Id, t.TrialId }).FirstOrDefault().IfNullThrowException();
//入组或者PD 才执行下面的逻辑
if ((findSubjectVisit.IsEnrollmentConfirm || findSubjectVisit.PDState == PDStateEnum.PDProgress))
@ -159,18 +154,22 @@ public static class DBContext_Ext
{
var taskMedicalReview = entry.Entity;
//跟踪的方式查询 不会查询数据库多次
var findVisitTask = dbContext.VisitTask.Find(taskMedicalReview.VisitTaskId).IfNullThrowException();
if (entry.State == EntityState.Added)
{
var findVisitTask = dbContext.VisitTask.Where(t => t.Id == taskMedicalReview.VisitTaskId).Select(t => new { t.SourceSubjectVisitId, t.SouceReadModuleId }).FirstOrDefault().IfNullThrowException();
var findSubjectVisit = new SubjectVisit();
var findSubjectVisit = new EnrollmentConfirmAndPD();
if (findVisitTask.SourceSubjectVisitId != null)
{
findSubjectVisit = dbContext.SubjectVisit.Find(findVisitTask.SourceSubjectVisitId);
findSubjectVisit = dbContext.SubjectVisit.Where(t => t.Id == findVisitTask.SourceSubjectVisitId)
.Select(t => new EnrollmentConfirmAndPD { IsEnrollmentConfirm = t.IsEnrollmentConfirm, PDState = t.PDState }).FirstOrDefault();
}
else
{
var readMoudule = dbContext.ReadModule.Find(findVisitTask.SouceReadModuleId);
findSubjectVisit = dbContext.SubjectVisit.Find(readMoudule.SubjectVisitId);
var subjectVisitId = dbContext.ReadModule.Where(t => t.Id == findVisitTask.SouceReadModuleId).Select(t => t.SubjectVisitId).FirstOrDefault();
findSubjectVisit = dbContext.SubjectVisit.Where(t => t.Id == subjectVisitId)
.Select(t => new EnrollmentConfirmAndPD { IsEnrollmentConfirm = t.IsEnrollmentConfirm, PDState = t.PDState }).FirstOrDefault();
}
@ -178,15 +177,12 @@ public static class DBContext_Ext
if (findSubjectVisit.IsEnrollmentConfirm || findSubjectVisit.PDState == PDStateEnum.PDProgress)
{
if (entry.State == EntityState.Added)
{
taskMedicalReview.AddDomainEvent(new UrgentMedicalReviewAddedEvent() { MedicalReviewId = taskMedicalReview.Id, VisitTaskId = taskMedicalReview.VisitTaskId });
}
//添加进记录
eventStoreList.AddRange(taskMedicalReview.DomainEvents.Select(t => new EventStoreRecord() { Id = t.EventId, EventType = t.GetType().Name, EventData = t.ToJsonStr() }));
}
}
}
//医学反馈
@ -194,17 +190,22 @@ public static class DBContext_Ext
{
var readingMedicalReviewDialog = entry.Entity;
//跟踪的方式查询 不会查询数据库多次
var findVisitTask = dbContext.VisitTask.Find(readingMedicalReviewDialog.VisitTaskId).IfNullThrowException();
var findSubjectVisit = new SubjectVisit();
var findVisitTask = dbContext.VisitTask.Where(t => t.Id == readingMedicalReviewDialog.VisitTaskId).Select(t => new { t.SourceSubjectVisitId, t.SouceReadModuleId }).FirstOrDefault().IfNullThrowException();
var findSubjectVisit = new EnrollmentConfirmAndPD();
if (findVisitTask.SourceSubjectVisitId != null)
{
findSubjectVisit = dbContext.SubjectVisit.Find(findVisitTask.SourceSubjectVisitId);
findSubjectVisit = dbContext.SubjectVisit.Where(t => t.Id == findVisitTask.SourceSubjectVisitId)
.Select(t => new EnrollmentConfirmAndPD { IsEnrollmentConfirm = t.IsEnrollmentConfirm, PDState = t.PDState }).FirstOrDefault();
}
else
{
var readMoudule = dbContext.ReadModule.Find(findVisitTask.SouceReadModuleId);
findSubjectVisit = dbContext.SubjectVisit.Find(readMoudule.SubjectVisitId);
var subjectVisitId = dbContext.ReadModule.Where(t => t.Id == findVisitTask.SouceReadModuleId).Select(t => t.SubjectVisitId).FirstOrDefault();
findSubjectVisit = dbContext.SubjectVisit.Where(t => t.Id == subjectVisitId)
.Select(t => new EnrollmentConfirmAndPD { IsEnrollmentConfirm = t.IsEnrollmentConfirm, PDState = t.PDState }).FirstOrDefault();
}
//入组或者PD 才执行下面的逻辑
@ -231,39 +232,50 @@ public static class DBContext_Ext
{
var visitTask = entry.Entity;
var findSubjectVisit = new SubjectVisit();
var originReReadingApplyState = entry.Property(p => p.ReReadingApplyState).OriginalValue;
if (originReReadingApplyState == ReReadingApplyState.Default && visitTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed)
{
var findSubjectVisit = new EnrollmentConfirmAndPD();
if (visitTask.SourceSubjectVisitId != null)
{
findSubjectVisit = dbContext.SubjectVisit.Find(visitTask.SourceSubjectVisitId).IfNullThrowException();
findSubjectVisit = dbContext.SubjectVisit.Where(t => t.Id == visitTask.SourceSubjectVisitId)
.Select(t => new EnrollmentConfirmAndPD { IsEnrollmentConfirm = t.IsEnrollmentConfirm, PDState = t.PDState }).FirstOrDefault();
}
else
{
var readMoudule = dbContext.ReadModule.Find(visitTask.SouceReadModuleId).IfNullThrowException();
findSubjectVisit = dbContext.SubjectVisit.Find(readMoudule.SubjectVisitId).IfNullThrowException();
var subjectVisitId = dbContext.ReadModule.Where(t => t.Id == visitTask.SouceReadModuleId).Select(t => t.SubjectVisitId).FirstOrDefault();
findSubjectVisit = dbContext.SubjectVisit.Where(t => t.Id == subjectVisitId)
.Select(t => new EnrollmentConfirmAndPD { IsEnrollmentConfirm = t.IsEnrollmentConfirm, PDState = t.PDState }).FirstOrDefault();
}
//入组或者PD 才执行下面的逻辑
if (findSubjectVisit.IsEnrollmentConfirm || findSubjectVisit.PDState == PDStateEnum.PDProgress)
{
var originReReadingApplyState = entry.Property(p => p.ReReadingApplyState).OriginalValue;
if (originReReadingApplyState == ReReadingApplyState.Default && visitTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed)
{
visitTask.AddDomainEvent(new UrgentIRApplyedReReading() { VisitTaskId = visitTask.Id });
}
//添加进记录
eventStoreList.AddRange(visitTask.DomainEvents.Select(t => new EventStoreRecord() { Id = t.EventId, EventType = t.GetType().Name, EventData = t.ToJsonStr() }));
}
}
}
#endregion
//跟随事务一起保存数据库
dbContext.EventStoreRecord.AddRange(eventStoreList);
}
public class EnrollmentConfirmAndPD
{
public bool IsEnrollmentConfirm { get; set; }
public PDStateEnum PDState { get; set; }
}
#region 暂时废弃
/// <summary>
/// 暂时废弃,没有场景使用

View File

@ -48,7 +48,7 @@ public class AuditEntityInterceptor(IUserInfo _userInfo,
//};
//领域事件
//eventData.Context.AddDomainEvents();
eventData.Context.AddDomainEvents();
//审计时间
AuditEntities(eventData.Context);

View File

@ -60,7 +60,7 @@ namespace IRaCIS.Core.Infra.EFCore.Interceptor
if (domainEvent.IsScheduleEvent)
{
await _scheduler.SchedulePublish(DateTime.Now.AddSeconds(domainEvent.DelaySeconds), domainEvent);
await _scheduler.SchedulePublish(DateTime.Now.AddSeconds(domainEvent.DelaySeconds), (object)domainEvent);
}
await _mediator.Publish(domainEvent.GetType(), domainEvent);