diff --git a/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs b/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs index 620c053..cd541b5 100644 --- a/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs +++ b/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs @@ -563,150 +563,154 @@ namespace Shentun.Peis.RegisterAsbitems [HttpPost("api/app/registerasbitem/registerasbitemcharge")] public async Task RegisterAsbitemChargeAsync(RegisterCheckAsbitemCheckChargeRequestDto input) { - if (input != null && input.Asbitems.Any() && input.ChargePays.Any()) + if (!input.Asbitems.Any()) { - #region 验证是否多张同样的卡 + throw new UserFriendlyException("收费项目不能为空"); + } + + if (!input.ChargePays.Any()) + { + throw new UserFriendlyException("收费方式不能为空"); + } + + #region 验证是否多张同样的卡 - var cardList = input.ChargePays.Where(m => m.PayModeId == "05").ToList(); - if (cardList.Any()) + var cardList = input.ChargePays.Where(m => m.PayModeId == "05").ToList(); + if (cardList.Any()) + { + if (cardList.GroupBy(g => g.CardRegisterId).Count() < cardList.Count) { - if (cardList.GroupBy(g => g.CardRegisterId).Count() < cardList.Count) - { - throw new UserFriendlyException("同一张会员卡不能重复提交"); - } + throw new UserFriendlyException("同一张会员卡不能重复提交"); } + } - #endregion + #endregion - #region 验证项目金额跟收费的金额合计是否一致 + #region 验证项目金额跟收费的金额合计是否一致 - if (input.Asbitems.Sum(s => s.ChargePrice * s.Amount) != input.ChargePays.Sum(s => s.ChargeMoney)) - { - throw new UserFriendlyException("收费金额合计跟项目金额合计不一致"); - } + if (input.Asbitems.Sum(s => s.ChargePrice * s.Amount) != input.ChargePays.Sum(s => s.ChargeMoney)) + { + throw new UserFriendlyException("收费金额合计跟项目金额合计不一致"); + } - #endregion + #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(); + //更新收费状态 + 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(chargeId) - { - ChargeFlag = '0', - InvoiceNo = input.InvoiceNo, - InvoiceOrgName = input.InvoiceOrgName, - PatientRegisterId = input.PatientRegisterId - }; + Charge charge = new Charge(chargeId) + { + ChargeFlag = '0', + InvoiceNo = input.InvoiceNo, + InvoiceOrgName = input.InvoiceOrgName, + PatientRegisterId = input.PatientRegisterId + }; - var charge_new = await _chargeRepository.InsertAsync(charge); + var charge_new = await _chargeRepository.InsertAsync(charge); - #region 收费项目 + #region 收费项目 - List chargeAsbitems = new List(); + List chargeAsbitems = new List(); - foreach (var item in input.Asbitems) + foreach (var item in input.Asbitems) + { + chargeAsbitems.Add(new ChargeAsbitem { - chargeAsbitems.Add(new ChargeAsbitem - { - Amount = item.Amount, - AsbitemId = item.AsbitemId, - ChargeId = chargeId, - RegisterAsbitemId = item.RegisterAsbitemId, - ChargePrice = item.ChargePrice - }); + Amount = item.Amount, + AsbitemId = item.AsbitemId, + ChargeId = chargeId, + RegisterAsbitemId = item.RegisterAsbitemId, + ChargePrice = item.ChargePrice + }); - registerAsbitems.Find(f => f.Id == item.RegisterAsbitemId).ChargePrice = item.ChargePrice; + registerAsbitems.Find(f => f.Id == item.RegisterAsbitemId).ChargePrice = item.ChargePrice; - } + } - await _chargeAsbitemRepository.InsertManyAsync(chargeAsbitems); + await _chargeAsbitemRepository.InsertManyAsync(chargeAsbitems); - #endregion + #endregion - #region 收费方式 - List chargePays = new List(); + #region 收费方式 + List chargePays = new List(); - foreach (var item in input.ChargePays) + foreach (var item in input.ChargePays) + { + if (item.PayModeId == "05") { - if (item.PayModeId == "05") - { - Guid cardBillId = GuidGenerator.Create(); - - //会员卡 - CardBill cardBill = new CardBill(cardBillId) - { - PayModeId = item.PayModeId, - BillFlag = CardBillFlag.Deduction, - BillMoney = item.ChargeMoney, - CardRegisterId = item.CardRegisterId.Value - }; - cardBill = _cardBillManager.CreateAsync(cardBill); - await _cardBillRepository.InsertAsync(cardBill); + Guid cardBillId = GuidGenerator.Create(); - + //会员卡 + CardBill cardBill = new CardBill(cardBillId) + { + PayModeId = item.PayModeId, + BillFlag = CardBillFlag.Deduction, + BillMoney = item.ChargeMoney, + CardRegisterId = item.CardRegisterId.Value + }; + cardBill = _cardBillManager.CreateAsync(cardBill); + await _cardBillRepository.InsertAsync(cardBill); - chargePays.Add(new ChargePay - { - ChargeMoney = item.ChargeMoney, - PayModeId = item.PayModeId, - ChargeId = charge_new.Id, - CardBillId = cardBillId - }); - #region 扣除会员卡余额 + chargePays.Add(new ChargePay + { + ChargeMoney = item.ChargeMoney, + PayModeId = item.PayModeId, + ChargeId = charge_new.Id, + CardBillId = cardBillId + }); - var cardRegisterEnt = await _cardRegisterRepository.FirstOrDefaultAsync(f => f.Id == item.CardRegisterId.Value); - if (cardRegisterEnt != null) - { - if (item.ChargeMoney > cardRegisterEnt.CardBalance) - { - throw new UserFriendlyException("会员卡余额不足"); - } - else - { - cardRegisterEnt.CardBalance -= item.ChargeMoney; - await _cardRegisterRepository.UpdateAsync(cardRegisterEnt); - } - } - #endregion + #region 扣除会员卡余额 - } - else + var cardRegisterEnt = await _cardRegisterRepository.FirstOrDefaultAsync(f => f.Id == item.CardRegisterId.Value); + if (cardRegisterEnt != null) { - chargePays.Add(new ChargePay + if (item.ChargeMoney > cardRegisterEnt.CardBalance) { - ChargeMoney = item.ChargeMoney, - PayModeId = item.PayModeId, - ChargeId = charge_new.Id - }); + throw new UserFriendlyException("会员卡余额不足"); + } + else + { + cardRegisterEnt.CardBalance -= item.ChargeMoney; + await _cardRegisterRepository.UpdateAsync(cardRegisterEnt); + } + } + #endregion } + else + { + chargePays.Add(new ChargePay + { + ChargeMoney = item.ChargeMoney, + PayModeId = item.PayModeId, + ChargeId = charge_new.Id + }); + } - await _chargePayRepository.InsertManyAsync(chargePays); + } - #endregion + await _chargePayRepository.InsertManyAsync(chargePays); - #endregion + #endregion + + #endregion - #region 修改收费状态 + #region 修改收费状态 - await _registerCheckAsbitemRepository.UpdateManyAsync(registerAsbitems); + await _registerCheckAsbitemRepository.UpdateManyAsync(registerAsbitems); - #endregion + #endregion + + return new RegisterCheckAsbitemChargeDto { code = 1, msg = "收费成功", ChargeId = charge_new.Id }; - return new RegisterCheckAsbitemChargeDto { code = 1, msg = "收费成功", ChargeId = charge_new.Id }; - } - else - { - throw new UserFriendlyException("参数有误"); - } } #endregion diff --git a/src/Shentun.Peis.Domain/ChargeBackPays/ChargeBackPay.cs b/src/Shentun.Peis.Domain/ChargeBackPays/ChargeBackPay.cs index d4b841a..17f178e 100644 --- a/src/Shentun.Peis.Domain/ChargeBackPays/ChargeBackPay.cs +++ b/src/Shentun.Peis.Domain/ChargeBackPays/ChargeBackPay.cs @@ -11,7 +11,7 @@ namespace Shentun.Peis.Models /// 退费支付方式 /// [Table("charge_back_pay")] - [Index(nameof(ChargeBackId), nameof(PayModeId), Name = "IX_charge_back_pay_pay_mode_id", IsUnique = true)] + [Index(nameof(ChargeBackId), nameof(PayModeId), Name = "IX_charge_back_pay_pay_mode_id")] public class ChargeBackPay : Entity, IHasConcurrencyStamp { diff --git a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargeBackPays/ChargeBackPayDbMapping.cs b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargeBackPays/ChargeBackPayDbMapping.cs index 064293a..53b46c4 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargeBackPays/ChargeBackPayDbMapping.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargeBackPays/ChargeBackPayDbMapping.cs @@ -14,8 +14,8 @@ namespace Shentun.Peis.DbMapping { public void Configure(EntityTypeBuilder entity) { - entity.HasKey(e => new { e.ChargeBackId, e.PayModeId }) - .HasName("pk_department_charge_back_pay"); + //entity.HasKey(e => new { e.ChargeBackId, e.PayModeId }) + // .HasName("pk_department_charge_back_pay"); entity.HasComment("退费支付方式"); entity.Property(t => t.PayModeId).HasComment("支付方式ID").IsRequired(); diff --git a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargePays/ChargePayDbMapping.cs b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargePays/ChargePayDbMapping.cs index b6cc574..0994fd3 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargePays/ChargePayDbMapping.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargePays/ChargePayDbMapping.cs @@ -14,8 +14,8 @@ namespace Shentun.Peis.DbMapping { public void Configure(EntityTypeBuilder entity) { - entity.HasKey(e => new { e.ChargeId, e.PayModeId }) - .HasName("pk_department_charge_pay"); + //entity.HasKey(e => new { e.ChargeId, e.PayModeId }) + // .HasName("pk_department_charge_pay"); entity.HasComment("收费支付方式"); diff --git a/src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs b/src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs index 9b5bbd8..9bdaa94 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace Shentun.Peis.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) - .HasAnnotation("ProductVersion", "6.0.5") + .HasAnnotation("ProductVersion", "6.0.19") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); @@ -1685,15 +1685,9 @@ namespace Shentun.Peis.Migrations modelBuilder.Entity("Shentun.Peis.Models.ChargeBackPay", b => { - b.Property("ChargeBackId") + b.Property("Id") .HasColumnType("uuid") - .HasColumnName("charge_back_id"); - - b.Property("PayModeId") - .HasMaxLength(4) - .HasColumnType("character varying(4)") - .HasColumnName("pay_mode_id") - .HasComment("支付方式ID"); + .HasColumnName("id"); b.Property("BackMoeny") .HasPrecision(10, 2) @@ -1706,23 +1700,28 @@ namespace Shentun.Peis.Migrations .HasColumnName("card_bill_id") .HasComment("会员卡ID"); + b.Property("ChargeBackId") + .HasColumnType("uuid") + .HasColumnName("charge_back_id"); + b.Property("ConcurrencyStamp") .IsConcurrencyToken() .HasMaxLength(40) .HasColumnType("character varying(40)") .HasColumnName("concurrency_stamp"); - b.Property("Id") - .HasColumnType("uuid") - .HasColumnName("id"); + b.Property("PayModeId") + .IsRequired() + .HasMaxLength(4) + .HasColumnType("character varying(4)") + .HasColumnName("pay_mode_id") + .HasComment("支付方式ID"); - b.HasKey("ChargeBackId", "PayModeId") - .HasName("pk_department_charge_back_pay"); + b.HasKey("Id"); b.HasIndex("PayModeId"); b.HasIndex(new[] { "ChargeBackId", "PayModeId" }, "IX_charge_back_pay_pay_mode_id") - .IsUnique() .HasDatabaseName("IX_charge_back_pay_pay_mode_id1"); b.ToTable("charge_back_pay"); @@ -1732,22 +1731,20 @@ namespace Shentun.Peis.Migrations modelBuilder.Entity("Shentun.Peis.Models.ChargePay", b => { - b.Property("ChargeId") + b.Property("Id") .HasColumnType("uuid") - .HasColumnName("charge_id") - .HasComment("收据号"); - - b.Property("PayModeId") - .HasMaxLength(4) - .HasColumnType("character varying(4)") - .HasColumnName("pay_mode_id") - .HasComment("支付方式"); + .HasColumnName("id"); b.Property("CardBillId") .HasColumnType("uuid") .HasColumnName("card_bill_id") .HasComment("会员卡ID"); + b.Property("ChargeId") + .HasColumnType("uuid") + .HasColumnName("charge_id") + .HasComment("收据号"); + b.Property("ChargeMoney") .HasPrecision(10, 2) .HasColumnType("numeric(10,2)") @@ -1760,12 +1757,14 @@ namespace Shentun.Peis.Migrations .HasColumnType("character varying(40)") .HasColumnName("concurrency_stamp"); - b.Property("Id") - .HasColumnType("uuid") - .HasColumnName("id"); + b.Property("PayModeId") + .IsRequired() + .HasMaxLength(4) + .HasColumnType("character varying(4)") + .HasColumnName("pay_mode_id") + .HasComment("支付方式"); - b.HasKey("ChargeId", "PayModeId") - .HasName("pk_department_charge_pay"); + b.HasKey("Id"); b.HasIndex("PayModeId"); @@ -13033,7 +13032,7 @@ namespace Shentun.Peis.Migrations .HasColumnName("method_name"); b.Property("Parameters") - .HasMaxLength(2000) + .HasMaxLength(50000) .HasColumnType("text") .HasColumnName("parameters");