Browse Source

预约登记

master
DESKTOP-G961P6V\Zhh 1 year ago
parent
commit
6f82e12f40
  1. 59
      src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs
  2. 46
      src/Shentun.WebPeis.Domain/CustomerOrgs/CustomerOrgManager.cs
  3. 13
      src/Shentun.WebPeis.Domain/Models/Asbitem.cs
  4. 15
      src/Shentun.WebPeis.Domain/Models/CustomerOrgGroupDetail.cs
  5. 7
      src/Shentun.WebPeis.EntityFrameworkCore/Configures/AsbitemConfigure.cs

59
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<CustomerOrg> _customerOrgRepository;
private readonly IRepository<CustomerOrgGroup> _customerOrgGroupRepository;
private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
private readonly IRepository<CustomerOrgRegister> _customerOrgRegisterRepository;
private readonly IRepository<MedicalPackage> _medicalPackageRepository;
private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository;
private readonly IRepository<AppointPatientRegister> _repository;
private readonly IRepository<IdentityUser> _identityUserRepository;
private readonly IdentityUserManager _identityUserManager;
@ -27,6 +30,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
private readonly SysParmValueManager _sysParmValueManager;
private readonly IRepository<PrimarykeyBuilder> _primarykeyBuilderRepository;
private readonly IRepository<Asbitem> _asbitemRepository;
private readonly CustomerOrgManager _customerOrgManager;
public AppointPatientRegisterManager(IRepository<AppointPatientRegister> repository,
IRepository<IdentityUser> identityUserRepository,
IdentityUserManager identityUserManager,
@ -37,7 +41,10 @@ namespace Shentun.WebPeis.AppointPatientRegisters
IRepository<MedicalPackage> medicalPackageRepository,
IRepository<CustomerOrg> customerOrgRepository,
IRepository<CustomerOrgRegister> customerOrgRegisterRepository,
IRepository<Asbitem> asbitemRepository
IRepository<Asbitem> asbitemRepository,
CustomerOrgManager customerOrgManager,
IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
IRepository<CustomerOrgGroupDetail> 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<AppointPatientRegister> 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)
{

46
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<CustomerOrg> _repository;
private readonly IRepository<CustomerOrgRegister> _customerOrgRegisterRepository;
private readonly IRepository<CustomerOrgGroup> _customerOrgGroupRepository;
public CustomerOrgManager(
IRepository<CustomerOrg> repository,
IRepository<CustomerOrgRegister> customerOrgRegisterRepository,
IRepository<CustomerOrgGroup> customerOrgGroupRepository
)
{
_repository = repository;
_customerOrgRegisterRepository = customerOrgRegisterRepository;
_customerOrgGroupRepository = customerOrgGroupRepository;
}
public async Task<CustomerOrg> 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;
}
}
}

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

@ -74,9 +74,20 @@ public partial class Asbitem:AuditedEntity, IHasConcurrencyStamp
/// 是启用
/// </summary>
public char IsActive { get; set; }
/// <summary>
/// 警告事项
/// </summary>
public string? Warn { get; set; }
/// <summary>
/// 备孕期间禁止检查
/// </summary>
public char IsDisablePreparePregnancy { get; set; }
/// <summary>
/// 怀孕期间禁止检查
/// </summary>
public char IsDisablePregnancy { get; set; }
public Guid? DiseaseScreeningTypeId { get; set; }
public string? SimpleCode { get; set; }

15
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;
/// <summary>
/// 团检分组包含组合项目
/// </summary>
public partial class CustomerOrgGroupDetail
public partial class CustomerOrgGroupDetail : AuditedEntity, IHasConcurrencyStamp
{
/// <summary>
/// 分组编号
@ -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];
}
}

7
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)

Loading…
Cancel
Save