diff --git a/src/Shentun.Peis.Application/ChargeReports/ChargeReportAppService.cs b/src/Shentun.Peis.Application/ChargeReports/ChargeReportAppService.cs index a544d07..d3faaf1 100644 --- a/src/Shentun.Peis.Application/ChargeReports/ChargeReportAppService.cs +++ b/src/Shentun.Peis.Application/ChargeReports/ChargeReportAppService.cs @@ -1,4 +1,5 @@ -using JetBrains.Annotations; +using Castle.Components.DictionaryAdapter.Xml; +using JetBrains.Annotations; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -15,6 +16,7 @@ using System.Text; using System.Threading.Tasks; using TencentCloud.Faceid.V20180301.Models; using TencentCloud.Mrs.V20200910.Models; +using TencentCloud.Teo.V20220901.Models; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; @@ -563,7 +565,7 @@ namespace Shentun.Peis.ChargeReports PatientNo = s.PatientNo, SexName = s.SexName, StandardPrice = DataHelper.DecimalRetainDecimals(s.f.StandardPrice * s.f.Amount, 2), - Discount = s.f.StandardPrice * s.f.Amount ==0 ? "0%": Math.Floor((s.b.ChargePrice * s.b.Amount) / (s.f.StandardPrice * s.f.Amount)) + "%" + Discount = s.f.StandardPrice * s.f.Amount == 0 ? "0%" : Math.Floor((s.b.ChargePrice * s.b.Amount) / (s.f.StandardPrice * s.f.Amount)) + "%" }).ToList(); return patientRegisterGroup; @@ -579,53 +581,80 @@ namespace Shentun.Peis.ChargeReports [HttpPost("api/app/charge-report/get-Personal-Fee-Details-report-in-fee-summary")] public async Task GetPersonalFeeDetailsReportInFeeSummaryAsync(GetPersonalFeeDetailsReportInFeeSummaryRequestDto input) { + #region 替换 + //var query = from a in await _patientRegisterRepository.GetQueryableAsync() + // join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb + // from ab in bb.DefaultIfEmpty() + // join c in await _sexRepository.GetQueryableAsync() on a.SexId equals c.Id into cc + // from ac in cc.DefaultIfEmpty() + // join d in (await _registerAsbitemRepository.GetQueryableAsync()).Where(m => m.IsCharge == 'Y') + // .GroupBy(g => g.PatientRegisterId) + // .Select(s => new + // { + // PatientRegisterId = s.Key, + // AsbitemChargeMoney = DataHelper.DecimalRetainDecimals(s.Sum(ss => ss.ChargePrice * ss.Amount), 2) + // }) on a.Id equals d.PatientRegisterId + // join e in await _chargeRepository.GetQueryableAsync() on a.Id equals e.PatientRegisterId + // join f in await _chargePayRepository.GetQueryableAsync() on e.Id equals f.ChargeId + // join g in await _payModeRepository.GetQueryableAsync() on f.PayModeId equals g.Id into gg + // from ag in gg.DefaultIfEmpty() + // join h in await _userRepository.GetQueryableAsync() on e.CreatorId equals h.Id into hh + // from ah in hh.DefaultIfEmpty() + // where a.CustomerOrgId == GuidFlag.PersonCustomerOrgId + // select new + // { + // a, + // e, + // f, + // PatientName = a.PatientName, + // Age = a.Age, + // PatientNo = ab != null ? ab.PatientNo : "", + // SexName = ac != null ? ac.DisplayName : "", + // AsbitemChargeMoney = d.AsbitemChargeMoney, + // BookKeepingName = ah != null ? ah.UserName : "", + // PayModeName = ag != null ? ag.DisplayName : "" + // }; - var query = from a in await _patientRegisterRepository.GetQueryableAsync() - join b in await _patientRepository.GetQueryableAsync() on a.PatientId equals b.Id into bb - from ab in bb.DefaultIfEmpty() - join c in await _sexRepository.GetQueryableAsync() on a.SexId equals c.Id into cc - from ac in cc.DefaultIfEmpty() - join d in (await _registerAsbitemRepository.GetQueryableAsync()).Where(m => m.IsCharge == 'Y') - .GroupBy(g => g.PatientRegisterId) - .Select(s => new - { - PatientRegisterId = s.Key, - AsbitemChargeMoney = DataHelper.DecimalRetainDecimals(s.Sum(ss => ss.ChargePrice * ss.Amount), 2) - }) on a.Id equals d.PatientRegisterId - join e in await _chargeRepository.GetQueryableAsync() on a.Id equals e.PatientRegisterId - join f in await _chargePayRepository.GetQueryableAsync() on e.Id equals f.ChargeId - join g in await _payModeRepository.GetQueryableAsync() on f.PayModeId equals g.Id into gg + + + #endregion + + + + var query = from a in (await _chargeRepository.GetQueryableAsync()).Include(x => x.ChargePays).ThenInclude(x => x.PayMode) + join b in await _chargeAsbitemRepository.GetQueryableAsync() on a.Id equals b.ChargeId + join c in await _registerAsbitemRepository.GetQueryableAsync() on new { PatientRegisterId = a.PatientRegisterId, AsbitemId = b.AsbitemId } + equals new { PatientRegisterId = c.PatientRegisterId, AsbitemId = c.AsbitemId } + join d in await _patientRegisterRepository.GetQueryableAsync() on a.PatientRegisterId equals d.Id + join e in await _patientRepository.GetQueryableAsync() on d.PatientId equals e.Id into ee + from ae in ee.DefaultIfEmpty() + join f in await _sexRepository.GetQueryableAsync() on d.SexId equals f.Id into ff + from af in ff.DefaultIfEmpty() + join g in await _userRepository.GetQueryableAsync() on a.CreatorId equals g.Id into gg from ag in gg.DefaultIfEmpty() - join h in await _userRepository.GetQueryableAsync() on e.CreatorId equals h.Id into hh - from ah in hh.DefaultIfEmpty() - where a.CustomerOrgGroupId == GuidFlag.PersonCustomerOrgId + where d.CustomerOrgId == GuidFlag.PersonCustomerOrgId select new { a, - e, - f, - PatientName = a.PatientName, - Age = a.Age, - PatientNo = ab != null ? ab.PatientNo : "", - SexName = ac != null ? ac.DisplayName : "", - AsbitemChargeMoney = d.AsbitemChargeMoney, - BookKeepingName = ah != null ? ah.UserName : "", - PayModeName = ag != null ? ag.DisplayName : "" + b, + c, + PatientName = d.PatientName, + Age = d.Age, + PatientNo = ae != null ? ae.PatientNo : "", + SexName = af != null ? af.DisplayName : "", + BookKeepingName = ag != null ? ag.UserName : "" }; - var ggg = query.ToQueryString(); - - if (input.UserIds.Any()) { - query = query.Where(m => input.UserIds.Contains(m.e.CreatorId.Value)); + query = query.Where(m => input.UserIds.Contains(m.a.CreatorId.Value)); } if (!string.IsNullOrWhiteSpace(input.StartDate) && !string.IsNullOrWhiteSpace(input.EndDate)) { - query = query.Where(m => m.e.CreationTime >= Convert.ToDateTime(input.StartDate) - && m.e.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)); + query = query.Where(m => m.a.CreationTime >= Convert.ToDateTime(input.StartDate) + && m.a.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1)); } if (!string.IsNullOrWhiteSpace(input.PatientName)) @@ -639,26 +668,27 @@ namespace Shentun.Peis.ChargeReports } - var ggggg = query.ToList(); - var personalFeeDetailsReportInFeeSummary_Details = query.GroupBy(g => g.e.Id).Select(s => new GetPersonalFeeDetailsReportInFeeSummary_Detail + var sqlstr = query.ToQueryString(); + + var personalFeeDetailsReportInFeeSummary_Details = query.GroupBy(g => g.b.ChargeId).Select(s => new GetPersonalFeeDetailsReportInFeeSummary_Detail { Age = s.FirstOrDefault().Age, BookKeepingName = s.FirstOrDefault().BookKeepingName, - BookkeepingTiem = s.FirstOrDefault().e.CreationTime.ToString("yyyy-MM-dd HH:mm"), - ChargeFlagName = s.FirstOrDefault().e.ChargeFlag == ChargeFlag.Charge ? "收费" : "退费", - ChargeMoney = s.FirstOrDefault().AsbitemChargeMoney, + BookkeepingTiem = s.FirstOrDefault().a.CreationTime.ToString("yyyy-MM-dd HH:mm"), + ChargeFlagName = s.FirstOrDefault().a.ChargeFlag == ChargeFlag.Charge ? "收费" : "退费", PatientName = s.FirstOrDefault().PatientName, PatientNo = s.FirstOrDefault().PatientNo, - ReceivedChargeMoney = DataHelper.DecimalRetainDecimals(s.Sum(ss => ss.f.ChargeMoney), 2), SexName = s.FirstOrDefault().SexName, - DiscountMoney = s.FirstOrDefault().AsbitemChargeMoney - DataHelper.DecimalRetainDecimals(s.Sum(ss => ss.f.ChargeMoney), 2), - PayModes = s.Select(ss => new GetPersonalFeeDetailsReportInFeeSummary_PayMode + ChargeMoney = DataHelper.DecimalRetainDecimals(s.Sum(ss => ss.c.ChargePrice * ss.c.Amount), 2), + ReceivedChargeMoney = DataHelper.DecimalRetainDecimals(s.Sum(ss => ss.b.ChargePrice * ss.b.Amount), 2), + DiscountMoney = DataHelper.DecimalRetainDecimals(s.Sum(ss => ss.c.ChargePrice * ss.c.Amount), 2) - DataHelper.DecimalRetainDecimals(s.Sum(ss => ss.b.ChargePrice * ss.b.Amount), 2), + PayModes = s.FirstOrDefault().a.ChargePays.Select(ss => new GetPersonalFeeDetailsReportInFeeSummary_PayMode { - PayModeName = ss.PayModeName, - ReceivedChargeMoney = ss.f.ChargeMoney + PayModeName = ss.PayMode.DisplayName, + ReceivedChargeMoney = ss.ChargeMoney }).ToList() - }).ToList(); + }).OrderBy(o => o.PatientName).ToList(); decimal sumChargeMoney = personalFeeDetailsReportInFeeSummary_Details.Any() ? DataHelper.DecimalRetainDecimals(personalFeeDetailsReportInFeeSummary_Details.Sum(s => s.ChargeMoney), 2) : 0;