Browse Source

收费

master
wxd 4 weeks ago
parent
commit
a17feca4bc
  1. 208
      src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs
  2. 2
      src/Shentun.Peis.Domain/ChargeBackPays/ChargeBackPay.cs
  3. 4
      src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargeBackPays/ChargeBackPayDbMapping.cs
  4. 4
      src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargePays/ChargePayDbMapping.cs
  5. 59
      src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs

208
src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs

@ -563,150 +563,154 @@ namespace Shentun.Peis.RegisterAsbitems
[HttpPost("api/app/registerasbitem/registerasbitemcharge")]
public async Task<RegisterCheckAsbitemChargeDto> 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<RegisterCheckAsbitem> 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<RegisterCheckAsbitem> 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<ChargeAsbitem> chargeAsbitems = new List<ChargeAsbitem>();
List<ChargeAsbitem> chargeAsbitems = new List<ChargeAsbitem>();
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<ChargePay> chargePays = new List<ChargePay>();
#region 收费方式
List<ChargePay> chargePays = new List<ChargePay>();
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

2
src/Shentun.Peis.Domain/ChargeBackPays/ChargeBackPay.cs

@ -11,7 +11,7 @@ namespace Shentun.Peis.Models
/// 退费支付方式
/// </summary>
[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<Guid>, IHasConcurrencyStamp
{

4
src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargeBackPays/ChargeBackPayDbMapping.cs

@ -14,8 +14,8 @@ namespace Shentun.Peis.DbMapping
{
public void Configure(EntityTypeBuilder<ChargeBackPay> 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();

4
src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargePays/ChargePayDbMapping.cs

@ -14,8 +14,8 @@ namespace Shentun.Peis.DbMapping
{
public void Configure(EntityTypeBuilder<ChargePay> 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("收费支付方式");

59
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<Guid>("ChargeBackId")
b.Property<Guid>("Id")
.HasColumnType("uuid")
.HasColumnName("charge_back_id");
b.Property<string>("PayModeId")
.HasMaxLength(4)
.HasColumnType("character varying(4)")
.HasColumnName("pay_mode_id")
.HasComment("支付方式ID");
.HasColumnName("id");
b.Property<decimal>("BackMoeny")
.HasPrecision(10, 2)
@ -1706,23 +1700,28 @@ namespace Shentun.Peis.Migrations
.HasColumnName("card_bill_id")
.HasComment("会员卡ID");
b.Property<Guid>("ChargeBackId")
.HasColumnType("uuid")
.HasColumnName("charge_back_id");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasMaxLength(40)
.HasColumnType("character varying(40)")
.HasColumnName("concurrency_stamp");
b.Property<Guid>("Id")
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<string>("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<Guid>("ChargeId")
b.Property<Guid>("Id")
.HasColumnType("uuid")
.HasColumnName("charge_id")
.HasComment("收据号");
b.Property<string>("PayModeId")
.HasMaxLength(4)
.HasColumnType("character varying(4)")
.HasColumnName("pay_mode_id")
.HasComment("支付方式");
.HasColumnName("id");
b.Property<Guid?>("CardBillId")
.HasColumnType("uuid")
.HasColumnName("card_bill_id")
.HasComment("会员卡ID");
b.Property<Guid>("ChargeId")
.HasColumnType("uuid")
.HasColumnName("charge_id")
.HasComment("收据号");
b.Property<decimal>("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<Guid>("Id")
.HasColumnType("uuid")
.HasColumnName("id");
b.Property<string>("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<string>("Parameters")
.HasMaxLength(2000)
.HasMaxLength(50000)
.HasColumnType("text")
.HasColumnName("parameters");

Loading…
Cancel
Save