From 2c4b3ceccdb2524db201f40688a51655a44c7e85 Mon Sep 17 00:00:00 2001
From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com>
Date: Thu, 6 Jun 2024 00:32:03 +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
---
.../AppointPatientRegisterDto.cs | 9 ++
.../AppointPatientRegisterAppService.cs | 119 +++++++++++++++++-
.../AppointPatientRegisterCompleteFlag.cs | 1 +
.../AppointPatientRegisterManager.cs | 1 +
.../Models/AppointPatientRegister.cs | 5 +
.../AppointPatientRegisterConfigure.cs | 4 +
6 files changed, 138 insertions(+), 1 deletion(-)
diff --git a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/AppointPatientRegisterDto.cs b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/AppointPatientRegisterDto.cs
index d32f28b..8b04139 100644
--- a/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/AppointPatientRegisterDto.cs
+++ b/src/Shentun.WebPeis.Application.Contracts/AppointPatientRegisters/AppointPatientRegisterDto.cs
@@ -78,6 +78,15 @@ namespace Shentun.WebPeis.AppointPatientRegisters
public char CompleteFlag { get; set; }
///
+ /// 完成标志名称
+ ///
+ public string CompleteFlagName { get; set; }
+
+ ///
+ /// 是否已收费
+ ///
+ public char IsCharge { get; set; }
+ ///
/// 预约日期
///
diff --git a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
index d542e46..9ba9010 100644
--- a/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
+++ b/src/Shentun.WebPeis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs
@@ -90,7 +90,12 @@ namespace Shentun.WebPeis.AppointPatientRegisters
_registerCheckRepository = registerCheckRepository;
}
-
+ ///
+ /// 预约,小程序使用
+ ///
+ ///
+ ///
+ ///
[HttpPost("api/app/AppointPatientRegister/Create")]
public async Task CreateAsync(CreateAppointPatientRegisterDto input)
{
@@ -120,6 +125,12 @@ namespace Shentun.WebPeis.AppointPatientRegisters
return result;
}
+ ///
+ /// 通过手机号等获取预约列表信息,体检程序前台登记使用
+ ///
+ ///
+ ///
+ ///
[HttpPost("api/app/AppointPatientRegister/GetListByFilter")]
public async Task> GetListByFilterAsync(AppointPatientRegisterInputDto input)
{
@@ -234,6 +245,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
MedicalPackageName = o.FirstOrDefault().haveMedicalPackage == null ? "" : o.FirstOrDefault().haveMedicalPackage.MedicalPackageName,
MedicalCenterId = o.FirstOrDefault().appointPatientRegister.MedicalCenterId,
CompleteFlag = o.FirstOrDefault().appointPatientRegister.CompleteFlag,
+ IsCharge = o.FirstOrDefault().appointPatientRegister.IsCharge,
AppointDate = o.FirstOrDefault().appointPatientRegister.AppointDate,
Remark = o.FirstOrDefault().appointPatientRegister.Remark,
PregnantFlag = o.FirstOrDefault().appointPatientRegister.PregnantFlag,
@@ -250,8 +262,113 @@ namespace Shentun.WebPeis.AppointPatientRegisters
+ }
+ ///
+ /// 获取某人的预约列表,小程序使用
+ ///
+ ///
+ ///
+ ///
+ [HttpPost("api/app/AppointPatientRegister/GetListByPersonId")]
+ public async Task> GetListByPersonIdAsync(PersonIdInputDto input)
+ {
+ if (input == null) throw new UserFriendlyException("参数不能为空");
+
+
+ var query = (from user in await _identityUserRepository.GetQueryableAsync()
+ join person in await _personRepository.GetQueryableAsync()
+ on user.Id equals person.PersonId
+ join appointPatientRegister in await _repository.GetQueryableAsync()
+ on person.PersonId equals appointPatientRegister.PersonId
+ join medicalPackage in await _medicalPackageRepository.GetQueryableAsync()
+ on appointPatientRegister.MedicalPackageId equals medicalPackage.MedicalPackageId into canEmptyMedicalPackage
+ from haveMedicalPackage in canEmptyMedicalPackage.DefaultIfEmpty()
+ join customerOrgGroup in await _customerOrgGroupRepository.GetQueryableAsync()
+ on appointPatientRegister.CustomerOrgGroupId equals customerOrgGroup.CustomerOrgGroupId into canEmptyCustomerOrgGroup
+ from haveCustomerOrgGroup in canEmptyCustomerOrgGroup.DefaultIfEmpty()
+ join appointRegisterAsbitem in await _appointRegisterAsbitemRepository.GetQueryableAsync()
+ on appointPatientRegister.AppointPatientRegisterId equals appointRegisterAsbitem.AppointPatientRegisterId
+ join asbitem in await _asbitemRepository.GetQueryableAsync()
+ on appointRegisterAsbitem.AsbitemId equals asbitem.AsbitemId
+ join customerOrg in await _customerOrgRepository.GetQueryableAsync()
+ on appointPatientRegister.CustomerOrgId equals customerOrg.CustomerOrgId
+ where appointPatientRegister.PersonId == input.PersonId
+ orderby appointPatientRegister.AppointDate
+ select new
+ {
+ user,
+ person,
+ appointPatientRegister,
+ appointRegisterAsbitem,
+ asbitem,
+ haveMedicalPackage,
+ haveCustomerOrgGroup,
+ customerOrg
+ }
+ );
+
+
+ var appointPatientRegisterDtos = query.ToList();
+
+ var list = appointPatientRegisterDtos.GroupBy(o => o.appointPatientRegister)
+ .Select(o => new AppointPatientRegisterDto()
+ {
+ AppointPatientRegisterId = o.FirstOrDefault().appointPatientRegister.AppointPatientRegisterId,
+ PersonId = o.FirstOrDefault().appointPatientRegister.PersonId,
+ PersonName = o.FirstOrDefault().user.Name,
+ IdNo = o.FirstOrDefault().person.IdNo,
+ SexId = o.FirstOrDefault().person.SexId,
+ MaritalStatusId = o.FirstOrDefault().person.MaritalStatusId,
+ CustomerOrgId = o.FirstOrDefault().appointPatientRegister.CustomerOrgId,
+ ChildCustomerOrgName = o.FirstOrDefault().customerOrg.PathCode.Length == 5 ? "" : o.FirstOrDefault().customerOrg.CustomerOrgName,
+ CustomerOrgGroupId = o.FirstOrDefault().appointPatientRegister.CustomerOrgGroupId,
+ CustomerOrgGroupName = o.FirstOrDefault().haveCustomerOrgGroup == null ? "" : o.FirstOrDefault().haveCustomerOrgGroup.CustomerOrgGroupName,
+ CustomerOrgRegisterId = o.FirstOrDefault().appointPatientRegister.CustomerOrgRegisterId,
+ MedicalPackageId = o.FirstOrDefault().appointPatientRegister.MedicalPackageId,
+ MedicalPackageName = o.FirstOrDefault().haveMedicalPackage == null ? "" : o.FirstOrDefault().haveMedicalPackage.MedicalPackageName,
+ MedicalCenterId = o.FirstOrDefault().appointPatientRegister.MedicalCenterId,
+ CompleteFlag = o.FirstOrDefault().appointPatientRegister.CompleteFlag,
+
+ AppointDate = o.FirstOrDefault().appointPatientRegister.AppointDate,
+ Remark = o.FirstOrDefault().appointPatientRegister.Remark,
+ PregnantFlag = o.FirstOrDefault().appointPatientRegister.PregnantFlag,
+ Height = o.FirstOrDefault().appointPatientRegister.Height,
+ Weight = o.FirstOrDefault().appointPatientRegister.Weight,
+ SexName = _cacheService.GetSexNameAsync(o.FirstOrDefault().person.SexId).Result,
+ MaritalStatusName = _cacheService.GetMaritalStatusNameAsync(o.FirstOrDefault().person.MaritalStatusId).Result,
+ CustomerOrgName = _customerOrgManager.GetTopCustomerOrgAsync(o.FirstOrDefault().appointPatientRegister.CustomerOrgId).Result.CustomerOrgName
+
+ }).ToList();
+
+
+ return list;
}
+ ///
+ /// 取消预约
+ ///
+ ///
+ ///
+ ///
+ public async Task CancelAppoint(AppointPatientRegisterIdInputDto input)
+ {
+ var appointPatientRegister = await _repository.GetAsync(o => o.AppointPatientRegisterId == input.AppointPatientRegisterId);
+ if(appointPatientRegister.IsCharge == 'Y')
+ {
+ throw new UserFriendlyException("已收费不能取消");
+ }
+ if (appointPatientRegister.CompleteFlag == AppointPatientRegisterCompleteFlag.Check)
+ {
+ throw new UserFriendlyException("已到检不能取消");
+ }
+ if (appointPatientRegister.CompleteFlag == AppointPatientRegisterCompleteFlag.CancelAppoint)
+ {
+ throw new UserFriendlyException("已取消预约不能重复取消");
+ }
+ appointPatientRegister.CompleteFlag = AppointPatientRegisterCompleteFlag.CancelAppoint;
+ await _repository.UpdateAsync(appointPatientRegister);
+
+ }
[HttpPost("api/app/AppointPatientRegister/GetAppointRegisterAsbitemListById")]
public async Task> GetAppointRegisterAsbitemListByIdAsync(AppointPatientRegisterIdInputDto input)
{
diff --git a/src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs b/src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs
index 7523119..77348c2 100644
--- a/src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs
+++ b/src/Shentun.WebPeis.Domain.Shared/Enums/AppointPatientRegisterCompleteFlag.cs
@@ -12,6 +12,7 @@ namespace Shentun.WebPeis.Enums
///
[Description("预约")]
public const char Appoint = '0';
+
///
/// 取消预约 1
///
diff --git a/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs b/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs
index 7c2d242..4b2b172 100644
--- a/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs
+++ b/src/Shentun.WebPeis.Domain/AppointPatientRegisters/AppointPatientRegisterManager.cs
@@ -68,6 +68,7 @@ namespace Shentun.WebPeis.AppointPatientRegisters
await Verify(entity);
entity.AppointPatientRegisterId = GuidGenerator.Create();
entity.CompleteFlag = AppointPatientRegisterCompleteFlag.Appoint;
+ entity.IsCharge = 'N';
foreach (var appointRegisterAsbitem in entity.AppointRegisterAsbitems)
{
appointRegisterAsbitem.AppointPatientRegisterId = entity.AppointPatientRegisterId;
diff --git a/src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs b/src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs
index 1c687ea..fb6689f 100644
--- a/src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs
+++ b/src/Shentun.WebPeis.Domain/Models/AppointPatientRegister.cs
@@ -76,6 +76,11 @@ public partial class AppointPatientRegister: AuditedEntity, IHasConcurrencyStamp
/// 人员登记ID
///
public Guid? PatientRegisterId { get; set; }
+
+ ///
+ /// 是否已收费
+ ///
+ public char IsCharge { get; set; }
///
/// 收费
///
diff --git a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointPatientRegisterConfigure.cs b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointPatientRegisterConfigure.cs
index 4693e5f..98dae55 100644
--- a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointPatientRegisterConfigure.cs
+++ b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointPatientRegisterConfigure.cs
@@ -28,6 +28,10 @@ namespace Shentun.WebPeis.Configures
.HasMaxLength(1)
.HasDefaultValueSql("'0'::bpchar")
.HasColumnName("complete_flag");
+ entity.Property(e => e.IsCharge)
+ .HasMaxLength(1)
+ .HasDefaultValueSql("'N'::bpchar")
+ .HasColumnName("is_charge");
entity.Property(e => e.ConcurrencyStamp)
.HasMaxLength(40)
.HasColumnName("concurrency_stamp");