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
|
|
|
|
|
|
|
|
}
|
|
}
|
|
} |