197 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			C#
		
	
	
| using IRaCIS.Application.Interfaces;
 | |
| using IRaCIS.Core.Domain.Models;
 | |
| using System.Linq.Expressions;
 | |
| using Microsoft.AspNetCore.Mvc;
 | |
| using IRaCIS.Core.Infra.EFCore;
 | |
| using IRaCIS.Core.Application.Contracts;
 | |
| 
 | |
| namespace IRaCIS.Core.Application.Services
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Financial---项目收入价格验证
 | |
|     /// </summary>
 | |
|     [ ApiExplorerSettings(GroupName = "Financial")]
 | |
|     public class TrialRevenuesPriceVerificationService : BaseService, ITrialRevenuesPriceVerificationService
 | |
|     {
 | |
|         private readonly IRepository<TrialRevenuesPriceVerification> _trialRevenuesPriceVerificationRepository;
 | |
|         private readonly IRepository<Trial> _trialRepository;
 | |
|         private readonly IRepository<Doctor> _doctorRepository;
 | |
|         private readonly IRepository<Payment> _paymentRepository;
 | |
| 
 | |
|         public TrialRevenuesPriceVerificationService(IRepository<TrialRevenuesPriceVerification> trialRevenuesPriceVerificationRepository, 
 | |
|             IRepository<Trial> trialRepository,IRepository<Doctor> doctorRepository,IRepository<Payment> paymentRepository)
 | |
|         {
 | |
|             _trialRevenuesPriceVerificationRepository = trialRevenuesPriceVerificationRepository;
 | |
|             _trialRepository = trialRepository;
 | |
|             _doctorRepository = doctorRepository;
 | |
|             _paymentRepository = paymentRepository;
 | |
|         }
 | |
|         [HttpPost]
 | |
|         public async Task<AnalysisVerifyResultDTO> GetAnalysisVerifyList(RevenusVerifyQueryDTO param)
 | |
|         {
 | |
|             AnalysisVerifyResultDTO result=new AnalysisVerifyResultDTO();
 | |
|             result.RevenuesVerifyList = await GetRevenuesVerifyList(param);
 | |
| 
 | |
| 
 | |
|             var bDate = new DateTime(param.BeginDate.Year, param.BeginDate.Month, 1);
 | |
|             var eDate = new DateTime(param.EndDate.Year, param.EndDate.Month, 1);
 | |
|             eDate = eDate.AddMonths(1).AddSeconds(-1);
 | |
| 
 | |
|             Expression<Func<Payment, bool>> paymentLambda = x => x.YearMonthDate >= bDate && x.YearMonthDate <= eDate&&!x.IsLock;
 | |
| 
 | |
|             var query = from payment in _paymentRepository.Where(paymentLambda)
 | |
|                         join doctor in _doctorRepository.AsQueryable() on payment.DoctorId equals doctor.Id
 | |
|                         select new AnalysisNeedLockDTO()
 | |
|                         {
 | |
|                             YearMonth = payment.YearMonth,
 | |
|                             ReviewerCode = doctor.ReviewerCode,
 | |
|                             ReviewerName = doctor.LastName + " / " + doctor.FirstName,
 | |
|                             ReviewerNameCN = doctor.ChineseName
 | |
|                         };
 | |
| 
 | |
|             result.MonthVerifyResult = (await query.ToListAsync()).GroupBy(t => t.YearMonth).Select(g => new MonthlyResult
 | |
|             {
 | |
|                 YearMonth = g.Key,
 | |
|                 ReviewerNameList = g.Select(t => t.ReviewerName).ToList(),
 | |
|                 ReviewerNameCNList = g.Select(t => t.ReviewerNameCN).ToList(),
 | |
|                 ReviewerCodeList = g.Select(t => t.ReviewerCode).ToList()
 | |
| 
 | |
|             }).OrderBy(t=>t.YearMonth).ToList();
 | |
| 
 | |
|             return result;
 | |
|         }
 | |
| 
 | |
| 
 | |
|         [HttpPost]
 | |
|         public async Task<List<RevenusVerifyDTO>> GetRevenuesVerifyList(RevenusVerifyQueryDTO param)
 | |
|         {
 | |
|             var bDate = new DateTime(param.BeginDate.Year, param.BeginDate.Month, 1);
 | |
|             var eDate = new DateTime(param.EndDate.Year, param.EndDate.Month, 1);
 | |
|             Expression<Func<TrialRevenuesPriceVerification, bool>> trialRevenuesPriceVerificationLambda = x => x.WorkLoadDate >= bDate && x.WorkLoadDate <= eDate;
 | |
| 
 | |
|             var query = (from trialVerify in _trialRevenuesPriceVerificationRepository.Where(trialRevenuesPriceVerificationLambda)
 | |
|                 join trail in _trialRepository.AsQueryable() on trialVerify.TrialId equals trail.Id
 | |
|                 select new RevenusVerifyDTO
 | |
|                 {
 | |
|                     TrialCode = trail.TrialCode,
 | |
|                     Timepoint = trialVerify.Timepoint,
 | |
|                     TimepointIn24H = trialVerify.TimepointIn24H,
 | |
|                     TimepointIn48H = trialVerify.TimepointIn48H,
 | |
|                     Adjudication = trialVerify.Adjudication,
 | |
|                     AdjudicationIn24H = trialVerify.AdjudicationIn24H,
 | |
|                     AdjudicationIn48H = trialVerify.AdjudicationIn48H,
 | |
|                     Global = trialVerify.Global,
 | |
|                     Downtime = trialVerify.Downtime,
 | |
|                     Training = trialVerify.Training
 | |
|                 }).Distinct();
 | |
| 
 | |
| 
 | |
|             return await query.ToListAsync();
 | |
|         }
 | |
| 
 | |
| 
 | |
| 
 | |
|         //废弃
 | |
|       [Obsolete]
 | |
|         public async Task<List<RevenusVerifyDTO>> GetRevenuesVerifyResultList(RevenusVerifyQueryDTO param)
 | |
|         {
 | |
|             var bDate = new DateTime(param.BeginDate.Year, param.BeginDate.Month, 1);
 | |
|             var eDate = new DateTime(param.EndDate.Year, param.EndDate.Month, 1);
 | |
|             Expression<Func<TrialRevenuesPriceVerification, bool>> trialRevenuesPriceVerificationLambda = x => x.WorkLoadDate >= bDate && x.WorkLoadDate <= eDate;
 | |
| 
 | |
|             var query = (from trialVerify in _trialRevenuesPriceVerificationRepository.Where(trialRevenuesPriceVerificationLambda)
 | |
|                          join trail in _trialRepository.AsQueryable() on trialVerify.TrialId equals trail.Id
 | |
|                          select new RevenusVerifyDTO
 | |
|                          {
 | |
|                              TrialCode = trail.TrialCode,
 | |
|                              Timepoint = trialVerify.Timepoint,
 | |
|                              TimepointIn24H = trialVerify.TimepointIn24H,
 | |
|                              TimepointIn48H = trialVerify.TimepointIn48H,
 | |
|                              Adjudication = trialVerify.Adjudication,
 | |
|                              AdjudicationIn24H = trialVerify.AdjudicationIn24H,
 | |
|                              AdjudicationIn48H = trialVerify.AdjudicationIn48H,
 | |
|                              Global = trialVerify.Global,
 | |
|                              Downtime = trialVerify.Downtime,
 | |
|                              Training = trialVerify.Training
 | |
|                          }).Distinct();
 | |
| 
 | |
| 
 | |
|             return await query.ToListAsync();
 | |
|             #region 提示 old
 | |
|             //query = from trialVerify in _trialRevenuesPriceVerificationRepository.GetAll()
 | |
|             //    join trail in _trialRepository.GetAll() on trialVerify.TrialId equals trail.Id
 | |
|             //    join reviewer in _doctorRepository.GetAll() on trialVerify.ReviewerId equals reviewer.Id
 | |
|             //    select new RevenusVerifyDTO()
 | |
|             //    {
 | |
|             //        ReviewerCode = reviewer.Code,
 | |
|             //        TrialCode = trail.Code,
 | |
|             //        YearMonth = trialVerify.YearMonth
 | |
|             //    };
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|             ////0是Detail   1是按照项目   2是按照人  3按照月份
 | |
|             //if (param.StatType == 0)
 | |
|             //{
 | |
|             //    query = from trialVerify in _trialRevenuesPriceVerificationRepository.GetAll()
 | |
|             //            join trail in _trialRepository.GetAll() on trialVerify.TrialId equals trail.Id
 | |
|             //            join reviewer in _doctorRepository.GetAll() on trialVerify.ReviewerId equals reviewer.Id
 | |
|             //            select new RevenusVerifyDTO()
 | |
|             //            {
 | |
|             //                ReviewerCode = reviewer.Code,
 | |
|             //                TrialCode = trail.Code,
 | |
|             //                YearMonth = trialVerify.YearMonth
 | |
|             //            };
 | |
| 
 | |
|             //}
 | |
|             //else if (param.StatType == 1)
 | |
|             //{
 | |
|             //    query = (from trialVerify in _trialRevenuesPriceVerificationRepository.GetAll()
 | |
|             //        join trail in _trialRepository.GetAll() on trialVerify.TrialId equals trail.Id
 | |
|             //        select new RevenusVerifyDTO()
 | |
|             //        {
 | |
|             //            ReviewerCode = "",
 | |
|             //            TrialCode = trail.Code,
 | |
|             //            YearMonth = ""
 | |
|             //        }).Distinct();
 | |
|             //}
 | |
|             //else if (param.StatType == 2)
 | |
|             //{
 | |
|             //    query = (from trialVerify in _trialRevenuesPriceVerificationRepository.GetAll()
 | |
|             //        join trail in _trialRepository.GetAll() on trialVerify.TrialId equals trail.Id
 | |
|             //        join reviewer in _doctorRepository.GetAll() on trialVerify.ReviewerId equals reviewer.Id
 | |
|             //        select new RevenusVerifyDTO()
 | |
|             //        {
 | |
|             //            ReviewerCode = reviewer.Code,
 | |
|             //            TrialCode = trail.Code,
 | |
|             //            YearMonth = ""
 | |
|             //        }).Distinct();
 | |
|             //}
 | |
|             //else
 | |
|             //{
 | |
|             //    query = from trialVerify in _trialRevenuesPriceVerificationRepository.GetAll()
 | |
|             //        join trail in _trialRepository.GetAll() on trialVerify.TrialId equals trail.Id
 | |
|             //        join reviewer in _doctorRepository.GetAll() on trialVerify.ReviewerId equals reviewer.Id
 | |
|             //        select new RevenusVerifyDTO()
 | |
|             //        {
 | |
|             //            ReviewerCode = reviewer.Code,
 | |
|             //            TrialCode = trail.Code,
 | |
|             //            YearMonth = trialVerify.YearMonth
 | |
|             //        };
 | |
|             //}
 | |
| 
 | |
| 
 | |
|             #endregion
 | |
| 
 | |
| 
 | |
| 
 | |
|         }
 | |
|     }
 | |
| } |