修改待阅列表
	
		
			
	
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
					Details
				
			
		
	
				
					
				
			
				
	
				continuous-integration/drone/push Build is passing
				
					Details
				
			
		
	
							parent
							
								
									d727703075
								
							
						
					
					
						commit
						e3b6feb4da
					
				| 
						 | 
				
			
			@ -63,7 +63,7 @@
 | 
			
		|||
 | 
			
		||||
    "AutoLoginOutMinutes": 1,
 | 
			
		||||
 | 
			
		||||
    "OpenLoginMFA": true
 | 
			
		||||
    "OpenLoginMFA": false
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  "SystemEmailSendConfig": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -105,7 +105,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
            var list = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId && t.IsConfirm)
 | 
			
		||||
 | 
			
		||||
                .OrderBy(t => t.ShowOrder)
 | 
			
		||||
                .Select(t => new TrialReadingCriterionDto() {
 | 
			
		||||
                .Select(t => new TrialReadingCriterionDto()
 | 
			
		||||
                {
 | 
			
		||||
                    TrialReadingCriterionId = t.Id,
 | 
			
		||||
                    IsAutoCreate = t.IsAutoCreate,
 | 
			
		||||
                    IsAdditionalAssessment = t.IsAdditionalAssessment,
 | 
			
		||||
| 
						 | 
				
			
			@ -943,14 +944,15 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<(PageOutput<IRUnReadSubjectView>, object)> GetIRUnReadSubjectTaskList(IRUnReadSubjectQuery iRUnReadSubjectQuery)
 | 
			
		||||
        public async Task<IResponseOutput<PageOutput<IRUnReadSubjectView>>> GetIRUnReadSubjectTaskList(IRUnReadSubjectQuery inQuery)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
            var trialId = iRUnReadSubjectQuery.TrialId;
 | 
			
		||||
            var trialId = inQuery.TrialId;
 | 
			
		||||
            var subjectCode = inQuery.SubjectCode;
 | 
			
		||||
 | 
			
		||||
            var trialReadingCriterionId = iRUnReadSubjectQuery.TrialReadingCriterionId;
 | 
			
		||||
            var trialReadingCriterionId = inQuery.TrialReadingCriterionId;
 | 
			
		||||
 | 
			
		||||
            var criterionConfig = await _trialReadingCriterionRepository.Where(x => x.Id == iRUnReadSubjectQuery.TrialReadingCriterionId).FirstNotNullAsync();
 | 
			
		||||
            var criterionConfig = await _trialReadingCriterionRepository.Where(x => x.Id == inQuery.TrialReadingCriterionId).FirstNotNullAsync();
 | 
			
		||||
 | 
			
		||||
            var readingTool = criterionConfig.ReadingTool;
 | 
			
		||||
            var isReadingTaskViewInOrder = criterionConfig.IsReadingTaskViewInOrder;
 | 
			
		||||
| 
						 | 
				
			
			@ -964,13 +966,13 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                {
 | 
			
		||||
                    TrialId = trialId,
 | 
			
		||||
                    TrialReadingCriterionId = trialReadingCriterionId,
 | 
			
		||||
                    SubjectCode = iRUnReadSubjectQuery.SubjectCode,
 | 
			
		||||
                    SubjectCode = inQuery.SubjectCode,
 | 
			
		||||
                    Page = new PageInput()
 | 
			
		||||
                    {
 | 
			
		||||
                        PageIndex = iRUnReadSubjectQuery.PageIndex,
 | 
			
		||||
                        PageSize = iRUnReadSubjectQuery.PageSize,
 | 
			
		||||
                        Asc = iRUnReadSubjectQuery.Asc,
 | 
			
		||||
                        SortField = iRUnReadSubjectQuery.SortField,
 | 
			
		||||
                        PageIndex = inQuery.PageIndex,
 | 
			
		||||
                        PageSize = inQuery.PageSize,
 | 
			
		||||
                        Asc = inQuery.Asc,
 | 
			
		||||
                        SortField = inQuery.SortField,
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -984,15 +986,15 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
 | 
			
		||||
                var result = new PageOutput<IRUnReadSubjectView>()
 | 
			
		||||
                {
 | 
			
		||||
                    PageSize = iRUnReadSubjectQuery.PageSize,
 | 
			
		||||
                    PageIndex = iRUnReadSubjectQuery.PageIndex,
 | 
			
		||||
                    PageSize = inQuery.PageSize,
 | 
			
		||||
                    PageIndex = inQuery.PageIndex,
 | 
			
		||||
                    TotalCount = totalCount,
 | 
			
		||||
                    CurrentPageData = currentPageData,
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                // 封装的方法有问题
 | 
			
		||||
                //var result = await visitQuery.ToPagedListAsync(iRUnReadSubjectQuery.PageIndex, iRUnReadSubjectQuery.PageSize, String.IsNullOrEmpty(iRUnReadSubjectQuery.SortField) ? nameof(IRUnReadSubjectView.SubjectId) : iRUnReadSubjectQuery.SortField, iRUnReadSubjectQuery.Asc);
 | 
			
		||||
                return (result, new
 | 
			
		||||
                return ResponseOutput.Ok(result, new
 | 
			
		||||
                {
 | 
			
		||||
                    RandomReadInfo = new IRUnReadOutDto(),
 | 
			
		||||
                    IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
 | 
			
		||||
| 
						 | 
				
			
			@ -1004,26 +1006,15 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                    CriterionType = criterionConfig.CriterionType,
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            else if(isReadingTaskViewInOrder == ReadingOrder.SubjectRandom)
 | 
			
		||||
            {
 | 
			
		||||
                var taskQuery = _visitTaskRepository.Where(x => x.TrialId == iRUnReadSubjectQuery.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == trialReadingCriterionId)
 | 
			
		||||
                       // .Where(x=>x.Subject.ClinicalDataList.Any(c => c.IsSign && (c.ReadingId == x.SouceReadModuleId || c.ReadingId == x.SourceSubjectVisitId)))
 | 
			
		||||
                       .Where(x => !x.Subject.IsDeleted).Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign);
 | 
			
		||||
                var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
 | 
			
		||||
 | 
			
		||||
                IRUnReadOutDto iRUnReadOut = new IRUnReadOutDto()
 | 
			
		||||
                {
 | 
			
		||||
                    FinishJudgeTaskCount = await taskQuery.Where(x => x.ReadingCategory == ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).CountAsync(),
 | 
			
		||||
                    FinishTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).CountAsync(),
 | 
			
		||||
                    SuggesteFinishedTime = await taskQuery.Where(x => x.ReadingTaskState != ReadingTaskState.HaveSigned).MaxAsync(x => x.SuggesteFinishedTime),
 | 
			
		||||
                    UnReadJudgeTaskCount = await taskQuery.Where(x => x.ReadingCategory == ReadingCategory.Judge && x.ReadingTaskState != ReadingTaskState.HaveSigned).CountAsync(),
 | 
			
		||||
                    UnReadTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState != ReadingTaskState.HaveSigned).CountAsync(),
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                var visitGroupQuery = taskQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode });
 | 
			
		||||
                var visitQuery = _visitTaskRepository.Where(x => x.TrialId == trialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect)
 | 
			
		||||
                  
 | 
			
		||||
                    .WhereIf(!string.IsNullOrEmpty(subjectCode), t => (t.Subject.Code.Contains(subjectCode!) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(subjectCode!) && t.IsAnalysisCreate));
 | 
			
		||||
 | 
			
		||||
                var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode });
 | 
			
		||||
 | 
			
		||||
                var visitTaskQuery = visitGroupQuery.Select(x => new IRUnReadSubjectView()
 | 
			
		||||
                {
 | 
			
		||||
| 
						 | 
				
			
			@ -1033,22 +1024,17 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                    SuggesteFinishedTime = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Min(x => x.SuggesteFinishedTime),
 | 
			
		||||
 | 
			
		||||
                    //未读任务量
 | 
			
		||||
                    UnReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
 | 
			
		||||
 | 
			
		||||
                    //未读 里可读任务量   
 | 
			
		||||
                    UnReadCanReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned && y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)
 | 
			
		||||
                    //不能对包含聚合或子查询的表达式执行聚合函数
 | 
			
		||||
                    //&& !x.Any(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false && t.VisitTaskNum<y.VisitTaskNum )
 | 
			
		||||
                    ).Count(),
 | 
			
		||||
                    UnReadCanReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
 | 
			
		||||
 | 
			
		||||
                    UrgentCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Where(x => x.IsUrgent).Count(),
 | 
			
		||||
 | 
			
		||||
                    //已读任务量
 | 
			
		||||
                    HaveReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
 | 
			
		||||
 | 
			
		||||
                    ExistReadingApply = x.Any(y => (y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed && y.TrialReadingCriterionId == trialReadingCriterionId) || y.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed),
 | 
			
		||||
                   
 | 
			
		||||
                    //查出所有未读的  未读的可读的  在这个列表基础上 过滤下   y.IsFrontTaskNeedSignButNotSign==false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)  这样容易排错 确认这三个字段是否维护有误
 | 
			
		||||
                    UnReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).OrderBy(x => x.VisitTaskNum)
 | 
			
		||||
                    UnReadCanReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
 | 
			
		||||
                    .OrderBy(x => x.VisitTaskNum)
 | 
			
		||||
                    .Select(u => new IRUnreadTaskView()
 | 
			
		||||
                    {
 | 
			
		||||
                        Id = u.Id,
 | 
			
		||||
| 
						 | 
				
			
			@ -1065,22 +1051,48 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                        IsClinicalDataSign = u.IsClinicalDataSign,
 | 
			
		||||
                        IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
 | 
			
		||||
                    })
 | 
			
		||||
                    .ToList(),
 | 
			
		||||
                    .ToList()
 | 
			
		||||
                }).Where(x => x.UnReadCanReadTaskCount > 0);
 | 
			
		||||
 | 
			
		||||
                var pageList = await visitTaskQuery.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField)? nameof(IRUnReadSubjectView.UnReadCanReadTaskList): inQuery.SortField, inQuery.Asc );
 | 
			
		||||
 | 
			
		||||
                var totalCount = await visitGroupQuery.CountAsync();
 | 
			
		||||
                var currentPageData = await visitTaskQuery.ToListAsync();
 | 
			
		||||
 | 
			
		||||
                return ResponseOutput.Ok(pageList, new
 | 
			
		||||
                {
 | 
			
		||||
                    RandomReadInfo = new IRUnReadOutDto(),
 | 
			
		||||
                    IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
 | 
			
		||||
                    ReadingTool = readingTool,
 | 
			
		||||
                    IseCRFShowInDicomReading = criterionConfig.IseCRFShowInDicomReading,
 | 
			
		||||
                    IsReadingShowSubjectInfo = criterionConfig.IsReadingShowSubjectInfo,
 | 
			
		||||
                    IsReadingShowPreviousResults = criterionConfig.IsReadingShowPreviousResults,
 | 
			
		||||
                    DigitPlaces = criterionConfig.DigitPlaces,
 | 
			
		||||
                    CriterionType = criterionConfig.CriterionType,
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                var taskQuery = _visitTaskRepository.Where(x => x.TrialId == inQuery.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == trialReadingCriterionId)
 | 
			
		||||
                       // .Where(x=>x.Subject.ClinicalDataList.Any(c => c.IsSign && (c.ReadingId == x.SouceReadModuleId || c.ReadingId == x.SourceSubjectVisitId)))
 | 
			
		||||
                       .Where(x => !x.Subject.IsDeleted).Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign);
 | 
			
		||||
 | 
			
		||||
                IRUnReadOutDto iRUnReadOut = new IRUnReadOutDto()
 | 
			
		||||
                {
 | 
			
		||||
                    FinishJudgeTaskCount = await taskQuery.Where(x => x.ReadingCategory == ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).CountAsync(),
 | 
			
		||||
                    FinishTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).CountAsync(),
 | 
			
		||||
                    SuggesteFinishedTime = await taskQuery.Where(x => x.ReadingTaskState != ReadingTaskState.HaveSigned).MaxAsync(x => x.SuggesteFinishedTime),
 | 
			
		||||
                    UnReadJudgeTaskCount = await taskQuery.Where(x => x.ReadingCategory == ReadingCategory.Judge && x.ReadingTaskState != ReadingTaskState.HaveSigned).CountAsync(),
 | 
			
		||||
                    UnReadTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState != ReadingTaskState.HaveSigned).CountAsync(),
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                var result = new PageOutput<IRUnReadSubjectView>()
 | 
			
		||||
                {
 | 
			
		||||
                    PageSize = iRUnReadSubjectQuery.PageSize,
 | 
			
		||||
                    PageIndex = iRUnReadSubjectQuery.PageIndex,
 | 
			
		||||
                    TotalCount = totalCount,
 | 
			
		||||
                    CurrentPageData = currentPageData,
 | 
			
		||||
                    PageSize = inQuery.PageSize,
 | 
			
		||||
                    PageIndex = inQuery.PageIndex,
 | 
			
		||||
                    TotalCount = 0,
 | 
			
		||||
                    CurrentPageData = null,
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                return (result, new
 | 
			
		||||
                return ResponseOutput.Ok(result, new
 | 
			
		||||
                {
 | 
			
		||||
                    IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
 | 
			
		||||
                    RandomReadInfo = iRUnReadOut,
 | 
			
		||||
| 
						 | 
				
			
			@ -1114,8 +1126,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
            var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            var visitQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id
 | 
			
		||||
            && x.TaskState == TaskState.Effect /*&& x.TrialReadingCriterionId== inDto.TrialReadingCriterionId*/)
 | 
			
		||||
            var visitQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect)
 | 
			
		||||
 | 
			
		||||
                 //前序 不存在  未生成任务的访视
 | 
			
		||||
                 .WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum))
 | 
			
		||||
