From 79dc93de0f4f4f80f035786a775f398dfee13958 Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Mon, 10 Jun 2024 23:39:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppointPatientRegisterManager.cs | 60 ++++++++++++++++--- src/Shentun.WebPeis.Domain/Models/Asbitem.cs | 5 ++ .../Configures/AsbitemConfigure.cs | 5 ++ 3 files changed, 63 insertions(+), 7 deletions(-) diff --git a/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs b/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs index bf30a95..48c7043 100644 --- a/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs +++ b/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs @@ -17,6 +17,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters { public class AppointPatientRegisterManager : DomainService { + private readonly IRepository _personRepository; private readonly IRepository _customerOrgRepository; private readonly IRepository _customerOrgGroupRepository; private readonly IRepository _customerOrgGroupDetailRepository; @@ -32,6 +33,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters private readonly IRepository _asbitemRepository; private readonly CustomerOrgManager _customerOrgManager; public AppointPatientRegisterManager(IRepository repository, + IRepository personRepository, IRepository identityUserRepository, IdentityUserManager identityUserManager, IRepository 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(entity.MedicalCenterId, "体检中心"); Check.NotDefaultOrNull(entity.CustomerOrgId, "单位"); Check.NotNull(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("已有今天及之后的预约订单,必须先取消订单"); } } diff --git a/src/Shentun.WebPeis.Domain/Models/Asbitem.cs b/src/Shentun.WebPeis.Domain/Models/Asbitem.cs index 10a1db3..21b312f 100644 --- a/src/Shentun.WebPeis.Domain/Models/Asbitem.cs +++ b/src/Shentun.WebPeis.Domain/Models/Asbitem.cs @@ -29,6 +29,11 @@ public partial class Asbitem:AuditedEntity, IHasConcurrencyStamp /// 适用性别,M-男,F-女,A-全部 /// public char ForSexId { get; set; } + /// + /// 婚姻状况 + /// + + public char MaritalStatusId { get; set; } /// /// 项目类别 diff --git a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AsbitemConfigure.cs b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AsbitemConfigure.cs index 7568444..7015116 100644 --- a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AsbitemConfigure.cs +++ b/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")