From 6f82e12f40db2100b0d1aec9c18a30a2e181f3a2 Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Mon, 3 Jun 2024 02:18:49 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=BA=A6=E7=99=BB=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppointPatientRegisterManager.cs | 59 +++++++++++++++---- .../CustomerOrgs/CustomerOrgManager.cs | 46 +++++++++++++++ src/Shentun.WebPeis.Domain/Models/Asbitem.cs | 13 +++- .../Models/CustomerOrgGroupDetail.cs | 17 +++--- .../Configures/AsbitemConfigure.cs | 7 +++ 5 files changed, 121 insertions(+), 21 deletions(-) create mode 100644 src/Shentun.WebPeis.Domain/CustomerOrgs/CustomerOrgManager.cs diff --git a/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs b/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs index e989f3d..eee6f5a 100644 --- a/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs +++ b/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs @@ -1,4 +1,5 @@ -using Shentun.WebPeis.Enums; +using Shentun.WebPeis.CustomerOrgs; +using Shentun.WebPeis.Enums; using Shentun.WebPeis.Models; using Shentun.WebPeis.Persons; using Shentun.WebPeis.SysParmValues; @@ -18,8 +19,10 @@ namespace Shentun.WebPeis.AppointPatientRegisters { private readonly IRepository _customerOrgRepository; private readonly IRepository _customerOrgGroupRepository; + private readonly IRepository _customerOrgGroupDetailRepository; private readonly IRepository _customerOrgRegisterRepository; private readonly IRepository _medicalPackageRepository; + private readonly IRepository _medicalPackageDetailRepository; private readonly IRepository _repository; private readonly IRepository _identityUserRepository; private readonly IdentityUserManager _identityUserManager; @@ -27,6 +30,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters private readonly SysParmValueManager _sysParmValueManager; private readonly IRepository _primarykeyBuilderRepository; private readonly IRepository _asbitemRepository; + private readonly CustomerOrgManager _customerOrgManager; public AppointPatientRegisterManager(IRepository repository, IRepository identityUserRepository, IdentityUserManager identityUserManager, @@ -37,7 +41,10 @@ namespace Shentun.WebPeis.AppointPatientRegisters IRepository medicalPackageRepository, IRepository customerOrgRepository, IRepository customerOrgRegisterRepository, - IRepository asbitemRepository + IRepository asbitemRepository, + CustomerOrgManager customerOrgManager, + IRepository medicalPackageDetailRepository, + IRepository customerOrgGroupDetailRepository ) { _repository = repository; @@ -51,6 +58,9 @@ namespace Shentun.WebPeis.AppointPatientRegisters _customerOrgRepository = customerOrgRepository; _customerOrgRegisterRepository = customerOrgRegisterRepository; _asbitemRepository = asbitemRepository; + _customerOrgManager = customerOrgManager; + _medicalPackageDetailRepository = medicalPackageDetailRepository; + _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; } public async Task CreateAsync(AppointPatientRegister entity) @@ -124,20 +134,45 @@ namespace Shentun.WebPeis.AppointPatientRegisters { throw new UserFriendlyException("客户登记单位次数不存在"); } - //if (customerOrgRegister.CustomerOrgId != customerOrg.Id) - //{ - // var topCustomerOrg = await _customerOrgManager.GetTopCustomerOrgAsync(customerOrg.Id); - // var topCustomerOrgRegisterOrg = await _customerOrgManager.GetTopCustomerOrgAsync(customerOrgRegister.CustomerOrgId); - // if (topCustomerOrg.Id != topCustomerOrgRegisterOrg.Id) - // { - // throw new UserFriendlyException("登记单位和登记单位体检次数不一致"); - // } - //} + if (customerOrgRegister.CustomerOrgId != customerOrg.CustomerOrgId) + { + var topCustomerOrg = await _customerOrgManager.GetTopCustomerOrgAsync(customerOrg.CustomerOrgId); + var topCustomerOrgRegisterOrg = await _customerOrgManager.GetTopCustomerOrgAsync(customerOrgRegister.CustomerOrgId); + if (topCustomerOrg.CustomerOrgId != topCustomerOrgRegisterOrg.CustomerOrgId) + { + throw new UserFriendlyException("登记单位和登记单位体检次数不一致"); + } + } - if(entity.AppointRegisterAsbitems == null || !entity.AppointRegisterAsbitems.Any()) + if (entity.AppointRegisterAsbitems == null || !entity.AppointRegisterAsbitems.Any()) { throw new UserFriendlyException("必须预约组合项目"); } + if (entity.MedicalPackageId != null) + { + var medicalPackageDetails = await _medicalPackageDetailRepository.GetListAsync(o=>o.MedicalPackageId == entity.MedicalPackageId); + medicalPackageDetails.ForEach(o => + { + if (!entity.AppointRegisterAsbitems.Where(x=>x.AsbitemId == o.AsbitemId).Any()) + { + throw new UserFriendlyException("套餐项目不能取消"); + } + }); + } + + if (entity.CustomerOrgGroupId != null) + { + var customerOrgGroupDetails = await _customerOrgGroupDetailRepository + .GetListAsync(o => o.CustomerOrgGroupId == entity.CustomerOrgGroupId); + customerOrgGroupDetails.ForEach(o => + { + if (!entity.AppointRegisterAsbitems.Where(x => x.AsbitemId == o.AsbitemId).Any()) + { + throw new UserFriendlyException("单位分组项目不能取消"); + } + }); + } + var asbitems = await _asbitemRepository.GetListAsync(); foreach (var appointRegisterAsbitem in entity.AppointRegisterAsbitems) { diff --git a/src/Shentun.WebPeis.Domain/CustomerOrgs/CustomerOrgManager.cs b/src/Shentun.WebPeis.Domain/CustomerOrgs/CustomerOrgManager.cs new file mode 100644 index 0000000..53915f2 --- /dev/null +++ b/src/Shentun.WebPeis.Domain/CustomerOrgs/CustomerOrgManager.cs @@ -0,0 +1,46 @@ +using Shentun.WebPeis.Enums; +using Shentun.WebPeis.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Domain.Services; + +namespace Shentun.WebPeis.CustomerOrgs +{ + public class CustomerOrgManager : DomainService + { + private readonly IRepository _repository; + private readonly IRepository _customerOrgRegisterRepository; + private readonly IRepository _customerOrgGroupRepository; + + public CustomerOrgManager( + IRepository repository, + IRepository customerOrgRegisterRepository, + IRepository customerOrgGroupRepository + ) + { + _repository = repository; + _customerOrgRegisterRepository = customerOrgRegisterRepository; + _customerOrgGroupRepository = customerOrgGroupRepository; + + } + + public async Task GetTopCustomerOrgAsync(Guid CustomerOrgId) + { + var entity = await _repository.GetAsync(o=>o.CustomerOrgId == CustomerOrgId); + if (entity.CustomerOrgId == GuidFlag.PersonCustomerOrgId) + { + return entity; + } + if (entity.PathCode.Length == 5) + { + return entity; + } + entity = await _repository.GetAsync(o => o.PathCode == entity.PathCode.Substring(0, 5)); + return entity; + } + } +} diff --git a/src/Shentun.WebPeis.Domain/Models/Asbitem.cs b/src/Shentun.WebPeis.Domain/Models/Asbitem.cs index e895518..10a1db3 100644 --- a/src/Shentun.WebPeis.Domain/Models/Asbitem.cs +++ b/src/Shentun.WebPeis.Domain/Models/Asbitem.cs @@ -74,9 +74,20 @@ public partial class Asbitem:AuditedEntity, IHasConcurrencyStamp /// 是启用 /// public char IsActive { get; set; } - + /// + /// 警告事项 + /// public string? Warn { get; set; } + /// + /// 备孕期间禁止检查 + /// + public char IsDisablePreparePregnancy { get; set; } + /// + /// 怀孕期间禁止检查 + /// + public char IsDisablePregnancy { get; set; } + public Guid? DiseaseScreeningTypeId { get; set; } public string? SimpleCode { get; set; } diff --git a/src/Shentun.WebPeis.Domain/Models/CustomerOrgGroupDetail.cs b/src/Shentun.WebPeis.Domain/Models/CustomerOrgGroupDetail.cs index b3268de..a3a0880 100644 --- a/src/Shentun.WebPeis.Domain/Models/CustomerOrgGroupDetail.cs +++ b/src/Shentun.WebPeis.Domain/Models/CustomerOrgGroupDetail.cs @@ -1,12 +1,14 @@ using System; using System.Collections.Generic; +using Volo.Abp.Domain.Entities.Auditing; +using Volo.Abp.Domain.Entities; namespace Shentun.WebPeis.Models; /// /// 团检分组包含组合项目 /// -public partial class CustomerOrgGroupDetail +public partial class CustomerOrgGroupDetail : AuditedEntity, IHasConcurrencyStamp { /// /// 分组编号 @@ -30,15 +32,14 @@ public partial class CustomerOrgGroupDetail public string? ConcurrencyStamp { get; set; } - public DateTime CreationTime { get; set; } - - public Guid CreatorId { get; set; } - - public DateTime LastModificationTime { get; set; } - - public Guid LastModifierId { get; set; } + public virtual Asbitem Asbitem { get; set; } = null!; public virtual CustomerOrgGroup CustomerOrgGroup { get; set; } = null!; + + public override object?[] GetKeys() + { + return [CustomerOrgGroupId, AsbitemId]; + } } diff --git a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AsbitemConfigure.cs b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AsbitemConfigure.cs index 02c7270..7568444 100644 --- a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AsbitemConfigure.cs +++ b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AsbitemConfigure.cs @@ -102,6 +102,13 @@ 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.HasOne(d => d.ItemType).WithMany(p => p.Asbitems) .HasForeignKey(d => d.ItemTypeId) .OnDelete(DeleteBehavior.ClientSetNull)