Browse Source

预约计划

master
DESKTOP-G961P6V\Zhh 1 year ago
parent
commit
2aeeecba23
  1. 26
      src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs
  2. 13
      src/Shentun.WebPeis.Application/MedicalCenterIdInputDto.cs
  3. 2
      src/Shentun.WebPeis.Domain/Models/AppointSchedule.cs
  4. 1
      src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointScheduleConfigure.cs

26
src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs

@ -47,9 +47,33 @@ namespace Shentun.WebPeis.AppointSchedules
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[HttpPost("api/app/AppointSchedule/GetAppointScheduleDateList")] [HttpPost("api/app/AppointSchedule/GetAppointScheduleDateList")]
public async Task<List<AppointScheduleDateDto>> GetAppointScheduleDateListAsync()
public async Task<List<AppointScheduleDateDto>> GetAppointScheduleDateListAsync(MedicalCenterIdInputDto input)
{ {
var appointScheduleDateDtos = await GetAppointScheduleDateTestListAsync(); 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; return appointScheduleDateDtos;
} }

13
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; }
}
}

2
src/Shentun.WebPeis.Domain/Models/AppointSchedule.cs

@ -36,6 +36,8 @@ public partial class AppointSchedule : AuditedEntity, IHasConcurrencyStamp
public Guid AppointScheduleId { get; set; } public Guid AppointScheduleId { get; set; }
public Guid MedicalCenterId { get; set; }
public virtual ICollection<AppointScheduleTime> AppointScheduleTimes { get; set; } = new List<AppointScheduleTime>(); public virtual ICollection<AppointScheduleTime> AppointScheduleTimes { get; set; } = new List<AppointScheduleTime>();
public override object?[] GetKeys() public override object?[] GetKeys()

1
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.AmNumberLimit).IsRequired().HasColumnName("am_number_limit");
entity.Property(e => e.PmNumberLimit).IsRequired().HasColumnName("pm_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.SingleNumberLimit).IsRequired().HasColumnName("single_number_limit");
entity.Property(e => e.MedicalCenterId).IsRequired().HasColumnName("medical_center_id");
} }
} }
} }
Loading…
Cancel
Save