From d8ceb9c1df5ccde10440464238f37a47fb7009cd Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Mon, 17 Nov 2025 18:03:14 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E5=91=98=E5=8D=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...gisterCheckAsbitemCheckChargeRequestDto.cs | 1 -
.../PrintReports/PrintReportAppService.cs | 2 +-
.../RegisterCheckAsbitemAppService.cs | 56 ++++++++++++++-----
.../ChargePays/ChargePay.cs | 2 +-
src/Shentun.Peis.Domain/Charges/Charge.cs | 8 ++-
.../Migrations/PeisDbContextModelSnapshot.cs | 1 -
6 files changed, 50 insertions(+), 20 deletions(-)
diff --git a/src/Shentun.Peis.Application.Contracts/RegisterCheckAsbitems/RegisterCheckAsbitemCheckChargeRequestDto.cs b/src/Shentun.Peis.Application.Contracts/RegisterCheckAsbitems/RegisterCheckAsbitemCheckChargeRequestDto.cs
index deac371..fddd499 100644
--- a/src/Shentun.Peis.Application.Contracts/RegisterCheckAsbitems/RegisterCheckAsbitemCheckChargeRequestDto.cs
+++ b/src/Shentun.Peis.Application.Contracts/RegisterCheckAsbitems/RegisterCheckAsbitemCheckChargeRequestDto.cs
@@ -56,7 +56,6 @@ namespace Shentun.Peis.RegisterAsbitems
///
/// 组合项目
///
- [Column("asbitem_id")]
public Guid AsbitemId { get; set; }
///
diff --git a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
index c6f666c..e4579b2 100644
--- a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
+++ b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs
@@ -1926,7 +1926,7 @@ namespace Shentun.Peis.PrintReports
ReportFontColor = (resultStatus == null) ? 0 : resultStatus.ReportFontColor,
ReportBackgroundColor = (resultStatus == null) ? 16579836 : resultStatus.ReportBackgroundColor,
ReportPrompt = (resultStatus == null) ? null : resultStatus.ReportPrompt,
- DisplayOrder = registerCheckItemRow.item.DisplayOrder,
+ DisplayOrder = registerCheckItemRow.item.DisplayOrder
};
medicalReportRegisterCheckDto.Items.Add(medicalReportCheckItemDto);
}
diff --git a/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs b/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs
index 4c2063e..620c053 100644
--- a/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs
+++ b/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs
@@ -363,7 +363,7 @@ namespace Shentun.Peis.RegisterAsbitems
}).OrderBy(o => o.ItemType.DisplayOrder)
.OrderBy(o => o.Asbitem.DisplayOrder)
.ToList();
-
+
var chargeRequests = (
from registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
join chargeRequest in await _chargeRequestRepository.GetQueryableAsync()
@@ -565,13 +565,35 @@ namespace Shentun.Peis.RegisterAsbitems
{
if (input != null && input.Asbitems.Any() && input.ChargePays.Any())
{
+ #region 验证是否多张同样的卡
+
+ var cardList = input.ChargePays.Where(m => m.PayModeId == "05").ToList();
+ if (cardList.Any())
+ {
+ if (cardList.GroupBy(g => g.CardRegisterId).Count() < cardList.Count)
+ {
+ throw new UserFriendlyException("同一张会员卡不能重复提交");
+ }
+ }
+
+ #endregion
+
+ #region 验证项目金额跟收费的金额合计是否一致
+
+ if (input.Asbitems.Sum(s => s.ChargePrice * s.Amount) != input.ChargePays.Sum(s => s.ChargeMoney))
+ {
+ throw new UserFriendlyException("收费金额合计跟项目金额合计不一致");
+ }
+
+ #endregion
//更新收费状态
List registerAsbitems = await _registerCheckAsbitemRepository.GetListAsync(m => input.Asbitems.Select(s => s.RegisterAsbitemId).Contains(m.Id));
registerAsbitems.ForEach(f => f.IsCharge = 'Y');
#region 插入主表Charge
+ Guid chargeId = GuidGenerator.Create();
- Charge charge = new Charge
+ Charge charge = new Charge(chargeId)
{
ChargeFlag = '0',
InvoiceNo = input.InvoiceNo,
@@ -579,7 +601,7 @@ namespace Shentun.Peis.RegisterAsbitems
PatientRegisterId = input.PatientRegisterId
};
- var charge_new = await _chargeRepository.InsertAsync(charge, true);
+ var charge_new = await _chargeRepository.InsertAsync(charge);
#region 收费项目
@@ -591,7 +613,7 @@ namespace Shentun.Peis.RegisterAsbitems
{
Amount = item.Amount,
AsbitemId = item.AsbitemId,
- ChargeId = charge_new.Id,
+ ChargeId = chargeId,
RegisterAsbitemId = item.RegisterAsbitemId,
ChargePrice = item.ChargePrice
});
@@ -611,8 +633,11 @@ namespace Shentun.Peis.RegisterAsbitems
{
if (item.PayModeId == "05")
{
+
+ Guid cardBillId = GuidGenerator.Create();
+
//会员卡
- CardBill cardBill = new CardBill(GuidGenerator.Create())
+ CardBill cardBill = new CardBill(cardBillId)
{
PayModeId = item.PayModeId,
BillFlag = CardBillFlag.Deduction,
@@ -620,17 +645,18 @@ namespace Shentun.Peis.RegisterAsbitems
CardRegisterId = item.CardRegisterId.Value
};
cardBill = _cardBillManager.CreateAsync(cardBill);
- var cardBill_new = await _cardBillRepository.InsertAsync(cardBill);
- if (cardBill_new != null)
+ await _cardBillRepository.InsertAsync(cardBill);
+
+
+
+ chargePays.Add(new ChargePay
{
- chargePays.Add(new ChargePay
- {
- ChargeMoney = item.ChargeMoney,
- PayModeId = item.PayModeId,
- ChargeId = charge_new.Id,
- CardBillId = cardBill_new.Id
- });
- }
+ ChargeMoney = item.ChargeMoney,
+ PayModeId = item.PayModeId,
+ ChargeId = charge_new.Id,
+ CardBillId = cardBillId
+ });
+
#region 扣除会员卡余额
diff --git a/src/Shentun.Peis.Domain/ChargePays/ChargePay.cs b/src/Shentun.Peis.Domain/ChargePays/ChargePay.cs
index 4eaf86d..944fa3b 100644
--- a/src/Shentun.Peis.Domain/ChargePays/ChargePay.cs
+++ b/src/Shentun.Peis.Domain/ChargePays/ChargePay.cs
@@ -11,7 +11,7 @@ namespace Shentun.Peis.Models
/// 收费支付方式
///
[Table("charge_pay")]
- [Index(nameof(ChargeId), nameof(PayModeId), Name = "IX_charge_pay_pay_mode_id", IsUnique = true)]
+ [Index(nameof(ChargeId), nameof(PayModeId), Name = "IX_charge_pay_pay_mode_id")]
public class ChargePay : Entity, IHasConcurrencyStamp
{
///
diff --git a/src/Shentun.Peis.Domain/Charges/Charge.cs b/src/Shentun.Peis.Domain/Charges/Charge.cs
index 4f772e9..b4b2484 100644
--- a/src/Shentun.Peis.Domain/Charges/Charge.cs
+++ b/src/Shentun.Peis.Domain/Charges/Charge.cs
@@ -16,6 +16,12 @@ namespace Shentun.Peis.Models
[Index(nameof(PatientRegisterId), Name = "ix_charge")]
public class Charge : AuditedEntity, IHasConcurrencyStamp
{
+ public Charge(Guid id) : base(id) {
+ ChargeAsbitems = new HashSet();
+ ChargeBacks = new HashSet();
+ ChargePays = new HashSet();
+ }
+
public Charge()
{
ChargeAsbitems = new HashSet();
@@ -23,7 +29,7 @@ namespace Shentun.Peis.Models
ChargePays = new HashSet();
}
-
+
///
/// 登记流水号
///
diff --git a/src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs b/src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs
index d82f229..9b5bbd8 100644
--- a/src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs
+++ b/src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs
@@ -1770,7 +1770,6 @@ namespace Shentun.Peis.Migrations
b.HasIndex("PayModeId");
b.HasIndex(new[] { "ChargeId", "PayModeId" }, "IX_charge_pay_pay_mode_id")
- .IsUnique()
.HasDatabaseName("IX_charge_pay_pay_mode_id1");
b.ToTable("charge_pay");