自身一直性bug修复
This commit is contained in:
@@ -41,14 +41,11 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
[NotDefault]
|
||||
public Guid TaskConsistentRuleId { get; set; }
|
||||
|
||||
//public int PlanSubjectCount { get; set; }
|
||||
//public int PlanVisitCount { get; set; }
|
||||
//public int IntervalWeeks { get; set; }
|
||||
//public Guid? CompareDoctorUserId { get; set; }
|
||||
//public bool IsHaveReadingPeriod { get; set; }
|
||||
//public bool IsGenerateGlobalTask { get; set; }
|
||||
//public Guid? AnalysisDoctorUserId { get; set; }
|
||||
}
|
||||
|
||||
public class GroupConsistentQuery : PageInput
|
||||
{
|
||||
public Guid TrialId { get; set; }
|
||||
}
|
||||
|
||||
public class ConsistentConfirmGenerateCommand
|
||||
@@ -61,6 +58,13 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
}
|
||||
|
||||
|
||||
public class GroupConsistentConfirmGenrateCommand
|
||||
{
|
||||
[NotDefault]
|
||||
public Guid TrialId { get; set; }
|
||||
public List<Guid> SubejctIdList { get; set; }
|
||||
}
|
||||
|
||||
public class DoctorSelfConsistentSubjectView
|
||||
{
|
||||
public Guid TrialId { get; set; }
|
||||
@@ -69,6 +73,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public String TrialSiteCode { get; set; }
|
||||
public string SubjectCode { get; set; }
|
||||
|
||||
public string? BlindSubjectCode { get; set; }
|
||||
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
public bool IsHaveGeneratedTask { get; set; }
|
||||
|
||||
@@ -81,31 +81,15 @@ namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
var filterObj = await _taskConsistentRuleRepository.FirstOrDefaultAsync(t => t.Id == inQuery.TaskConsistentRuleId);
|
||||
|
||||
var pagedList = await GetIQueryableDoctorSelfConsistentSubjectView(filterObj,inQuery.DoctorUserId).ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(DoctorSelfConsistentSubjectView.SubjectCode) : inQuery.SortField, inQuery.Asc);
|
||||
|
||||
|
||||
|
||||
|
||||
//var (group, query) = GetIQueryableDoctorSelfConsistentRuleSubjectView(filterObj);
|
||||
|
||||
//var count = group.Count();
|
||||
|
||||
//query = query.OrderByDescending(t => t.IsHaveGeneratedTask).Skip((inQuery.PageIndex - 1) * inQuery.PageSize);
|
||||
|
||||
//var items = await query.Take(inQuery.PageSize).ToArrayAsync().ConfigureAwait(false);
|
||||
|
||||
//var pagedList = new PageOutput<DoctorConsistentRuleSubjectView>()
|
||||
//{
|
||||
// PageIndex = inQuery.PageIndex,
|
||||
// PageSize = inQuery.PageSize,
|
||||
// TotalCount = count,
|
||||
// CurrentPageData = items
|
||||
//};
|
||||
|
||||
var pagedList = await GetIQueryableDoctorSelfConsistentSubjectView(filterObj, inQuery.DoctorUserId).ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(DoctorSelfConsistentSubjectView.SubjectCode) : inQuery.SortField, inQuery.Asc);
|
||||
|
||||
return pagedList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 确认生成自身一致性分析任务
|
||||
/// </summary>
|
||||
@@ -138,7 +122,10 @@ namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
var maxCodeStr = _visitTaskRepository.Where(t => t.TrialId == subject.TrialId).OrderByDescending(t => t.BlindSubjectCode).Select(t => t.BlindSubjectCode).FirstOrDefault();
|
||||
|
||||
blindSubjectCode = (int.Parse(maxCodeStr) + 1).ToString($"D{filterObj.BlindSubjectNumberOfPlaces}");
|
||||
int maxCodeInt = 0;
|
||||
int.TryParse(maxCodeStr,out maxCodeInt);
|
||||
|
||||
blindSubjectCode = (maxCodeInt + 1).ToString($"D{filterObj.BlindSubjectNumberOfPlaces}");
|
||||
}
|
||||
|
||||
subject.VisitTaskList.Take(filterObj.PlanVisitCount).ForEach(t =>
|
||||
@@ -175,7 +162,81 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
}
|
||||
|
||||
private IQueryable<DoctorSelfConsistentSubjectView> GetIQueryableDoctorSelfConsistentSubjectView(TaskConsistentRule filterObj, Guid doctorUserId, List<Guid>? subejctIdList = null)
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 组间一致性分析 选择Subejct 列表
|
||||
/// </summary>
|
||||
/// <param name="inQuery"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<PageOutput<DoctorSelfConsistentSubjectView>> GetGroupConsistentRuleSubjectList(GroupConsistentQuery inQuery)
|
||||
{
|
||||
var filterObj = await _taskConsistentRuleRepository.FirstOrDefaultAsync(t => t.TrialId == inQuery.TrialId && t.IsSelfAnalysis==false);
|
||||
|
||||
var pagedList = await GetIQueryableDoctorSelfConsistentSubjectView(filterObj).ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(DoctorSelfConsistentSubjectView.SubjectCode) : inQuery.SortField, inQuery.Asc);
|
||||
|
||||
return pagedList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 确认生成自身一致性分析任务
|
||||
/// </summary>
|
||||
/// <param name="inCommand"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> ConfirmGenerateGroupConsistentTask(GroupConsistentConfirmGenrateCommand inCommand, [FromServices] IVisitTaskHelpeService _visitTaskCommonService)
|
||||
{
|
||||
throw new BusinessValidationFailedException("正在更新开发ing,不允许操作");
|
||||
|
||||
var filterObj = await _taskConsistentRuleRepository.FirstOrDefaultAsync(t => t.TrialId == inCommand.TrialId && t.IsSelfAnalysis==false);
|
||||
|
||||
var list = await GetIQueryableDoctorSelfConsistentSubjectView(filterObj, null, inCommand.SubejctIdList).ToListAsync();
|
||||
|
||||
|
||||
|
||||
foreach (var subject in list)
|
||||
{
|
||||
|
||||
|
||||
//subject.VisitTaskList.Take(filterObj.PlanVisitCount).ForEach(t =>
|
||||
//{
|
||||
// t.DoctorUserId = doctorUserId;
|
||||
// t.TaskConsistentRuleId = filterObj.Id;
|
||||
|
||||
//});
|
||||
|
||||
|
||||
//最后一个访视添加全局
|
||||
var globalTask = (subject.VisitTaskList[filterObj.PlanVisitCount - 1]).Clone();
|
||||
globalTask.ReadingCategory = ReadingCategory.Global;
|
||||
globalTask.VisitTaskNum += ReadingCommon.TaskNumDic[ReadingCategory.Global];
|
||||
subject.VisitTaskList.Add(globalTask);
|
||||
|
||||
await _visitTaskCommonService.AddTaskAsync(new GenerateTaskCommand()
|
||||
{
|
||||
TrialId = filterObj.TrialId,
|
||||
|
||||
ReadingCategory = GenerateTaskCategory.SelfConsistent,
|
||||
|
||||
|
||||
//产生的过滤掉已经生成的
|
||||
GenerataConsistentTaskList = subject.VisitTaskList.Where(t => t.IsHaveGeneratedTask == false).ToList()
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private IQueryable<DoctorSelfConsistentSubjectView> GetIQueryableDoctorSelfConsistentSubjectView(TaskConsistentRule filterObj, Guid? doctorUserId=null, List<Guid>? subejctIdList = null)
|
||||
{
|
||||
var trialId = filterObj.TrialId;
|
||||
|
||||
@@ -187,9 +248,22 @@ namespace IRaCIS.Core.Application.Service
|
||||
(t.ReReadingApplyState == ReReadingApplyState.Default || t.ReReadingApplyState == ReReadingApplyState.Reject);
|
||||
|
||||
|
||||
Expression<Func<VisitTask, bool>> subjectIsHaveGeneratedTaskFilter = c => c.IsAnalysisCreate;
|
||||
|
||||
//组间一致性
|
||||
if (doctorUserId == null)
|
||||
{
|
||||
subjectIsHaveGeneratedTaskFilter = subjectIsHaveGeneratedTaskFilter.And(c => c.IsSelfAnalysis == false);
|
||||
}
|
||||
//组内
|
||||
else
|
||||
{
|
||||
subjectIsHaveGeneratedTaskFilter = subjectIsHaveGeneratedTaskFilter.And(c => c.DoctorUserId == doctorUserId && c.IsSelfAnalysis == true);
|
||||
}
|
||||
|
||||
if (subejctIdList != null && subejctIdList?.Count > 0)
|
||||
{
|
||||
visitTaskFilter.And(t => subejctIdList.Contains(t.SubjectId));
|
||||
visitTaskFilter= visitTaskFilter.And(t => subejctIdList.Contains(t.SubjectId));
|
||||
}
|
||||
|
||||
//所选访视数量 的访视 其中必有一个访视后有全局任务
|
||||
@@ -212,7 +286,9 @@ namespace IRaCIS.Core.Application.Service
|
||||
TrialSiteCode = t.TrialSite.TrialSiteCode,
|
||||
SubjectId = t.Id,
|
||||
|
||||
IsHaveGeneratedTask = t.SubjectVisitTaskList.Any(c => c.IsAnalysisCreate && c.DoctorUserId == doctorUserId),
|
||||
BlindSubjectCode=t.SubjectVisitTaskList.Where(t=>t.IsAnalysisCreate).OrderByDescending(t=>t.BlindSubjectCode).Select(t=>t.BlindSubjectCode).FirstOrDefault(),
|
||||
|
||||
IsHaveGeneratedTask = t.SubjectVisitTaskList.AsQueryable().Any(subjectIsHaveGeneratedTaskFilter),
|
||||
|
||||
|
||||
ValidVisitCount = t.SubjectVisitTaskList.AsQueryable().Where(visitTaskFilter).Count(),
|
||||
@@ -231,7 +307,8 @@ namespace IRaCIS.Core.Application.Service
|
||||
VisitTaskNum = c.VisitTaskNum,
|
||||
TrialId = c.TrialId,
|
||||
|
||||
IsHaveGeneratedTask = c.Subject.SubjectVisitTaskList.Any(t => t.ConsistentAnalysisOriginalTaskId == c.Id),
|
||||
//自身一致性才有意义
|
||||
//IsHaveGeneratedTask = c.Subject.SubjectVisitTaskList.Any(t => t.ConsistentAnalysisOriginalTaskId == c.Id),
|
||||
|
||||
GlobalVisitTaskList = c.Subject.SubjectVisitTaskList.Where(t => t.VisitTaskNum == c.VisitTaskNum + ReadingCommon.TaskNumDic[ReadingCategory.Global] && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned && t.SignTime!.Value.AddDays(filterObj.IntervalWeeks * 7) < DateTime.Now).Select(c => new VisitTaskSimpleDTO()
|
||||
{
|
||||
@@ -296,7 +373,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
IsHaveReadingPeriod = taskConsistentRule.IsHaveReadingPeriod,
|
||||
PlanVisitCount = taskConsistentRule.PlanVisitCount,
|
||||
|
||||
GeneratedSubjectCount = taskConsistentRule.Trial.VisitTaskList.Where(t => t.IsAnalysisCreate && t.IsSelfAnalysis == true).Select(t => t.SubjectId).Distinct().Count(),
|
||||
GeneratedSubjectCount = taskConsistentRule.Trial.VisitTaskList.Where(t => t.IsAnalysisCreate && t.IsSelfAnalysis == true && t.DoctorUserId==user.Id).Select(t => t.SubjectId).Distinct().Count(),
|
||||
|
||||
AnalysisDoctorUser = new UserSimpleInfo()
|
||||
{
|
||||
@@ -309,19 +386,19 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
|
||||
|
||||
//if (await _taskConsistentRuleRepository.AnyAsync(t => t.TrialId == inQuery.TrialId))
|
||||
//{
|
||||
// var rule = await _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId).ProjectTo<TaskConsistentRuleBatchAddOrEdit>(_mapper.ConfigurationProvider).FirstAsync();
|
||||
//if (await _taskConsistentRuleRepository.AnyAsync(t => t.TrialId == inQuery.TrialId))
|
||||
//{
|
||||
// var rule = await _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId).ProjectTo<TaskConsistentRuleBatchAddOrEdit>(_mapper.ConfigurationProvider).FirstAsync();
|
||||
|
||||
// rule.IsBatchAdd = true;
|
||||
// rule.IsBatchAdd = true;
|
||||
|
||||
// await BatchAddOrUpdateTaskConsistentRule(rule);
|
||||
//}
|
||||
// await BatchAddOrUpdateTaskConsistentRule(rule);
|
||||
//}
|
||||
|
||||
//#endregion
|
||||
//#endregion
|
||||
|
||||
//var taskConsistentRuleQueryable = _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId)
|
||||
// .ProjectTo<TaskConsistentRuleView>(_mapper.ConfigurationProvider);
|
||||
//var taskConsistentRuleQueryable = _taskConsistentRuleRepository.Where(t => t.TrialId == inQuery.TrialId)
|
||||
// .ProjectTo<TaskConsistentRuleView>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await taskConsistentRuleQueryable.ToListAsync();
|
||||
}
|
||||
@@ -397,7 +474,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
var verifyExp1 = new EntityVerifyExp<TaskConsistentRule>()
|
||||
{
|
||||
VerifyExp = t => t.TrialId == addOrEditTaskConsistentRule.TrialId && t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis,
|
||||
VerifyExp = t => t.TrialId == addOrEditTaskConsistentRule.TrialId && t.IsSelfAnalysis == addOrEditTaskConsistentRule.IsSelfAnalysis,
|
||||
VerifyMsg = "已有该项目配置,不允许继续增加"
|
||||
};
|
||||
|
||||
@@ -414,7 +491,7 @@ 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))
|
||||
{
|
||||
throw new BusinessValidationFailedException("已产生一致性分析任务,不允许删除");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user