| 
						 | 
				
			
			@ -1210,7 +1221,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
 | 
			
		||||
            var result = new List<IRUnReadSubjectView>();
 | 
			
		||||
 | 
			
		||||
            var propName = string.IsNullOrWhiteSpace(inDto.Page!.SortField) ? "UnReadCanReadTaskCount" : inDto.Page.SortField;
 | 
			
		||||
            var propName = string.IsNullOrWhiteSpace(inDto.Page!.SortField) ? nameof(IRUnReadSubjectView.UnReadCanReadTaskCount) : inDto.Page.SortField;
 | 
			
		||||
 | 
			
		||||
            var visitTaskOrderQuery = inDto.Page.Asc ? visitTaskQuery.OrderBy(propName) : visitTaskQuery.OrderBy(propName + " desc");
 | 
			
		||||
            if (inDto.Page != null)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,7 +62,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
 | 
			
		|||
            if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom))
 | 
			
		||||
            {
 | 
			
		||||
                //找到 非一致性分析,未签名,状态正常的 并且任务名称不是TimePoint的 任务
 | 
			
		||||
                var needDealTaskList = await _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false
 | 
			
		||||
                var needDealTaskList = await _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false && t.DoctorUserId==_userInfo.Id
 | 
			
		||||
                   && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskBlindName != "Timepoint" && t.ReadingCategory == ReadingCategory.Visit
 | 
			
		||||
                   && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze), true).ToListAsync();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue