修改一版

This commit is contained in:
he
2022-06-22 11:50:12 +08:00
parent fa0f04c808
commit ff0f3ba39d
4 changed files with 61 additions and 21 deletions
@@ -129,12 +129,12 @@ namespace IRaCIS.Core.Application.ViewModel
//public String TrialSiteCode { get; set; } = String.Empty;
//public Guid TrialId { get; set; }
public Guid SubjectId { get; set; }
public Guid? SubjectId { get; set; }
public string SubjectCode { get; set; } = String.Empty;
public bool IsUrgent => UnReadTaskList.Any(t => t.IsUrgent);
public int? UnReadTaskCount { get; set; }
public int UnReadTaskCount { get; set; }
public DateTime? SuggesteFinishedTime => UnReadTaskList.Max(t => t.SuggesteFinishedTime);
@@ -199,6 +199,7 @@ namespace IRaCIS.Core.Application.ViewModel
public Guid TrialId { get; set; }
public string SubjectCode { get; set; }
}
public class SubjectAssignQuery : PageInput
@@ -190,14 +190,15 @@ namespace IRaCIS.Core.Application.Service
/// <summary>
/// IR 待阅片任务列表Subject 维度统计)
/// IR 待阅片任务列表
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<PageOutput<IRUnReadSubjectView>> GetIRUnReadSubjectTaskList(IRUnReadSubjectQuery iRUnReadSubjectQuery)
public async Task<(PageOutput<IRUnReadSubjectView>,object)> GetIRUnReadSubjectTaskList(IRUnReadSubjectQuery iRUnReadSubjectQuery)
{
var trialId = iRUnReadSubjectQuery.TrialId;
#region
//var query = _visitTaskRepository.Where(t => t.TrialId == trialId)
// .Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned)
// .GroupBy(t => new { t.SubjectId, t.Subject.Code })
@@ -213,21 +214,46 @@ namespace IRaCIS.Core.Application.Service
#region Subject
var isReadingTaskViewInOrder = await _trialRepository.Where(x => x.Id == iRUnReadSubjectQuery.TrialId).Select(x => x.IsReadingTaskViewInOrder).FirstOrDefaultAsync();
if (isReadingTaskViewInOrder)
{
var subjectQuery = _subjectRepository.Where(t => t.TrialId == trialId)
.Where(t => t.SubjectDoctorList.Any(t => t.DoctorUserId == _userInfo.Id))
.WhereIf(!string.IsNullOrEmpty(iRUnReadSubjectQuery.SubjectCode), t => t.Code.Contains(iRUnReadSubjectQuery.SubjectCode))
.Select(s => new IRUnReadSubjectView()
{
SubjectId = s.Id,
SubjectCode = s.Code,
UnReadTaskCount = s.SubjectVisitTaskList.Count(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id),
UnReadTaskList = s.SubjectVisitTaskList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id).Select(u => new IRUnreadTaskView() { Id = u.Id, IsUrgent = u.IsUrgent, SuggesteFinishedTime = u.SuggesteFinishedTime }).ToList(),
})
.Where(t => t.UnReadTaskCount > 0);
var subjectQuery = _subjectRepository.Where(t => t.TrialId == trialId)
.Where(t => t.SubjectDoctorList.Any(t => t.DoctorUserId == _userInfo.Id))
.WhereIf(!string.IsNullOrEmpty(iRUnReadSubjectQuery.SubjectCode), t => t.Code.Contains(iRUnReadSubjectQuery.SubjectCode))
.Select(s => new IRUnReadSubjectView()
var result= await subjectQuery.ToPagedListAsync(iRUnReadSubjectQuery.PageIndex, iRUnReadSubjectQuery.PageSize, String.IsNullOrEmpty(iRUnReadSubjectQuery.SortField) ? nameof(IRUnReadSubjectView.SubjectId) : iRUnReadSubjectQuery.SortField, iRUnReadSubjectQuery.Asc);
return (result, new {
IsReadingTaskViewInOrder=isReadingTaskViewInOrder,
});
}
else
{
var taskQuery = _trialRepository.Where(x => x.Id == trialId )
.Select(s => new IRUnReadSubjectView()
{
SubjectId = null,
SubjectCode = String.Empty,
UnReadTaskCount = s.VisitTaskList.Count(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id),
UnReadTaskList = s.VisitTaskList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id).Select(u => new IRUnreadTaskView() { Id = u.Id, IsUrgent = u.IsUrgent, SuggesteFinishedTime = u.SuggesteFinishedTime }).ToList(),
})
.Where(t => t.UnReadTaskCount > 0);
var result =await taskQuery.ToPagedListAsync(iRUnReadSubjectQuery.PageIndex, iRUnReadSubjectQuery.PageSize, String.IsNullOrEmpty(iRUnReadSubjectQuery.SortField) ? nameof(IRUnReadSubjectView.SubjectCode) : iRUnReadSubjectQuery.SortField, iRUnReadSubjectQuery.Asc);
return (result, new
{
SubjectId = s.Id,
SubjectCode = s.Code,
UnReadTaskCount = s.SubjectVisitTaskList.Count(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id),
UnReadTaskList = s.SubjectVisitTaskList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id).Select(u => new IRUnreadTaskView() { Id = u.Id, IsUrgent = u.IsUrgent, SuggesteFinishedTime = u.SuggesteFinishedTime }).ToList(),
})
.Where(t => t.UnReadTaskCount > 0);
IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
});
return await subjectQuery.ToPagedListAsync(iRUnReadSubjectQuery.PageIndex, iRUnReadSubjectQuery.PageSize, String.IsNullOrEmpty(iRUnReadSubjectQuery.SortField) ? nameof(IRUnReadSubjectView.SubjectId) : iRUnReadSubjectQuery.SortField, iRUnReadSubjectQuery.Asc);
}
#endregion