From e5a3dce3312ad7ec20eb8661f8ceaa04913aa4d7 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 30 Sep 2022 09:52:34 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E8=87=B4=E6=80=A7?=
=?UTF-8?q?=E5=88=86=E6=9E=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../DTO/TaskConsistentRuleViewModel.cs | 10 +++++++
.../Allocation/TaskConsistentRuleService.cs | 26 ++++++++++++-------
.../Service/Allocation/VisitTaskService.cs | 16 +++++++-----
.../Allocation/TaskConsistentRule.cs | 7 +++++
IRaCIS.Core.Domain/Allocation/VisitTask.cs | 1 +
5 files changed, 44 insertions(+), 16 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskConsistentRuleViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskConsistentRuleViewModel.cs
index 4e09eae88..77cd6cdb1 100644
--- a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskConsistentRuleViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskConsistentRuleViewModel.cs
@@ -41,6 +41,9 @@ namespace IRaCIS.Core.Application.ViewModel
[NotDefault]
public Guid TaskConsistentRuleId { get; set; }
+ //[NotDefault]
+ //public Guid TrialReadingCriterionId { get; set; }
+
}
public class GroupConsistentQuery : PageInput
@@ -264,10 +267,15 @@ namespace IRaCIS.Core.Application.ViewModel
///TaskConsistentRuleQuery 列表查询参数模型
public class TaskConsistentRuleQuery
{
+ [NotDefault]
public Guid TrialId { get; set; }
public bool IsSelfAnalysis { get; set; }
+ [NotDefault]
+ public Guid TrialReadingCriterionId { get; set; }
+
+
}
/// TaskConsistentRuleAddOrEdit 列表查询参数模型
@@ -287,6 +295,8 @@ namespace IRaCIS.Core.Application.ViewModel
public int BlindSubjectNumberOfPlaces { get; set; }
public string BlindTrialSiteCode { get; set; } = string.Empty;
+ [NotDefault]
+ public Guid TrialReadingCriterionId { get; set; }
}
diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs
index d378680ac..010d41655 100644
--- a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs
@@ -72,6 +72,8 @@ namespace IRaCIS.Core.Application.Service
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
.Where(t => t.IsAnalysisCreate)
+ .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId)
+
.WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
@@ -386,9 +388,11 @@ namespace IRaCIS.Core.Application.Service
{
var trialId = filterObj.TrialId;
+ var trialReadingCriterionId = filterObj.TrialReadingCriterionId;
+
#region Subejct 维度
- Expression> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned &&
+ Expression> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned && u.TrialReadingCriterionId== trialReadingCriterionId &&
u.SignTime!.Value.AddDays(filterObj.IntervalWeeks * 7) < DateTime.Now && (u.ReReadingApplyState == ReReadingApplyState.Default || u.ReReadingApplyState == ReReadingApplyState.Reject) && u.DoctorUserId == doctorUserId;
@@ -426,9 +430,9 @@ namespace IRaCIS.Core.Application.Service
TrialSiteCode = t.TrialSite.TrialSiteCode,
SubjectId = t.Id,
- BlindSubjectCode = t.SubjectVisitTaskList.Where(t => t.IsAnalysisCreate).OrderByDescending(t => t.BlindSubjectCode).Select(t => t.BlindSubjectCode).FirstOrDefault(),
+ BlindSubjectCode = t.SubjectVisitTaskList.Where(t => t.IsAnalysisCreate && t.TrialReadingCriterionId == trialReadingCriterionId).OrderByDescending(t => t.BlindSubjectCode).Select(t => t.BlindSubjectCode).FirstOrDefault(),
- IsHaveGeneratedTask = t.SubjectVisitTaskList.Any(c => c.DoctorUserId == doctorUserId && c.IsSelfAnalysis == true),
+ IsHaveGeneratedTask = t.SubjectVisitTaskList.Any(c => c.DoctorUserId == doctorUserId && c.IsSelfAnalysis == true && c.TrialReadingCriterionId==trialReadingCriterionId),
ValidVisitCount = t.SubjectVisitTaskList.AsQueryable().Where(visitTaskFilter).Count(),
@@ -484,11 +488,13 @@ namespace IRaCIS.Core.Application.Service
{
var trialId = filterObj.TrialId;
+ var trialReadingCriterionId = filterObj.TrialReadingCriterionId;
+
var trialConfig = (await _repository.Where(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.ReadingType, t.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException();
- Expression> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned
+ Expression> comonTaskFilter = u => u.TrialId == trialId && u.IsAnalysisCreate == false && u.TaskState == TaskState.Effect && u.ReadingTaskState == ReadingTaskState.HaveSigned && u.TrialReadingCriterionId == trialReadingCriterionId
&& (u.ReReadingApplyState == ReReadingApplyState.Default || u.ReReadingApplyState == ReReadingApplyState.Reject);
@@ -572,7 +578,7 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task GetConsistentRule(TaskConsistentRuleQuery inQuery)
{
- return await _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId && t.IsSelfAnalysis == inQuery.IsSelfAnalysis).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
+ return await _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId && t.IsSelfAnalysis == inQuery.IsSelfAnalysis && t.TrialReadingCriterionId==inQuery.TrialReadingCriterionId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
}
///
@@ -645,13 +651,13 @@ namespace IRaCIS.Core.Application.Service
var verifyExp1 = new EntityVerifyExp()
{
- VerifyExp = t => t.TrialId == addOrEditTaskConsistentRule.TrialId && t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis,
+ VerifyExp = t => t.TrialId == addOrEditTaskConsistentRule.TrialId && t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis && t.TrialReadingCriterionId==addOrEditTaskConsistentRule.TrialReadingCriterionId,
VerifyMsg = "已有该项目配置,不允许继续增加"
};
- if (await _visitTaskRepository.AnyAsync(t => t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis && t.TrialId == addOrEditTaskConsistentRule.TrialId))
+ if (await _visitTaskRepository.AnyAsync(t => t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis && t.TrialId == addOrEditTaskConsistentRule.TrialId && t.TrialReadingCriterionId == addOrEditTaskConsistentRule.TrialReadingCriterionId))
{
- return ResponseOutput.NotOk("已有Subject 生成了任务,不允许修改配置");
+ return ResponseOutput.NotOk("该标准已有Subject 生成了任务,不允许修改配置");
}
var entity = await _taskConsistentRuleRepository.InsertOrUpdateAsync(addOrEditTaskConsistentRule, true, verifyExp1);
@@ -667,9 +673,9 @@ namespace IRaCIS.Core.Application.Service
var config = await _taskConsistentRuleRepository.FirstOrDefaultAsync(t => t.Id == taskConsistentRuleId);
- if (await _visitTaskRepository.AnyAsync(t => t.IsAnalysisCreate && t.TrialId == config.TrialId && t.IsSelfAnalysis == config.IsSelfAnalysis))
+ if (await _visitTaskRepository.AnyAsync(t => t.IsAnalysisCreate && t.TrialId == config.TrialId && t.IsSelfAnalysis == config.IsSelfAnalysis && t.TrialReadingCriterionId==config.TrialReadingCriterionId))
{
- throw new BusinessValidationFailedException("已产生一致性分析任务,不允许删除");
+ throw new BusinessValidationFailedException("该标准已产生一致性分析任务,不允许删除");
}
diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
index d78730f43..36f6ec8cf 100644
--- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
@@ -2562,7 +2562,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
var list = await _visitTaskRepository.Where(filterExpression)
//IR 申请的时候,仅仅看到影响自己的
- .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer, t => t.DoctorUserId == _userInfo.Id)
+ .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer, t => t.DoctorUserId == _userInfo.Id
.OrderBy(t => t.VisitTaskNum).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
#region 影响后的操作
@@ -2582,14 +2582,18 @@ namespace IRaCIS.Core.Application.Service.Allocation
{
influenceTask.OptType = ReReadingOrBackOptType.Return;
}
- else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading)
+ else
{
influenceTask.OptType = ReReadingOrBackOptType.Abandon;
}
- else
- {
- throw new BusinessValidationFailedException("IR 申请重阅,不会影响到后续未读的任务,当前影响列表有未读的任务,请核查");
- }
+ //else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading)
+ //{
+ // influenceTask.OptType = ReReadingOrBackOptType.Abandon;
+ //}
+ //else
+ //{
+ // throw new BusinessValidationFailedException("IR 申请重阅,不会影响到后续未读的任务,当前影响列表有未读的任务,请核查");
+ //}
}
else
{
diff --git a/IRaCIS.Core.Domain/Allocation/TaskConsistentRule.cs b/IRaCIS.Core.Domain/Allocation/TaskConsistentRule.cs
index 9734b67dc..1ce5902dc 100644
--- a/IRaCIS.Core.Domain/Allocation/TaskConsistentRule.cs
+++ b/IRaCIS.Core.Domain/Allocation/TaskConsistentRule.cs
@@ -62,6 +62,13 @@ namespace IRaCIS.Core.Domain.Models
public string Note { get; set; }
+ public Guid TrialReadingCriterionId { get; set; }
+
+ [JsonIgnore]
+ [ForeignKey("TrialReadingCriterionId")]
+ public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
+
+
//[Projectable]
//public List DoctorConsistentTaskList => DoctorVisitTaskList.Where(t => t.IsAnalysisCreate && t.TaskConsistentRuleId == Id).ToList();
}
diff --git a/IRaCIS.Core.Domain/Allocation/VisitTask.cs b/IRaCIS.Core.Domain/Allocation/VisitTask.cs
index c4e103319..4eb7de060 100644
--- a/IRaCIS.Core.Domain/Allocation/VisitTask.cs
+++ b/IRaCIS.Core.Domain/Allocation/VisitTask.cs
@@ -80,6 +80,7 @@ namespace IRaCIS.Core.Domain.Models
public Guid TrialReadingCriterionId { get; set; }
+ [JsonIgnore]
[ForeignKey("TrialReadingCriterionId")]
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }