Browse Source

收费报表

bjmzak
wxd 2 years ago
parent
commit
1d7db71907
  1. 120
      src/Shentun.Peis.Application/ChargeReports/ChargeReportAppService.cs

120
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;
@ -579,53 +581,80 @@ namespace Shentun.Peis.ChargeReports
[HttpPost("api/app/charge-report/get-Personal-Fee-Details-report-in-fee-summary")]
public async Task<GetPersonalFeeDetailsReportInFeeSummaryDto> 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;

Loading…
Cancel
Save