整理trigger 到不同的文件夹
parent
654fb7116b
commit
b6459d2f9f
|
@ -34,6 +34,7 @@ using Microsoft.AspNetCore.Diagnostics;
|
||||||
using IRaCIS.Core.Application.MassTransit.Command;
|
using IRaCIS.Core.Application.MassTransit.Command;
|
||||||
using IRaCIS.Core.Application.MassTransit.Consumer;
|
using IRaCIS.Core.Application.MassTransit.Consumer;
|
||||||
using DocumentFormat.OpenXml.InkML;
|
using DocumentFormat.OpenXml.InkML;
|
||||||
|
using IRaCIS.Core.Domain;
|
||||||
|
|
||||||
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
||||||
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
|
AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);
|
||||||
|
@ -149,13 +150,14 @@ builder.Services.AddJWTAuthSetup(_configuration);
|
||||||
builder.Services.AddMediator(cfg =>
|
builder.Services.AddMediator(cfg =>
|
||||||
{
|
{
|
||||||
cfg.AddConsumer<ConsistencyCheckConsumer>();
|
cfg.AddConsumer<ConsistencyCheckConsumer>();
|
||||||
|
cfg.AddConsumer<AddUserLogTriggerConsumer>();
|
||||||
});
|
});
|
||||||
|
|
||||||
// 添加 MassTransit 和 InMemory 传输
|
// 添加 MassTransit 和 InMemory 传输
|
||||||
builder.Services.AddMassTransit(cfg =>
|
builder.Services.AddMassTransit(cfg =>
|
||||||
{
|
{
|
||||||
// 注册消费者
|
// 注册消费者
|
||||||
cfg.AddConsumer<AddSubjectTriggerConsumer>(); // 替换为你的消费者类
|
//cfg.AddConsumer<AddSubjectTriggerConsumer>(); // 替换为你的消费者类
|
||||||
|
|
||||||
// 使用 InMemory 作为消息传递机制
|
// 使用 InMemory 作为消息传递机制
|
||||||
cfg.UsingInMemory((context, cfg) =>
|
cfg.UsingInMemory((context, cfg) =>
|
||||||
|
|
|
@ -81,12 +81,12 @@ namespace IRaCIS.Core.API
|
||||||
triggerOptions.AddTrigger<AddCRCCliniaclDataTrigger>();
|
triggerOptions.AddTrigger<AddCRCCliniaclDataTrigger>();
|
||||||
triggerOptions.AddTrigger<SubjectVisitCheckPassedTrigger>();
|
triggerOptions.AddTrigger<SubjectVisitCheckPassedTrigger>();
|
||||||
triggerOptions.AddTrigger<SubjectVisitFinalVisitTrigger>();
|
triggerOptions.AddTrigger<SubjectVisitFinalVisitTrigger>();
|
||||||
triggerOptions.AddTrigger<SubjectVisitTrigger>();
|
triggerOptions.AddTrigger<SubjectVisitScanDateTrigger>();
|
||||||
triggerOptions.AddTrigger<TrialCriterionSignTrigger>();
|
triggerOptions.AddTrigger<TrialCriterionSignTrigger>();
|
||||||
triggerOptions.AddTrigger<TableQuestionRowTrigger>();
|
triggerOptions.AddTrigger<TableQuestionRowTrigger>();
|
||||||
//triggerOptions.AddTrigger<AddlTrialUserTrigger>();
|
//triggerOptions.AddTrigger<AddlTrialUserTrigger>();
|
||||||
triggerOptions.AddTrigger<VisitTaskIsFrontTaskNeedSignButNotSignTrigger>();
|
triggerOptions.AddTrigger<VisitTaskIsFrontTaskNeedSignButNotSignTrigger>();
|
||||||
triggerOptions.AddTrigger<VisitTaskIbeforeTrigger>();
|
triggerOptions.AddTrigger<JudgeVisitTaskTrigger>();
|
||||||
|
|
||||||
triggerOptions.AddTrigger<UserLogTrigger>();
|
triggerOptions.AddTrigger<UserLogTrigger>();
|
||||||
|
|
||||||
|
|
|
@ -85,4 +85,8 @@
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Triggers\TempAbandon\" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -12648,6 +12648,24 @@
|
||||||
构造函数注入
|
构造函数注入
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.AddSubjectTriggerConsumer">
|
||||||
|
<summary>
|
||||||
|
添加Subject 触发添加访视 不能代替 Trigger,稽查BatchId 不一致 暂时废弃
|
||||||
|
</summary>
|
||||||
|
<param name="_subjectVisitRepository"></param>
|
||||||
|
<param name="_visitStageRepository"></param>
|
||||||
|
<param name="_trialRepository"></param>
|
||||||
|
<param name="_mapper"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.AddSubjectTriggerConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitStage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},AutoMapper.IMapper)">
|
||||||
|
<summary>
|
||||||
|
添加Subject 触发添加访视 不能代替 Trigger,稽查BatchId 不一致 暂时废弃
|
||||||
|
</summary>
|
||||||
|
<param name="_subjectVisitRepository"></param>
|
||||||
|
<param name="_visitStageRepository"></param>
|
||||||
|
<param name="_trialRepository"></param>
|
||||||
|
<param name="_mapper"></param>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.TaskAllocationRuleView">
|
<member name="T:IRaCIS.Core.Application.ViewModel.TaskAllocationRuleView">
|
||||||
<summary> TaskAllocationRuleView 列表视图模型 </summary>
|
<summary> TaskAllocationRuleView 列表视图模型 </summary>
|
||||||
</member>
|
</member>
|
||||||
|
@ -16079,16 +16097,6 @@
|
||||||
<param name="trialConfig"></param>
|
<param name="trialConfig"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.AddSubjectTrigger">
|
|
||||||
<summary>
|
|
||||||
添加访视计划 要给改项目下的所有Subject 添加该访视
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Triggers.AddSubjectTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitStage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},AutoMapper.IMapper)">
|
|
||||||
<summary>
|
|
||||||
添加访视计划 要给改项目下的所有Subject 添加该访视
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.SubjectStateTrigger">
|
<member name="T:IRaCIS.Core.Application.Triggers.SubjectStateTrigger">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
|
@ -16099,16 +16107,6 @@
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitCheckPassedTrigger">
|
|
||||||
<summary>
|
|
||||||
处理 访视 末次评估 会影响Subject 状态
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitCheckPassedTrigger.#ctor(IRaCIS.Core.Application.Service.IVisitTaskHelpeService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Application.Interfaces.ISubjectCriteriaEvaluationService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectCriteriaEvaluation})">
|
|
||||||
<summary>
|
|
||||||
处理 访视 末次评估 会影响Subject 状态
|
|
||||||
</summary>
|
|
||||||
</member>
|
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitFinalVisitTrigger">
|
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitFinalVisitTrigger">
|
||||||
<summary>
|
<summary>
|
||||||
处理 访视 末次评估 会影响Subject 状态
|
处理 访视 末次评估 会影响Subject 状态
|
||||||
|
@ -16126,21 +16124,35 @@
|
||||||
<param name="subjectVisit"></param>
|
<param name="subjectVisit"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitTrigger">
|
<member name="T:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger">
|
||||||
<summary>
|
<summary>
|
||||||
处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期
|
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Application.Service.Reading.Interface.IClinicalAnswerService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomSeries},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy})">
|
<member name="M:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial})">
|
||||||
<summary>
|
<summary>
|
||||||
处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期
|
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitTrigger.UpdateSubjectVisitSubmitStateAsync(System.Guid)">
|
<member name="T:IRaCIS.Core.Application.Triggers.AddSubjectTrigger">
|
||||||
<summary>处理提交状态</summary>
|
<summary>
|
||||||
|
添加访视计划 要给改项目下的所有Subject 添加该访视
|
||||||
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitTrigger.UpdateSubjectVisitImageDateAsync(System.Guid)">
|
<member name="M:IRaCIS.Core.Application.Triggers.AddSubjectTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitStage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},AutoMapper.IMapper)">
|
||||||
<summary>处理拍片日期</summary>
|
<summary>
|
||||||
|
添加访视计划 要给改项目下的所有Subject 添加该访视
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitCheckPassedTrigger">
|
||||||
|
<summary>
|
||||||
|
处理 访视 末次评估 会影响Subject 状态
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitCheckPassedTrigger.#ctor(IRaCIS.Core.Application.Service.IVisitTaskHelpeService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Application.Interfaces.ISubjectCriteriaEvaluationService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectCriteriaEvaluation})">
|
||||||
|
<summary>
|
||||||
|
处理 访视 末次评估 会影响Subject 状态
|
||||||
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.TrialCriterionSignTrigger">
|
<member name="T:IRaCIS.Core.Application.Triggers.TrialCriterionSignTrigger">
|
||||||
<summary>
|
<summary>
|
||||||
|
@ -16152,7 +16164,7 @@
|
||||||
因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Triggers.VisitTaskIbeforeTrigger.AfterSave(EntityFrameworkCore.Triggered.ITriggerContext{IRaCIS.Core.Domain.Models.VisitTask},System.Threading.CancellationToken)">
|
<member name="M:IRaCIS.Core.Application.Triggers.JudgeVisitTaskTrigger.AfterSave(EntityFrameworkCore.Triggered.ITriggerContext{IRaCIS.Core.Domain.Models.VisitTask},System.Threading.CancellationToken)">
|
||||||
<summary>
|
<summary>
|
||||||
因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下
|
因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下
|
||||||
|
|
||||||
|
@ -16162,7 +16174,7 @@
|
||||||
<param name="cancellationToken"></param>
|
<param name="cancellationToken"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Triggers.VisitTaskIbeforeTrigger.BeforeSave(EntityFrameworkCore.Triggered.ITriggerContext{IRaCIS.Core.Domain.Models.VisitTask},System.Threading.CancellationToken)">
|
<member name="M:IRaCIS.Core.Application.Triggers.JudgeVisitTaskTrigger.BeforeSave(EntityFrameworkCore.Triggered.ITriggerContext{IRaCIS.Core.Domain.Models.VisitTask},System.Threading.CancellationToken)">
|
||||||
<summary>
|
<summary>
|
||||||
比如 两个任务产生了裁判,然后其中一个人申请了重阅,影响了裁判,需要清理之前任务的上裁判id
|
比如 两个任务产生了裁判,然后其中一个人申请了重阅,影响了裁判,需要清理之前任务的上裁判id
|
||||||
|
|
||||||
|
@ -16173,16 +16185,30 @@
|
||||||
<param name="cancellationToken"></param>
|
<param name="cancellationToken"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger">
|
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitScanDateTrigger">
|
||||||
<summary>
|
<summary>
|
||||||
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
|
处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Triggers.VisitTaskIsFrontTaskNeedSignButNotSignTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial})">
|
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitScanDateTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Application.Service.Reading.Interface.IClinicalAnswerService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomSeries},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy})">
|
||||||
<summary>
|
<summary>
|
||||||
维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果
|
处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitScanDateTrigger.UpdateSubjectVisitSubmitStateAsync(System.Guid)">
|
||||||
|
<summary>
|
||||||
|
处理提交状态
|
||||||
|
</summary>
|
||||||
|
<param name="subjectVisitId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitScanDateTrigger.UpdateSubjectVisitImageDateAsync(System.Guid)">
|
||||||
|
<summary>
|
||||||
|
处理访视拍片日期
|
||||||
|
</summary>
|
||||||
|
<param name="subjectVisitId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Domain.Models.ReadModuleView.Id">
|
<member name="P:IRaCIS.Core.Domain.Models.ReadModuleView.Id">
|
||||||
<summary>
|
<summary>
|
||||||
Id(阅片期Id 或者 访视ID)
|
Id(阅片期Id 或者 访视ID)
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
|
||||||
|
|
||||||
|
using AutoMapper;
|
||||||
|
using IP2Region.Net.Abstractions;
|
||||||
|
using IRaCIS.Core.Domain;
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
using MassTransit;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.MassTransit.Consumer;
|
||||||
|
|
||||||
|
|
||||||
|
//国家|区域|省份|城市|ISP 缺省的地域信息默认是0
|
||||||
|
//0|0|0|内网IP|内网IP
|
||||||
|
// 中国|0|湖北省|武汉市|电信
|
||||||
|
public class AddUserLogTriggerConsumer(ISearcher _searcher) : IConsumer<AddUserLogTriggerCommand>
|
||||||
|
{
|
||||||
|
public async Task Consume(ConsumeContext<AddUserLogTriggerCommand> context)
|
||||||
|
{
|
||||||
|
var userLog = context.Message.UserLog;
|
||||||
|
|
||||||
|
var ipinfo = _searcher.Search(userLog.IP);
|
||||||
|
|
||||||
|
userLog.IPRegion = string.Join('|', ipinfo.Split('|').TakeLast(3));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,13 @@ using MassTransit;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.MassTransit.Consumer;
|
namespace IRaCIS.Core.Application.MassTransit.Consumer;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 添加Subject 触发添加访视 不能代替 Trigger,稽查BatchId 不一致 暂时废弃
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="_subjectVisitRepository"></param>
|
||||||
|
/// <param name="_visitStageRepository"></param>
|
||||||
|
/// <param name="_trialRepository"></param>
|
||||||
|
/// <param name="_mapper"></param>
|
||||||
public class AddSubjectTriggerConsumer(IRepository<SubjectVisit> _subjectVisitRepository,
|
public class AddSubjectTriggerConsumer(IRepository<SubjectVisit> _subjectVisitRepository,
|
||||||
|
|
||||||
IRepository<VisitStage> _visitStageRepository,
|
IRepository<VisitStage> _visitStageRepository,
|
||||||
|
@ -34,5 +41,6 @@ public class AddSubjectTriggerConsumer(IRepository<SubjectVisit> _subjectVisitRe
|
||||||
});
|
});
|
||||||
|
|
||||||
await _subjectVisitRepository.AddRangeAsync(svList);
|
await _subjectVisitRepository.AddRangeAsync(svList);
|
||||||
|
await _subjectVisitRepository.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,7 +9,6 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class AddSubjectTrigger(
|
public class AddSubjectTrigger(
|
||||||
IRepository<SubjectVisit> _subjectVisitRepository,
|
IRepository<SubjectVisit> _subjectVisitRepository,
|
||||||
|
|
||||||
IRepository<VisitStage> _visitStageRepository,
|
IRepository<VisitStage> _visitStageRepository,
|
||||||
IRepository<Trial> _trialRepository,
|
IRepository<Trial> _trialRepository,
|
||||||
IMapper _mapper) : IBeforeSaveTrigger<Subject>
|
IMapper _mapper) : IBeforeSaveTrigger<Subject>
|
|
@ -4,7 +4,7 @@ using IRaCIS.Core.Domain.Share;
|
||||||
namespace IRaCIS.Core.Application.Triggers
|
namespace IRaCIS.Core.Application.Triggers
|
||||||
{
|
{
|
||||||
|
|
||||||
public class VisitTaskIbeforeTrigger(
|
public class JudgeVisitTaskTrigger(
|
||||||
IRepository<VisitTask> _visitTaskRepository,
|
IRepository<VisitTask> _visitTaskRepository,
|
||||||
IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository) : IBeforeSaveTrigger<VisitTask>, IAfterSaveTrigger<VisitTask>
|
IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository) : IBeforeSaveTrigger<VisitTask>, IAfterSaveTrigger<VisitTask>
|
||||||
{
|
{
|
|
@ -7,7 +7,7 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期
|
/// 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SubjectVisitTrigger(
|
public class SubjectVisitScanDateTrigger(
|
||||||
IRepository<SubjectVisit> _subjectVisitRepository,
|
IRepository<SubjectVisit> _subjectVisitRepository,
|
||||||
IClinicalAnswerService _iClinicalAnswerService,
|
IClinicalAnswerService _iClinicalAnswerService,
|
||||||
IRepository<DicomSeries> _dicomSeriesRepository,
|
IRepository<DicomSeries> _dicomSeriesRepository,
|
||||||
|
@ -106,7 +106,11 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>处理提交状态</summary>
|
/// <summary>
|
||||||
|
/// 处理提交状态
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="subjectVisitId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
|
||||||
public async Task UpdateSubjectVisitSubmitStateAsync(Guid subjectVisitId)
|
public async Task UpdateSubjectVisitSubmitStateAsync(Guid subjectVisitId)
|
||||||
{
|
{
|
||||||
|
@ -127,7 +131,11 @@ namespace IRaCIS.Core.Application.Triggers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>处理拍片日期</summary>
|
/// <summary>
|
||||||
|
/// 处理访视拍片日期
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="subjectVisitId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
private async Task UpdateSubjectVisitImageDateAsync(Guid subjectVisitId)
|
private async Task UpdateSubjectVisitImageDateAsync(Guid subjectVisitId)
|
||||||
{
|
{
|
||||||
var svTime = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new
|
var svTime = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
using IRaCIS.Core.Domain.BaseModel;
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Domain;
|
||||||
|
|
||||||
|
|
||||||
|
public class AddUserLogTriggerCommand : DomainCommand
|
||||||
|
{
|
||||||
|
public UserLog UserLog { get; set; }
|
||||||
|
}
|
|
@ -23,19 +23,32 @@ public static class DBContext_Ext
|
||||||
{
|
{
|
||||||
var changeTracker = context.ChangeTracker;
|
var changeTracker = context.ChangeTracker;
|
||||||
|
|
||||||
// 遍历 ChangeTracker 中的实体
|
//遍历 ChangeTracker 中的实体
|
||||||
foreach (var entry in changeTracker.Entries<Subject>())
|
//foreach (var entry in changeTracker.Entries<UserLog>())
|
||||||
{
|
//{
|
||||||
var subject = entry.Entity;
|
// var userLog = entry.Entity;
|
||||||
|
|
||||||
if (entry.State == EntityState.Added)
|
// if (entry.State == EntityState.Added)
|
||||||
{
|
// {
|
||||||
// 受试者添加 触发访视自动添加
|
// // 受试者添加 触发访视自动添加
|
||||||
var addedEvent = new AddSubjectTriggerCommand { SubjectId = subject.Id, TrialId = subject.TrialId, TrialSiteId = subject.TrialSiteId };
|
// var addCommand = new AddUserLogTriggerCommand { UserLog=userLog };
|
||||||
|
|
||||||
subject.AddDomainCommand(addedEvent);
|
// userLog.AddDomainCommand(addCommand);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
//foreach (var entry in changeTracker.Entries<Subject>())
|
||||||
|
//{
|
||||||
|
// var subject = entry.Entity;
|
||||||
|
|
||||||
|
// if (entry.State == EntityState.Added)
|
||||||
|
// {
|
||||||
|
// // 受试者添加 触发访视自动添加
|
||||||
|
// var addedEvent = new AddSubjectTriggerCommand { SubjectId = subject.Id, TrialId = subject.TrialId, TrialSiteId = subject.TrialSiteId };
|
||||||
|
|
||||||
|
// subject.AddDomainCommand(addedEvent);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infra.EFCore.Common;
|
using IRaCIS.Core.Infra.EFCore.Common;
|
||||||
using MassTransit;
|
using MassTransit;
|
||||||
|
using MassTransit.Mediator;
|
||||||
using MassTransit.Transports;
|
using MassTransit.Transports;
|
||||||
using Microsoft.EntityFrameworkCore.Diagnostics;
|
using Microsoft.EntityFrameworkCore.Diagnostics;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
@ -13,7 +14,7 @@ namespace IRaCIS.Core.Infra.EFCore;
|
||||||
|
|
||||||
public class AuditEntityInterceptor(IUserInfo _userInfo,
|
public class AuditEntityInterceptor(IUserInfo _userInfo,
|
||||||
ILogger<AuditEntityInterceptor> _logger
|
ILogger<AuditEntityInterceptor> _logger
|
||||||
//, IBus _bus
|
, IMediator _mediator
|
||||||
) : SaveChangesInterceptor
|
) : SaveChangesInterceptor
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -30,7 +31,7 @@ public class AuditEntityInterceptor(IUserInfo _userInfo,
|
||||||
//领域命令 (同一个事务提交的一些逻辑,类似Trigger 保存事务之前执行的一些逻辑)
|
//领域命令 (同一个事务提交的一些逻辑,类似Trigger 保存事务之前执行的一些逻辑)
|
||||||
eventData.Context.AddDomainCommands();
|
eventData.Context.AddDomainCommands();
|
||||||
|
|
||||||
//DispatchDomainCommands(eventData.Context).GetAwaiter().GetResult();
|
DispatchDomainCommands(eventData.Context).GetAwaiter().GetResult();
|
||||||
|
|
||||||
//领域事件
|
//领域事件
|
||||||
eventData.Context.AddDomainEvents();
|
eventData.Context.AddDomainEvents();
|
||||||
|
@ -230,26 +231,26 @@ public class AuditEntityInterceptor(IUserInfo _userInfo,
|
||||||
|
|
||||||
#region 领域命令分发
|
#region 领域命令分发
|
||||||
|
|
||||||
//private async Task DispatchDomainCommands(DbContext? context)
|
private async Task DispatchDomainCommands(DbContext? context)
|
||||||
//{
|
{
|
||||||
// if (context == null) return;
|
if (context == null) return;
|
||||||
|
|
||||||
// var entities = context.ChangeTracker
|
var entities = context.ChangeTracker
|
||||||
// .Entries<Entity>()
|
.Entries<Entity>()
|
||||||
// .Where(e => e.Entity.DomainCommands.Any())
|
.Where(e => e.Entity.DomainCommands.Any())
|
||||||
// .Select(e => e.Entity)
|
.Select(e => e.Entity)
|
||||||
// .ToList();
|
.ToList();
|
||||||
|
|
||||||
// var domainCommands = entities
|
var domainCommands = entities
|
||||||
// .SelectMany(e => e.DomainCommands)
|
.SelectMany(e => e.DomainCommands)
|
||||||
// .ToList();
|
.ToList();
|
||||||
|
|
||||||
// entities.ForEach(e => e.ClearDomainCommands());
|
entities.ForEach(e => e.ClearDomainCommands());
|
||||||
|
|
||||||
// foreach (var domainCommand in domainCommands)
|
foreach (var domainCommand in domainCommands)
|
||||||
// {
|
{
|
||||||
// await _bus.Send(domainCommand.GetType(), domainCommand);
|
await _mediator.Send(domainCommand.GetType(), domainCommand);
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
Loading…
Reference in New Issue