领域事件修改
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

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

View File

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

View File

@ -60,7 +60,7 @@ namespace IRaCIS.Core.Infra.EFCore.Interceptor
if (domainEvent.IsScheduleEvent) 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); await _mediator.Publish(domainEvent.GetType(), domainEvent);