From 499e793a1c94409fb5e57f363b334a27fb0385f6 Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Fri, 21 Nov 2025 09:20:51 +0800
Subject: [PATCH] 1121
---
.../GetPatientRegisterChargeBackListDto.cs | 15 ++
.../GetPatientRegisterChargeListDto.cs | 15 ++
.../RegisterChecks/RegisterCheckManager.cs | 5 +-
.../PatientRegisterChargeRepository.cs | 161 ++++++++++--------
4 files changed, 122 insertions(+), 74 deletions(-)
diff --git a/src/Shentun.Peis.Domain/PatientRegisters/GetPatientRegisterChargeBackListDto.cs b/src/Shentun.Peis.Domain/PatientRegisters/GetPatientRegisterChargeBackListDto.cs
index 04eeeac7..5c96b77c 100644
--- a/src/Shentun.Peis.Domain/PatientRegisters/GetPatientRegisterChargeBackListDto.cs
+++ b/src/Shentun.Peis.Domain/PatientRegisters/GetPatientRegisterChargeBackListDto.cs
@@ -31,5 +31,20 @@ namespace Shentun.Peis.PatientRegisters
/// 退费ID
///
public Guid ChargeBackId { get; set; }
+
+ ///
+ /// 退费人
+ ///
+ public string ChargeBackName { get; set; }
+
+ ///
+ /// 退费时间
+ ///
+ public string ChargeBackTime { get; set; }
+
+ ///
+ /// 退费金额
+ ///
+ public decimal ChargeBackMoney { get; set; }
}
}
diff --git a/src/Shentun.Peis.Domain/PatientRegisters/GetPatientRegisterChargeListDto.cs b/src/Shentun.Peis.Domain/PatientRegisters/GetPatientRegisterChargeListDto.cs
index c126e4df..b437b68f 100644
--- a/src/Shentun.Peis.Domain/PatientRegisters/GetPatientRegisterChargeListDto.cs
+++ b/src/Shentun.Peis.Domain/PatientRegisters/GetPatientRegisterChargeListDto.cs
@@ -23,5 +23,20 @@ namespace Shentun.Peis.PatientRegisters
/// 收费ID
///
public Guid ChargeId { get; set; }
+
+ ///
+ /// 收费人
+ ///
+ public string ChargeName { get; set; }
+
+ ///
+ /// 收费时间
+ ///
+ public string ChargeTime { get; set; }
+
+ ///
+ /// 收费金额
+ ///
+ public decimal ChargeMoney { get; set; }
}
}
diff --git a/src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs b/src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs
index 2ab7398f..569f2926 100644
--- a/src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs
+++ b/src/Shentun.Peis.Domain/RegisterChecks/RegisterCheckManager.cs
@@ -218,8 +218,9 @@ namespace Shentun.Peis.RegisterChecks
{
if (Guid.TryParse(entity.CheckDoctorId, out var checkDoctorIdGuid))
{
- var identityUserOrganizationUnit = _identityUserOrganizationUnitRepository.GetAsync(o => o.UserId == checkDoctorIdGuid).Result;
- entity.ExecOrganizationUnitId = identityUserOrganizationUnit.OrganizationUnitId;
+ var identityUserOrganizationUnit = _identityUserOrganizationUnitRepository.FirstOrDefaultAsync(o => o.UserId == checkDoctorIdGuid).GetAwaiter().GetResult();
+ if (identityUserOrganizationUnit != null)
+ entity.ExecOrganizationUnitId = identityUserOrganizationUnit.OrganizationUnitId;
}
}
}
diff --git a/src/Shentun.Peis.EntityFrameworkCore/PatientRegisters/PatientRegisterChargeRepository.cs b/src/Shentun.Peis.EntityFrameworkCore/PatientRegisters/PatientRegisterChargeRepository.cs
index d93abdc6..fbfe5176 100644
--- a/src/Shentun.Peis.EntityFrameworkCore/PatientRegisters/PatientRegisterChargeRepository.cs
+++ b/src/Shentun.Peis.EntityFrameworkCore/PatientRegisters/PatientRegisterChargeRepository.cs
@@ -34,60 +34,69 @@ namespace Shentun.Peis.PatientRegisters
{
var dbContext = await GetDbContextAsync();
-
- var query = (from a in dbContext.PatientRegisters
- join b in dbContext.Patients on a.PatientId equals b.Id into bb
- from ab in bb.DefaultIfEmpty()
- join d in dbContext.Charges on a.Id equals d.PatientRegisterId
- join e in dbContext.ChargeBacks on d.Id equals e.ChargeId
- where d.ChargeFlag == '1'
- select new { a, ab, d, e }
- );
+
+ var query = from patientRegister in dbContext.PatientRegisters
+ join patient in dbContext.Patients on patientRegister.PatientId equals patient.Id
+ join charge in dbContext.Charges on patientRegister.Id equals charge.PatientRegisterId
+ join chargeBack in dbContext.ChargeBacks on charge.Id equals chargeBack.ChargeId
+ join chargeBackPay in dbContext.ChargeBackPays on chargeBack.Id equals chargeBackPay.ChargeBackId
+ where charge.ChargeFlag == ChargeFlag.ChargeBack
+ select new
+ {
+ patientRegister,
+ patient,
+ charge,
+ chargeBack,
+ chargeBackPay
+ };
if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate))
{
- query = query.Where(m => m.a.CreationTime >= Convert.ToDateTime(input.StartDate) &&
- m.a.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
+ query = query.Where(m => m.chargeBack.CreationTime >= Convert.ToDateTime(input.StartDate) &&
+ m.chargeBack.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
}
if (!string.IsNullOrEmpty(input.InvoiceNo))
{
- query = query.Where(m => m.d.InvoiceNo == input.InvoiceNo);
+ query = query.Where(m => m.charge.InvoiceNo == input.InvoiceNo);
}
if (!string.IsNullOrEmpty(input.PatientName))
{
- query = query.Where(m => !string.IsNullOrEmpty(m.a.PatientName) && m.a.PatientName.Contains(input.InvoiceNo));
+ query = query.Where(m => m.patientRegister.PatientName == input.PatientName);
}
if (!string.IsNullOrEmpty(input.PatientNo))
{
- query = query.Where(m => m.ab.PatientNo == input.PatientNo);
+ query = query.Where(m => m.patient.PatientNo == input.PatientNo);
}
if (!string.IsNullOrEmpty(input.PatientRegisterNo))
{
- query = query.Where(m => m.a.PatientRegisterNo == input.PatientRegisterNo);
+ query = query.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo);
}
- var entlist = query.ToList().OrderBy(o => o.a.CreationTime).Select(s => new GetPatientRegisterChargeBackListDto
- {
- PatientRegisterId = s.a.Id,
- Address = s.ab.Address,
- Age = s.a.Age,
- ChargeId = s.d.Id,
- ChargeBackId = s.e.Id,
- InvoiceNo = s.d.InvoiceNo,
- InvoiceOrgName = s.d.InvoiceOrgName,
- CustomerOrgName = _cacheService.GetCustomerOrgAsync(s.a.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
- CustomerOrgParentName = _cacheService.GetTopCustomerOrgAsync(s.a.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
- Email = s.ab.Email,
- IdNo = s.ab.IdNo,
- IsVip = s.a.IsVip,
- MedicalTimes = s.a.MedicalTimes,
- MobileTelephone = s.ab.MobileTelephone,
- PatientName = s.a.PatientName,
- PatientNo = s.ab.PatientNo,
- PatientRegisterNo = s.a.PatientRegisterNo,
- Salesman = s.a.Salesman,
- SexId = _cacheService.GetSexNameAsync(s.a.SexId).GetAwaiter().GetResult(),
- Telephone = s.ab.Telephone
+ var entlist = query.OrderBy(o => o.chargeBack.CreationTime).ToList().GroupBy(g => g.chargeBack).Select(s => new GetPatientRegisterChargeBackListDto
+ {
+ PatientRegisterId = s.FirstOrDefault().patientRegister.Id,
+ Address = s.FirstOrDefault().patient.Address,
+ Age = s.FirstOrDefault().patientRegister.Age,
+ ChargeId = s.FirstOrDefault().charge.Id,
+ ChargeBackId = s.Key.Id,
+ InvoiceNo = s.FirstOrDefault().charge.InvoiceNo,
+ InvoiceOrgName = s.FirstOrDefault().charge.InvoiceOrgName,
+ CustomerOrgName = _cacheService.GetCustomerOrgAsync(s.FirstOrDefault().patientRegister.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
+ CustomerOrgParentName = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().patientRegister.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
+ Email = s.FirstOrDefault().patient.Email,
+ IdNo = s.FirstOrDefault().patient.IdNo,
+ IsVip = s.FirstOrDefault().patientRegister.IsVip,
+ MedicalTimes = s.FirstOrDefault().patientRegister.MedicalTimes,
+ MobileTelephone = s.FirstOrDefault().patient.MobileTelephone,
+ PatientName = s.FirstOrDefault().patientRegister.PatientName,
+ PatientNo = s.FirstOrDefault().patient.PatientNo,
+ PatientRegisterNo = s.FirstOrDefault().patientRegister.PatientRegisterNo,
+ Salesman = s.FirstOrDefault().patientRegister.Salesman,
+ SexId = _cacheService.GetSexNameAsync(s.FirstOrDefault().patientRegister.SexId).GetAwaiter().GetResult(),
+ Telephone = s.FirstOrDefault().patient.Telephone,
+ ChargeBackName = _cacheService.GetSurnameAsync(s.Key.CreatorId).GetAwaiter().GetResult(),
+ ChargeBackTime = DataHelper.ConversionDateToString(s.Key.CreationTime),
+ ChargeBackMoney = s.Sum(sm => sm.chargeBackPay.BackMoeny)
}).ToList();
return entlist;
@@ -103,60 +112,68 @@ namespace Shentun.Peis.PatientRegisters
var dbContext = await GetDbContextAsync();
-
- var query = (from a in dbContext.PatientRegisters
- join b in dbContext.Patients on a.PatientId equals b.Id into bb
- from ab in bb.DefaultIfEmpty()
- join d in dbContext.Charges on a.Id equals d.PatientRegisterId
- where d.ChargeFlag == '0'
- select new { a, ab, d }
- );
+
+ var query = from patientRegister in dbContext.PatientRegisters
+ join patient in dbContext.Patients on patientRegister.PatientId equals patient.Id
+ join charge in dbContext.Charges on patientRegister.Id equals charge.PatientRegisterId
+ join chargePay in dbContext.ChargePays on charge.Id equals chargePay.ChargeId
+ where charge.ChargeFlag == ChargeFlag.Charge
+ select new
+ {
+ patientRegister,
+ patient,
+ charge,
+ chargePay
+ };
if (!string.IsNullOrEmpty(input.StartDate) && !string.IsNullOrEmpty(input.EndDate))
{
- query = query.Where(m => m.a.CreationTime >= Convert.ToDateTime(input.StartDate) &&
- m.a.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
+ query = query.Where(m => m.charge.CreationTime >= Convert.ToDateTime(input.StartDate) &&
+ m.charge.CreationTime < Convert.ToDateTime(input.EndDate).AddDays(1));
}
if (!string.IsNullOrEmpty(input.InvoiceNo))
{
- query = query.Where(m => m.d.InvoiceNo == input.InvoiceNo);
+ query = query.Where(m => m.charge.InvoiceNo == input.InvoiceNo);
}
if (!string.IsNullOrEmpty(input.PatientName))
{
- query = query.Where(m => !string.IsNullOrEmpty(m.a.PatientName) && m.a.PatientName.Contains(input.InvoiceNo));
+ query = query.Where(m => !string.IsNullOrEmpty(m.patientRegister.PatientName) && m.patientRegister.PatientName.Contains(input.InvoiceNo));
}
if (!string.IsNullOrEmpty(input.PatientNo))
{
- query = query.Where(m => m.ab.PatientNo == input.PatientNo);
+ query = query.Where(m => m.patient.PatientNo == input.PatientNo);
}
if (!string.IsNullOrEmpty(input.PatientRegisterNo))
{
- query = query.Where(m => m.a.PatientRegisterNo == input.PatientRegisterNo);
+ query = query.Where(m => m.patientRegister.PatientRegisterNo == input.PatientRegisterNo);
}
- var entlist = query.ToList().OrderBy(o => o.a.CreationTime).Select(s => new GetPatientRegisterChargeListDto
- {
- PatientRegisterId = s.a.Id,
- Address = s.ab.Address,
- Age = s.a.Age,
- ChargeId = s.d.Id,
- InvoiceNo = s.d.InvoiceNo,
- InvoiceOrgName = s.d.InvoiceOrgName,
- CustomerOrgName = _cacheService.GetCustomerOrgAsync(s.a.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
- CustomerOrgParentName = _cacheService.GetTopCustomerOrgAsync(s.a.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
- Email = s.ab.Email,
- IdNo = s.ab.IdNo,
- IsVip = s.a.IsVip,
- MedicalTimes = s.a.MedicalTimes,
- MobileTelephone = s.ab.MobileTelephone,
- PatientName = s.a.PatientName,
- PatientNo = s.ab.PatientNo,
- PatientRegisterNo = s.a.PatientRegisterNo,
- Salesman = s.a.Salesman,
- SexId = _cacheService.GetSexNameAsync(s.a.SexId).GetAwaiter().GetResult(),
- Telephone = s.ab.Telephone
+ var entlist = query.OrderBy(o => o.charge.CreationTime).ToList().GroupBy(g => g.charge).Select(s => new GetPatientRegisterChargeListDto
+ {
+ PatientRegisterId = s.FirstOrDefault().patientRegister.Id,
+ Address = s.FirstOrDefault().patient.Address,
+ Age = s.FirstOrDefault().patientRegister.Age,
+ ChargeId = s.Key.Id,
+ InvoiceNo = s.Key.InvoiceNo,
+ InvoiceOrgName = s.Key.InvoiceOrgName,
+ CustomerOrgName = _cacheService.GetCustomerOrgAsync(s.FirstOrDefault().patientRegister.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
+ CustomerOrgParentName = _cacheService.GetTopCustomerOrgAsync(s.FirstOrDefault().patientRegister.CustomerOrgId).GetAwaiter().GetResult().DisplayName,
+ Email = s.FirstOrDefault().patient.Email,
+ IdNo = s.FirstOrDefault().patient.IdNo,
+ IsVip = s.FirstOrDefault().patientRegister.IsVip,
+ MedicalTimes = s.FirstOrDefault().patientRegister.MedicalTimes,
+ MobileTelephone = s.FirstOrDefault().patient.MobileTelephone,
+ PatientName = s.FirstOrDefault().patientRegister.PatientName,
+ PatientNo = s.FirstOrDefault().patient.PatientNo,
+ PatientRegisterNo = s.FirstOrDefault().patientRegister.PatientRegisterNo,
+ Salesman = s.FirstOrDefault().patientRegister.Salesman,
+ SexId = _cacheService.GetSexNameAsync(s.FirstOrDefault().patientRegister.SexId).GetAwaiter().GetResult(),
+ Telephone = s.FirstOrDefault().patient.Telephone,
+ ChargeName = _cacheService.GetSurnameAsync(s.Key.CreatorId).GetAwaiter().GetResult(),
+ ChargeTime = DataHelper.ConversionDateToString(s.Key.CreationTime),
+ ChargeMoney = s.Sum(sm => sm.chargePay.ChargeMoney)
}).ToList();
return entlist;