增加系统文档导出

This commit is contained in:
2025-04-23 13:30:09 +08:00
parent c115e9453b
commit 232e607b8c
6 changed files with 271 additions and 16 deletions
@@ -1,12 +1,14 @@
using IRaCIS.Core.Domain;
using IRaCIS.Core.Domain._DomainEvent;
using IRaCIS.Core.Domain.BaseModel;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure.Extention;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using Newtonsoft.Json;
using Org.BouncyCastle.Asn1.Cmp;
namespace IRaCIS.Core.Infra.EFCore;
@@ -73,6 +75,8 @@ public static class DBContext_Ext
var originCheckState = entry.Property(p => p.CheckState).OriginalValue;
var originCurrentActionUserId = entry.Property(p => p.CurrentActionUserId).OriginalValue;
var originRequestBackState = entry.Property(p => p.RequestBackState).OriginalValue;
//入组或者PD 才执行下面的逻辑
if ((subjectVisit.IsEnrollmentConfirm || subjectVisit.PDState == PDStateEnum.PDProgress))
{
@@ -96,7 +100,7 @@ public static class DBContext_Ext
{
var businessEnum = subjectVisit.IsEnrollmentConfirm ? EmailBusinessScenario.EligibilityVerification_PendingImageQC : EmailBusinessScenario.PDVerification_PendingImageQC;
var delaySeconds = dbContext.TrialEmailNoticeConfig.Where(t => t.TrialId==subjectVisit.TrialId && t.BusinessScenarioEnum == businessEnum)
var delaySeconds = dbContext.TrialEmailNoticeConfig.Where(t => t.TrialId == subjectVisit.TrialId && t.BusinessScenarioEnum == businessEnum)
.Select(t => t.EmailDelaySeconds).FirstOrDefault();
Console.WriteLine("qc领取任务:" + DateTime.Now.ToShortTimeString() + $"延时{delaySeconds}");
@@ -108,17 +112,41 @@ public static class DBContext_Ext
}
}
}
// 重传影像
if ((originRequestBackState == RequestBackStateEnum.NotRequest && subjectVisit.RequestBackState == RequestBackStateEnum.CRC_RequestBack) ||
(originRequestBackState == RequestBackStateEnum.CRC_RequestBack && subjectVisit.RequestBackState != RequestBackStateEnum.CRC_RequestBack))
{
subjectVisit.AddDomainEvent(new CheckReuploadEvent() { RequestBackState = subjectVisit.RequestBackState, SubjectVisitId = subjectVisit.Id });
}
//PM 直接退回任务
if ((originSubmitState == SubmitStateEnum.Submitted && subjectVisit.SubmitState == SubmitStateEnum.ToSubmit) &&
(originAuditState == AuditStateEnum.QCPassed && subjectVisit.AuditState == AuditStateEnum.None) &&
(originCheckState == CheckStateEnum.CVPassed && subjectVisit.CheckState == CheckStateEnum.None))
{
subjectVisit.AddDomainEvent(new UnReadVisitTaskReReadingApproval() { SubjectVisitId = subjectVisit.Id });
}
if (subjectVisit.DomainEvents.Count > 0)
{
//添加进记录
eventStoreList.AddRange(GetStoreEvents(subjectVisit.DomainEvents));
}
}
foreach (var entry in changeTracker.Entries<QCChallenge>())
{
var qCChallenge = entry.Entity;
var originReuploadEnum = entry.Property(p => p.ReuploadEnum).OriginalValue;
var findSubjectVisit = dbContext.SubjectVisit.Where(t => t.Id == qCChallenge.SubjectVisitId)
.Select(t => new { IsEnrollmentConfirm = t.IsEnrollmentConfirm, PDState = t.PDState, t.Id, t.TrialId }).FirstOrDefault().IfNullThrowException();
@@ -128,11 +156,36 @@ public static class DBContext_Ext
if (entry.State == EntityState.Added)
{
qCChallenge.AddDomainEvent(new QCRepliedQCChallengeEvent() { IsPd = findSubjectVisit.PDState == PDStateEnum.PDProgress,
QCChallengeId = qCChallenge.Id, SubjectVisitId = findSubjectVisit.Id, TrialId = findSubjectVisit.TrialId });
qCChallenge.AddDomainEvent(new QCRepliedQCChallengeEvent()
{
IsPd = findSubjectVisit.PDState == PDStateEnum.PDProgress,
QCChallengeId = qCChallenge.Id,
SubjectVisitId = findSubjectVisit.Id,
TrialId = findSubjectVisit.TrialId
});
}
}
//重传影像
if (
//CRC 申请
(originReuploadEnum == QCChanllengeReuploadEnum.None && qCChallenge.ReuploadEnum == QCChanllengeReuploadEnum.CRCRequestReupload)
||
//同意申请
(originReuploadEnum == QCChanllengeReuploadEnum.CRCRequestReupload && qCChallenge.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))
{
qCChallenge.AddDomainEvent(new QCChanllengeReuploadEvent()
{
SubjectVisitId = findSubjectVisit.Id,
ReuploadEnum = qCChallenge.ReuploadEnum
});
}
if (qCChallenge.DomainEvents.Count > 0)
{
//添加进记录
eventStoreList.AddRange(GetStoreEvents(qCChallenge.DomainEvents));
}
@@ -303,14 +356,101 @@ public static class DBContext_Ext
visitTask.AddDomainEvent(new UrgentApplyedReReading() { VisitTaskId = visitTask.Id, ReReadingApplyState = visitTask.ReReadingApplyState });
//添加进记录
eventStoreList.AddRange(GetStoreEvents(visitTask.DomainEvents));
}
else
{
visitTask.AddDomainEvent(new HaveReadVisitTaskReReading() { VisitTaskId = visitTask.Id, ReReadingApplyState = visitTask.ReReadingApplyState });
}
}
if ((originReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed || originReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed) &&
(visitTask.ReReadingApplyState == ReReadingApplyState.Agree || visitTask.ReReadingApplyState == ReReadingApplyState.Reject))
{
visitTask.AddDomainEvent(new HaveReadVisitTaskReReading() { VisitTaskId = visitTask.Id, ReReadingApplyState = visitTask.ReReadingApplyState });
}
if (visitTask.DomainEvents.Count > 0)
{
//添加进记录
eventStoreList.AddRange(GetStoreEvents(visitTask.DomainEvents));
}
}
#endregion
#region
foreach (var entry in changeTracker.Entries<SubjectVisitImageBackRecord>())
{
var subjectVisitImageBackRecord = entry.Entity;
var originApplyUserRole = entry.Property(p => p.ApplyUserRole).OriginalValue;
var originImageBackState = entry.Property(p => p.ImageBackState).OriginalValue;
if (
//申请的时候
(subjectVisitImageBackRecord.ImageBackState == ImageBackStateEnum.None &&
(subjectVisitImageBackRecord.ApplyUserRole == ImageBackApplyEnum.IQCRequestBack || subjectVisitImageBackRecord.ApplyUserRole == ImageBackApplyEnum.CRCRequestBack)) ||
//审核完成的时候
(originImageBackState == ImageBackStateEnum.None && subjectVisitImageBackRecord.ImageBackState != ImageBackStateEnum.None)
)
{
subjectVisitImageBackRecord.AddDomainEvent(new DirectApplyReupdloadEvent()
{
SubjectVisitId = subjectVisitImageBackRecord.SubjectVisitId,
ApplyUserRole = subjectVisitImageBackRecord.ApplyUserRole,
ImageBackState = subjectVisitImageBackRecord.ImageBackState
});
}
if (subjectVisitImageBackRecord.DomainEvents.Count > 0)
{
//添加进记录
eventStoreList.AddRange(GetStoreEvents(subjectVisitImageBackRecord.DomainEvents));
}
}
#endregion
#region
var enrollIdList = new List<Guid>();
Enroll lastEnroll = null;
foreach (var entry in changeTracker.Entries<Enroll>())
{
var enroll = entry.Entity;
var originEnrollStatus = entry.Property(p => p.EnrollStatus).OriginalValue;
if (originEnrollStatus == EnrollStatus.HasCommittedToCRO && enroll.EnrollStatus == EnrollStatus.InviteIntoGroup)
{
enrollIdList.Add(enroll.Id);
lastEnroll = enroll;
}
}
if (enrollIdList.Count > 0)
{
lastEnroll.AddDomainEvent(new ReviewerSPMApprovedEvent() { EnrollIdList = enrollIdList });
eventStoreList.AddRange(GetStoreEvents(lastEnroll.DomainEvents));
}
#endregion
//跟随事务一起保存数据库
dbContext.EventStoreRecord.AddRange(eventStoreList);
}