diff --git a/src/Shentun.Peis.Application.Contracts/ChargeReports/GetPersonalFeeDetailsReportInFeeSummaryDto.cs b/src/Shentun.Peis.Application.Contracts/ChargeReports/GetPersonalFeeDetailsReportInFeeSummaryDto.cs index 4dce734..0d87c22 100644 --- a/src/Shentun.Peis.Application.Contracts/ChargeReports/GetPersonalFeeDetailsReportInFeeSummaryDto.cs +++ b/src/Shentun.Peis.Application.Contracts/ChargeReports/GetPersonalFeeDetailsReportInFeeSummaryDto.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Text; +using System.Text.Json.Serialization; namespace Shentun.Peis.ChargeReports { @@ -35,6 +36,12 @@ namespace Shentun.Peis.ChargeReports public class GetPersonalFeeDetailsReportInFeeSummary_Detail { + + /// + /// 收费ID + /// + public Guid ChargeId { get; set; } + /// /// 档案号 /// @@ -76,7 +83,7 @@ namespace Shentun.Peis.ChargeReports /// /// 实收金额 /// - public decimal ReceivedChargeMoney { get; set; } + public decimal TotalReceivedChargeMoney { get; set; } /// /// 收费人 @@ -94,10 +101,21 @@ namespace Shentun.Peis.ChargeReports /// public string ChargeFlagName { get; set; } + + /// + /// 支付方式 + /// + public string PayModeName { get; set; } + /// - /// 支付方式明细 + /// 实收金额 /// + public decimal ReceivedChargeMoney { get; set; } + + [JsonIgnore] public List PayModes { get; set; } + + } public class GetPersonalFeeDetailsReportInFeeSummary_PayMode @@ -112,4 +130,10 @@ namespace Shentun.Peis.ChargeReports /// public decimal ReceivedChargeMoney { get; set; } } + + + + + + } diff --git a/src/Shentun.Peis.Application/ChargeReports/ChargeReportAppService.cs b/src/Shentun.Peis.Application/ChargeReports/ChargeReportAppService.cs index d3faaf1..62f3e91 100644 --- a/src/Shentun.Peis.Application/ChargeReports/ChargeReportAppService.cs +++ b/src/Shentun.Peis.Application/ChargeReports/ChargeReportAppService.cs @@ -616,10 +616,9 @@ namespace Shentun.Peis.ChargeReports // }; - #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 @@ -646,6 +645,8 @@ namespace Shentun.Peis.ChargeReports }; + + if (input.UserIds.Any()) { query = query.Where(m => input.UserIds.Contains(m.a.CreatorId.Value)); @@ -667,12 +668,10 @@ namespace Shentun.Peis.ChargeReports query = query.Where(m => m.PatientNo == input.PatientNo); } - - - var sqlstr = query.ToQueryString(); - + var personalFeeDetailsReportInFeeSummary_Details = query.GroupBy(g => g.b.ChargeId).Select(s => new GetPersonalFeeDetailsReportInFeeSummary_Detail { + ChargeId = s.Key, Age = s.FirstOrDefault().Age, BookKeepingName = s.FirstOrDefault().BookKeepingName, BookkeepingTiem = s.FirstOrDefault().a.CreationTime.ToString("yyyy-MM-dd HH:mm"), @@ -681,7 +680,7 @@ namespace Shentun.Peis.ChargeReports PatientNo = s.FirstOrDefault().PatientNo, SexName = s.FirstOrDefault().SexName, 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), + TotalReceivedChargeMoney = 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 { @@ -691,14 +690,57 @@ namespace Shentun.Peis.ChargeReports }).OrderBy(o => o.PatientName).ToList(); + + + decimal sumChargeMoney = personalFeeDetailsReportInFeeSummary_Details.Any() ? DataHelper.DecimalRetainDecimals(personalFeeDetailsReportInFeeSummary_Details.Sum(s => s.ChargeMoney), 2) : 0; decimal sumDiscountMoney = personalFeeDetailsReportInFeeSummary_Details.Any() ? DataHelper.DecimalRetainDecimals(personalFeeDetailsReportInFeeSummary_Details.Sum(s => s.DiscountMoney), 2) : 0; - decimal sumReceivedChargeMoney = personalFeeDetailsReportInFeeSummary_Details.Any() ? DataHelper.DecimalRetainDecimals(personalFeeDetailsReportInFeeSummary_Details.Sum(s => s.ReceivedChargeMoney), 2) : 0; + decimal sumReceivedChargeMoney = personalFeeDetailsReportInFeeSummary_Details.Any() ? DataHelper.DecimalRetainDecimals(personalFeeDetailsReportInFeeSummary_Details.Sum(s => s.TotalReceivedChargeMoney), 2) : 0; + + + + //支付方式整合到上级 + + + List personalFeeDetailsReportInFeeSummary_Details_new = new List(); + + + + foreach (var item in personalFeeDetailsReportInFeeSummary_Details) + { + var temp = new GetPersonalFeeDetailsReportInFeeSummary_Detail(); + + foreach (var payMode in item.PayModes) + { + temp = new GetPersonalFeeDetailsReportInFeeSummary_Detail() + { + ChargeId = item.ChargeId, + Age = item.Age, + BookKeepingName = item.BookKeepingName, + BookkeepingTiem = item.BookkeepingTiem, + ChargeFlagName = item.ChargeFlagName, + PatientName = item.PatientName, + PatientNo = item.PatientNo, + SexName = item.SexName, + ChargeMoney = item.ChargeMoney, + TotalReceivedChargeMoney = item.TotalReceivedChargeMoney, + DiscountMoney = item.DiscountMoney, + PayModeName = payMode.PayModeName, + ReceivedChargeMoney = payMode.ReceivedChargeMoney, + + }; + + personalFeeDetailsReportInFeeSummary_Details_new.Add(temp); + } + + } + + var personalFeeDetailsReportInFeeSummaryDto = new GetPersonalFeeDetailsReportInFeeSummaryDto { ChargeCount = personalFeeDetailsReportInFeeSummary_Details.Count, - Details = personalFeeDetailsReportInFeeSummary_Details, + Details = personalFeeDetailsReportInFeeSummary_Details_new, SumChargeMoney = sumChargeMoney, SumDiscountMoney = sumDiscountMoney, SumReceivedChargeMoney = sumReceivedChargeMoney diff --git a/src/Shentun.Peis.Domain/DataHelper.cs b/src/Shentun.Peis.Domain/DataHelper.cs index 92f1cee..cde0886 100644 --- a/src/Shentun.Peis.Domain/DataHelper.cs +++ b/src/Shentun.Peis.Domain/DataHelper.cs @@ -368,7 +368,7 @@ namespace Shentun.Peis decimal newValue = 0; if (value != null) { - Math.Round(value.Value, decimalLength); + newValue = Math.Round(value.Value, decimalLength); } return newValue; }