185 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C#
		
	
	
//using IRaCIS.Application.Interfaces;
 | 
						|
//using IRaCIS.Application.Contracts;
 | 
						|
//using IRaCIS.Core.Infra.EFCore;
 | 
						|
 | 
						|
//using IRaCIS.Core.Domain.Models;
 | 
						|
//using System.Linq.Expressions;
 | 
						|
//using IRaCIS.Core.Infrastructure.ExpressionExtend;
 | 
						|
//using IRaCIS.Core.Infrastructure.Extention;
 | 
						|
//using Microsoft.AspNetCore.Mvc;
 | 
						|
 | 
						|
//namespace IRaCIS.Core.Application.Services
 | 
						|
//{
 | 
						|
//    [ApiExplorerSettings(GroupName = "Reading")]
 | 
						|
//    public class ReadingService : BaseService, IReviewerReadingService
 | 
						|
//    {
 | 
						|
//        private readonly IWorkloadTPRepository _workloadTPRepository;
 | 
						|
//        private readonly IWorkloadGlobalRepository _workloadGlobalRepository;
 | 
						|
//        private readonly IWorkloadADRepository _workloadADRepository;
 | 
						|
//        private readonly IRepository<Trial> _trialRepository;
 | 
						|
 | 
						|
//        private readonly IRepository<Subject> _subjectRepository;
 | 
						|
//        private readonly IRepository<SubjectVisit> _subjectVisitRepository;
 | 
						|
       
 | 
						|
//        public ReadingService(IWorkloadTPRepository workloadTPRepository,
 | 
						|
//            IWorkloadGlobalRepository workloadGlobalRepository,
 | 
						|
//            IWorkloadADRepository workloadADRepository,
 | 
						|
//            IRepository<Trial> trialRepository,
 | 
						|
//            IRepository<Subject> subjectRepository,
 | 
						|
//            IRepository<SubjectVisit> subjectVisitRepository,
 | 
						|
//            IUserInfo userInfo)
 | 
						|
//        {
 | 
						|
//            _workloadTPRepository = workloadTPRepository;
 | 
						|
//            _workloadGlobalRepository = workloadGlobalRepository;
 | 
						|
//            _workloadADRepository = workloadADRepository;
 | 
						|
//            _trialRepository = trialRepository;
 | 
						|
 | 
						|
//            _subjectRepository = subjectRepository;
 | 
						|
//            _subjectVisitRepository = subjectVisitRepository;
 | 
						|
            
 | 
						|
//        }
 | 
						|
//        /// <summary>
 | 
						|
//        /// 获取医生个人任务列表
 | 
						|
//        /// WorkloadType 1-tp,2-global,3-ad
 | 
						|
//        /// </summary>
 | 
						|
//        /// <param name="param"></param>
 | 
						|
//        /// <returns></returns>
 | 
						|
//        [HttpPost]
 | 
						|
//        public PageOutput<WorkloadReadingDTO> GetWorkloadList(WorkloadQueryParam param)
 | 
						|
//        {
 | 
						|
//            #pragma warning disable
 | 
						|
//            IQueryable<WorkloadReadingDTO> query = null;
 | 
						|
//            Expression<Func<Subject, bool>> subjectLambda = x => true;
 | 
						|
//            if (param.SubjectCode != string.Empty)
 | 
						|
//            {
 | 
						|
//                subjectLambda = subjectLambda.And(o => o.Code.Contains(param.SubjectCode));
 | 
						|
//            }
 | 
						|
//            Expression<Func<Trial, bool>> trialLambda = x => true;
 | 
						|
//            if (param.Expedited != null)
 | 
						|
//            {
 | 
						|
//                trialLambda = trialLambda.And(o => o.Expedited == param.Expedited);
 | 
						|
//            }
 | 
						|
//            if (param.TrialId != null && param.TrialId != Guid.Empty)
 | 
						|
//            {
 | 
						|
//                trialLambda = trialLambda.And(o => o.Id == param.TrialId);
 | 
						|
//            }
 | 
						|
 | 
						|
 | 
						|
//            if (param.WorkloadType == 1)// TP
 | 
						|
//            {
 | 
						|
//                Expression<Func<WorkloadTP, bool>> workloadLambda = x => true;
 | 
						|
//                workloadLambda = workloadLambda.And(u => u.ReviewerId == _userInfo.Id);
 | 
						|
//                if (param.Status != null)
 | 
						|
//                {
 | 
						|
//                    if (param.Status == 30)//30 的时候,待读和正在读(未提交的)
 | 
						|
//                    {
 | 
						|
//                        workloadLambda = workloadLambda.And(o => o.Status == 30 || o.Status == 40);
 | 
						|
//                    }
 | 
						|
//                    else
 | 
						|
//                        workloadLambda = workloadLambda.And(o => o.Status == param.Status);
 | 
						|
//                }
 | 
						|
//                query = from tp in _workloadTPRepository.Where(workloadLambda)
 | 
						|
//                        join trial in _trialRepository.Where(trialLambda) on tp.TrialId equals trial.Id
 | 
						|
//                        join subject in _subjectRepository.Where(subjectLambda) on tp.SubjectId equals subject.Id
 | 
						|
//                        join visit in _subjectVisitRepository.AsQueryable() on tp.SubjectVisitId equals visit.Id
 | 
						|
//                        select new WorkloadReadingDTO
 | 
						|
//                        {
 | 
						|
//                            Id = tp.Id,
 | 
						|
//                            StudyId = tp.StudyId,
 | 
						|
//                            WorkloadId = tp.Id,
 | 
						|
//                            WorkloadType = 1,
 | 
						|
//                            Status = tp.Status,
 | 
						|
//                            UpdateTime = tp.UpdateTime,
 | 
						|
