irc-netcore-api/IRaCIS.Core.Application/Service/ReadingAndReport/ReadingService.cs

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());
// }
// }
//}