diff --git a/src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs b/src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs index 3b70d7c..8288999 100644 --- a/src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs +++ b/src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs @@ -47,9 +47,33 @@ namespace Shentun.WebPeis.AppointSchedules /// /// [HttpPost("api/app/AppointSchedule/GetAppointScheduleDateList")] - public async Task> GetAppointScheduleDateListAsync() + public async Task> GetAppointScheduleDateListAsync(MedicalCenterIdInputDto input) { var appointScheduleDateDtos = await GetAppointScheduleDateTestListAsync(); + var canAppointDaysStr = await _sysParmValueManager.GetSysParmValueAsync(input.MedicalCenterId, "appoint_schedule_can_appoint_days"); + if (!int.TryParse(canAppointDaysStr, out var canAppointDays)) + { + canAppointDays = 30; + } + + var appointSchedules = (from appointSchedule in await _appointScheduleRepository.GetQueryableAsync() + join appointScheduleTime in await _appointScheduleTimeRepository.GetQueryableAsync() + on appointSchedule.AppointScheduleId equals appointScheduleTime.AppointScheduleId + where appointSchedule.MedicalCenterId == input.MedicalCenterId && + appointSchedule.AppointDate >= DateTime.Now.Date && appointSchedule.AppointDate <= DateTime.Now.Date.AddDays(canAppointDays + select new + { + appointSchedule, + appointScheduleTime + } + ).ToList(); + var list = appointSchedules.GroupBy(o => o.appointSchedule) + .Select(x => new AppointScheduleDateDto() + { + AppointDate = x.Key.AppointDate, + IsWork = (x.Key.AmNumberLimit + x.Key.PmNumberLimit) == 0? 'N':'Y', + IsFull = (x.Key.AmNumberLimit + x.Key.PmNumberLimit)<= x.Key.AppointScheduleTimes.Sum(m=>m.AppointNumber)?'Y':'N' + }).ToList(); return appointScheduleDateDtos; } diff --git a/src/Shentun.WebPeis.Application/MedicalCenterIdInputDto.cs b/src/Shentun.WebPeis.Application/MedicalCenterIdInputDto.cs new file mode 100644 index 0000000..3be79a6 --- /dev/null +++ b/src/Shentun.WebPeis.Application/MedicalCenterIdInputDto.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Shentun.WebPeis +{ + public class MedicalCenterIdInputDto + { + public Guid MedicalCenterId { get; set; } + } +} diff --git a/src/Shentun.WebPeis.Domain/Models/AppointSchedule.cs b/src/Shentun.WebPeis.Domain/Models/AppointSchedule.cs index 890e733..be212f1 100644 --- a/src/Shentun.WebPeis.Domain/Models/AppointSchedule.cs +++ b/src/Shentun.WebPeis.Domain/Models/AppointSchedule.cs @@ -36,6 +36,8 @@ public partial class AppointSchedule : AuditedEntity, IHasConcurrencyStamp public Guid AppointScheduleId { get; set; } + public Guid MedicalCenterId { get; set; } + public virtual ICollection AppointScheduleTimes { get; set; } = new List(); public override object?[] GetKeys() diff --git a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointScheduleConfigure.cs b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointScheduleConfigure.cs index c522492..c1d9ea7 100644 --- a/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointScheduleConfigure.cs +++ b/src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointScheduleConfigure.cs @@ -40,6 +40,7 @@ namespace Shentun.WebPeis.Configures entity.Property(e => e.AmNumberLimit).IsRequired().HasColumnName("am_number_limit"); entity.Property(e => e.PmNumberLimit).IsRequired().HasColumnName("pm_number_limit"); entity.Property(e => e.SingleNumberLimit).IsRequired().HasColumnName("single_number_limit"); + entity.Property(e => e.MedicalCenterId).IsRequired().HasColumnName("medical_center_id"); } } }