//                            TrialId = tp.TrialId,
 | 
						|
//                            SubjectId = tp.SubjectId,
 | 
						|
//                            SubjectCode = subject.Code,
 | 
						|
//                            VisitNum = visit.VisitNum,
 | 
						|
//                            VisitName = visit.VisitName,
 | 
						|
//                            Expedited = trial.Expedited,
 | 
						|
//                            TrialCode = trial.TrialCode,
 | 
						|
//                            TrialIndication = trial.Indication,
 | 
						|
//                            WorkloadCode = tp.TimepointCode
 | 
						|
//                        };
 | 
						|
//            }
 | 
						|
//            else if (param.WorkloadType == 2)//Global
 | 
						|
//            {
 | 
						|
//                Expression<Func<WorkloadGlobal, bool>> workloadLambda = x => true;
 | 
						|
//                workloadLambda = workloadLambda.And(u => u.ReviewerId == _userInfo.Id);
 | 
						|
//                if (param.Status != null)
 | 
						|
//                {
 | 
						|
//                    if (param.Status == 30)
 | 
						|
//                    {
 | 
						|
//                        workloadLambda = workloadLambda.And(o => o.Status == 30 || o.Status == 40);
 | 
						|
//                    }
 | 
						|
//                    else
 | 
						|
//                        workloadLambda = workloadLambda.And(o => o.Status == param.Status);
 | 
						|
//                }
 | 
						|
//                query = from global in _workloadGlobalRepository.Where(workloadLambda)
 | 
						|
//                        join trial in _trialRepository.Where(trialLambda) on global.TrialId equals trial.Id
 | 
						|
//                        join subject in _subjectRepository.Where(subjectLambda) on global.SubjectId equals subject.Id
 | 
						|
//                        //join visit in _subjectVisitRepository.GetAll() on global.VisitId equals visit.Id
 | 
						|
//                        select new WorkloadReadingDTO
 | 
						|
//                        {
 | 
						|
//                            Id = global.Id,
 | 
						|
//                            WorkloadId = global.Id,
 | 
						|
//                            WorkloadType = 1,
 | 
						|
//                            Status = global.Status,
 | 
						|
//                            UpdateTime = global.UpdateTime,
 | 
						|
//                            TrialId = global.TrialId,
 | 
						|
//                            SubjectId = global.SubjectId,
 | 
						|
//                            SubjectCode = subject.Code,
 | 
						|
//                            //VisitNum = visit.VisitNum,
 | 
						|
//                            //VisitName = visit.VisitName,
 | 
						|
//                            VisitNum = global.VisitNum,
 | 
						|
//                            VisitName = global.VisitName,
 | 
						|
                            
 | 
						|
//                            Expedited = trial.Expedited,
 | 
						|
//                            TrialCode = trial.TrialCode,
 | 
						|
//                            TrialIndication = trial.Indication,
 | 
						|
//                            WorkloadCode = global.GlobalCode
 | 
						|
//                        };
 | 
						|
//            }
 | 
						|
//            else if (param.WorkloadType == 3)//AD
 | 
						|
//            {
 | 
						|
//                Expression<Func<WorkloadAD, bool>> workloadLambda = x => true;
 | 
						|
//                workloadLambda = workloadLambda.And(u => u.ReviewerId == _userInfo.Id);
 | 
						|
//                if (param.Status != null)
 | 
						|
//                {
 | 
						|
//                    if (param.Status == 30)//30 的时候,待读和正在读(未提交的)
 | 
						|
//                    {
 | 
						|
//                        workloadLambda = workloadLambda.And(o => o.Status == 30 || o.Status == 40);
 | 
						|
//                    }
 | 
						|
//                    else
 | 
						|
//                        workloadLambda = workloadLambda.And(o => o.Status == param.Status);
 | 
						|
//                }
 | 
						|
//                query = from ad in _workloadADRepository.Where(workloadLambda)
 | 
						|
//                        join trial in _trialRepository.Where(trialLambda) on ad.TrialId equals trial.Id
 | 
						|
//                        join subject in _subjectRepository.Where(subjectLambda) on ad.SubjectId equals subject.Id
 | 
						|
//                        //join visit in _subjectVisitRepository.GetAll() on ad.visi equals visit.Id
 | 
						|
//                        select new WorkloadReadingDTO
 | 
						|
//                        {
 | 
						|
//                            Id = ad.Id,
 | 
						|
//                            WorkloadId = ad.Id,
 | 
						|
//                            WorkloadType = 1,
 | 
						|
//                            Status = ad.Status,
 | 
						|
//                            UpdateTime = ad.UpdateTime,
 | 
						|
//                            TrialId = ad.TrialId,
 | 
						|
//                            SubjectId = ad.SubjectId,
 | 
						|
//                            SubjectCode = subject.Code,
 | 
						|
//                            //VisitNum = visit.VisitNum,
 | 
						|
//                            //VisitName = visit.VisitName,
 | 
						|
//                            Expedited = trial.Expedited,
 | 
						|
//                            TrialCode = trial.TrialCode,
 | 
						|
//                            TrialIndication = trial.Indication,
 | 
						|
//                            WorkloadCode = ad.ADCode
 | 
						|
//                        };
 | 
						|
//            }
 | 
						|
//            query.OrderByDescending(u => u.UpdateTime);
 | 
						|
//            var count = query.Count();
 | 
						|
//            query = query.Skip((param.PageIndex - 1) * param.PageSize).Take(param.PageSize);
 | 
						|
//            return new PageOutput<WorkloadReadingDTO>(param.PageIndex,
 | 
						|
//                param.PageSize, count, query.ToList());
 | 
						|
//        }
 | 
						|
//    }
 | 
						|
//}
 |