wxd 1 year ago
parent
commit
23b4d01848
  1. 2
      src/Shentun.WebPeis.Application.Contracts/AppointRegisterAsbitems/AppointRegisterAsbitemDto.cs
  2. 2
      src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
  3. 19
      src/Shentun.WebPeis.Domain.Shared/Enums/ForPregnantFlag.cs
  4. 60
      src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs
  5. 33
      src/Shentun.WebPeis.Domain/Models/Asbitem.cs
  6. 21
      src/Shentun.WebPeis.EntityFrameworkCore/Configures/AsbitemConfigure.cs

2
src/Shentun.WebPeis.Application.Contracts/AppointRegisterAsbitems/AppointRegisterAsbitemDto.cs

@ -51,7 +51,7 @@ namespace Shentun.WebPeis.AppointRegisterAsbitems
/// </summary>
public short Amount { get; set; }
public char IsInMedicalPackage { get; set; } = 'N';
public char IsBelongGroupPackage { get; set; } = 'N';
/// <summary>
/// 项目类别顺序
/// </summary>

2
src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs

@ -433,7 +433,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
{
if (asbitems.Where(x => x == o.AsbitemId).ToList().Any())
{
o.IsInMedicalPackage = 'Y';
o.IsBelongGroupPackage = 'Y';
}
var itemType = itemTypes.Where(o => o.ItemTypeId == o.ItemTypeId).First();
itemType = itemTypes.Where(o => o.PathCode == itemType.PathCode.Substring(0, 5)).First();

19
src/Shentun.WebPeis.Domain.Shared/Enums/ForPregnantFlag.cs

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
namespace Shentun.WebPeis.Enums
{
public class ForPregnantFlag
{
[Description("备孕期间禁止检查")]
public const char PreparePregnancy = '1';
[Description("怀孕期间禁止检查")]
public const char Pregnancy = '2';
[Description("允许")]
public const char All = 'A';
}
}

60
src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs

@ -17,6 +17,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
{
public class AppointPatientRegisterManager : DomainService
{
private readonly IRepository<Person> _personRepository;
private readonly IRepository<CustomerOrg> _customerOrgRepository;
private readonly IRepository<CustomerOrgGroup> _customerOrgGroupRepository;
private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
@ -32,6 +33,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
private readonly IRepository<Asbitem> _asbitemRepository;
private readonly CustomerOrgManager _customerOrgManager;
public AppointPatientRegisterManager(IRepository<AppointPatientRegister> repository,
IRepository<Person> personRepository,
IRepository<IdentityUser> identityUserRepository,
IdentityUserManager identityUserManager,
IRepository<Nation> nationRepository,
@ -48,6 +50,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
)
{
_repository = repository;
_personRepository = personRepository;
_identityUserRepository = identityUserRepository;
_identityUserManager = identityUserManager;
_nationRepository = nationRepository;
@ -82,7 +85,8 @@ namespace Shentun.WebPeis.AppointPatientRegisters
Check.NotNull<Guid>(entity.MedicalCenterId, "体检中心");
Check.NotDefaultOrNull<Guid>(entity.CustomerOrgId, "单位");
Check.NotNull<DateTime>(entity.AppointDate, "体检日期");
if(entity.AppointDate < DateTime.Now.Date)
var person = await _personRepository.GetAsync(o=>o.PersonId == entity.PersonId);
if (entity.AppointDate < DateTime.Now.Date)
{
throw new UserFriendlyException("预约日期不能小于当前日期");
}
@ -94,21 +98,50 @@ namespace Shentun.WebPeis.AppointPatientRegisters
if (entity.CustomerOrgGroupId != Guid.Empty && entity.CustomerOrgGroupId != null)
{
if ((await _customerOrgGroupRepository.GetQueryableAsync()).
var customerOrgGroup = (await _customerOrgGroupRepository.GetQueryableAsync()).
Where(o => o.CustomerOrgRegisterId == entity.CustomerOrgRegisterId &&
o.CustomerOrgGroupId == entity.CustomerOrgGroupId).Count() == 0)
o.CustomerOrgGroupId == entity.CustomerOrgGroupId).FirstOrDefault();
if (customerOrgGroup == null)
{
throw new UserFriendlyException("单位分组ID不存在");
}
if(customerOrgGroup.ForSexId != ForSexFlag.All &&
customerOrgGroup.ForSexId != person.SexId )
{
throw new UserFriendlyException("套餐的性别和人员性别不一致");
}
if(customerOrgGroup.MaritalStatusId != MaritalStatusFlag.All &&
person.MaritalStatusId == MaritalStatusFlag.UnMarried &&
customerOrgGroup.MaritalStatusId != MaritalStatusFlag.UnMarried)
{
throw new UserFriendlyException("套餐的婚姻状况和人员婚姻状况不一致");
}
}
if (entity.MedicalPackageId != Guid.Empty && entity.MedicalPackageId != null)
{
if ((await _medicalPackageRepository.GetQueryableAsync()).
Where(o => o.MedicalPackageId == entity.MedicalPackageId).Count() == 0)
var medicalPackage = (await _medicalPackageRepository.GetQueryableAsync()).
Where(o => o.MedicalPackageId == entity.MedicalPackageId).FirstOrDefault();
if (medicalPackage == null)
{
throw new UserFriendlyException("套餐ID不存在");
}
if (medicalPackage.ForSexId != ForSexFlag.All &&
medicalPackage.ForSexId != person.SexId)
{
throw new UserFriendlyException("套餐的性别和人员性别不一致");
}
if (medicalPackage.MaritalStatusId != MaritalStatusFlag.All &&
person.MaritalStatusId == MaritalStatusFlag.UnMarried &&
medicalPackage.MaritalStatusId != MaritalStatusFlag.UnMarried)
{
throw new UserFriendlyException("套餐的婚姻状况和人员婚姻状况不一致");
}
}
var customerOrg = await _customerOrgRepository.FindAsync(o => o.CustomerOrgId == entity.CustomerOrgId);
@ -194,7 +227,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
var customerOrgGroup = await _customerOrgGroupRepository.GetAsync(o => o.CustomerOrgGroupId == entity.CustomerOrgGroupId);
if(addMoney > customerOrgGroup.CanAddMoney)
{
throw new UserFriendlyException($"自选的单位支付金额能超过{customerOrgGroup.CanAddMoney}元");
throw new UserFriendlyException($"自选的单位支付金额能超过{customerOrgGroup.CanAddMoney}元");
}
}
}
@ -206,6 +239,19 @@ namespace Shentun.WebPeis.AppointPatientRegisters
foreach (var appointRegisterAsbitem in entity.AppointRegisterAsbitems)
{
var asbitem = asbitems.Where(o => o.AsbitemId == appointRegisterAsbitem.AsbitemId).Single();
if (asbitem.ForSexId != ForSexFlag.All &&
asbitem.ForSexId != person.SexId)
{
throw new UserFriendlyException("套餐的性别和人员性别不一致");
}
if (asbitem.MaritalStatusId != MaritalStatusFlag.All &&
person.MaritalStatusId == MaritalStatusFlag.UnMarried &&
asbitem.MaritalStatusId != MaritalStatusFlag.UnMarried)
{
throw new UserFriendlyException("组合项目的婚姻状况和人员婚姻状况不一致");
}
appointRegisterAsbitem.StandardPrice = asbitem.Price;
if (appointRegisterAsbitem.ChargePrice < 0)
{
@ -241,7 +287,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
o.AppointDate >= DateTime.Now.Date && o.CompleteFlag != AppointPatientRegisterCompleteFlag.CancelAppoint);
if(appoentPatientRegisters.Count >= 1)
{
throw new UserFriendlyException("已有今天及之后的预约订单,必须先取消订单才能重新预约");
throw new UserFriendlyException("已有今天及之后的预约订单,必须先取消订单");
}
}

33
src/Shentun.WebPeis.Domain/Models/Asbitem.cs

@ -29,6 +29,11 @@ public partial class Asbitem:AuditedEntity, IHasConcurrencyStamp
/// 适用性别,M-男,F-女,A-全部
/// </summary>
public char ForSexId { get; set; }
/// <summary>
/// 婚姻状况
/// </summary>
public char MaritalStatusId { get; set; }
/// <summary>
/// 项目类别
@ -80,24 +85,38 @@ public partial class Asbitem:AuditedEntity, IHasConcurrencyStamp
public string? Warn { get; set; }
/// <summary>
/// 备孕期间禁止检查
/// 备孕标志
/// </summary>
public char IsDisablePreparePregnancy { get; set; }
public char ForPregnantFlag { get; set; }
///// <summary>
///// 备孕期间禁止检查
///// </summary>
//public char IsDisablePreparePregnancy { get; set; }
///// <summary>
///// 怀孕期间禁止检查
///// </summary>
//public char IsDisablePregnancy { get; set; }
/// <summary>
/// 怀孕期间禁止检查
/// 疾病筛查类别
/// </summary>
public char IsDisablePregnancy { get; set; }
public Guid? DiseaseScreeningTypeId { get; set; }
/// <summary>
/// 是否网上预约
/// </summary>
public char? IsWebAppoint { get; set; }
public string? SimpleCode { get; set; }
public int DisplayOrder { get; set; }
public string? ConcurrencyStamp { get; set; }
public char? IsWebAppoint { get; set; }
public virtual ICollection<AsbitemDetail> AsbitemDetails { get; set; } = new List<AsbitemDetail>();

21
src/Shentun.WebPeis.EntityFrameworkCore/Configures/AsbitemConfigure.cs

@ -56,6 +56,11 @@ namespace Shentun.WebPeis.Configures
.HasDefaultValueSql("'A'::bpchar")
.HasComment("适用性别,M-男,F-女,A-全部")
.HasColumnName("for_sex_id");
entity.Property(e => e.MaritalStatusId)
.HasMaxLength(1)
.HasDefaultValueSql("'A'::bpchar")
.HasComment("适用婚姻状况,0-未婚,1-已婚,A-全部")
.HasColumnName("marital_status_id");
entity.Property(e => e.IsActive)
.HasMaxLength(1)
.HasDefaultValueSql("'Y'::bpchar")
@ -102,12 +107,16 @@ namespace Shentun.WebPeis.Configures
.HasMaxLength(30)
.HasColumnName("simple_code");
entity.Property(t => t.IsDisablePreparePregnancy)
.HasColumnName("is_disable_prepare_pregnancy")
.HasComment("备孕期间禁止检查").IsRequired().HasDefaultValueSql("'N'");
entity.Property(t => t.IsDisablePregnancy)
.HasColumnName("is_disable_pregnancy")
.HasComment("怀孕期间禁止检查").IsRequired().HasDefaultValueSql("'N'");
//entity.Property(t => t.IsDisablePreparePregnancy)
// .HasColumnName("is_disable_prepare_pregnancy")
// .HasComment("备孕期间禁止检查").IsRequired().HasDefaultValueSql("'N'");
//entity.Property(t => t.IsDisablePregnancy)
// .HasColumnName("is_disable_pregnancy")
// .HasComment("怀孕期间禁止检查").IsRequired().HasDefaultValueSql("'N'");
entity.Property(t => t.ForPregnantFlag)
.HasColumnName("for_pregnant_flag")
.HasComment("备怀孕期间禁止检查").IsRequired().HasDefaultValueSql("'A'");
entity.HasOne(d => d.ItemType).WithMany(p => p.Asbitems)
.HasForeignKey(d => d.ItemTypeId)

Loading…
Cancel
Save