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 90ee2bf..f180854 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,81 @@ 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))
@@ -638,37 +668,79 @@ namespace Shentun.Peis.ChargeReports
query = query.Where(m => m.PatientNo == input.PatientNo);
}
-
- var ggggg = query.ToList();
-
- var personalFeeDetailsReportInFeeSummary_Details = query.GroupBy(g => g.e.Id).Select(s => new GetPersonalFeeDetailsReportInFeeSummary_Detail
+
+ 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().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),
+ 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
{
- 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;
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;
}