Browse Source

预约

master
DESKTOP-G961P6V\Zhh 1 year ago
parent
commit
548f356f2d
  1. 53
      src/Shentun.WebPeis.Application/AppointSchedules/AppointScheduleAppService.cs
  2. 2
      src/Shentun.WebPeis.Application/MedicalCenterIdInputDto.cs
  3. 2
      src/Shentun.WebPeis.Domain/Models/AppointScheduleTemplate.cs
  4. 13
      src/Shentun.WebPeis.Domain/OrganizationUnits/WebPeisOrganizationUnitManager.cs
  5. 1
      src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointScheduleTemplateConfigure.cs
  6. 20
      test/Shentun.WebPeis.Application.Tests/AppointScheduleAppServiceTest.cs

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

@ -2,12 +2,14 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Shentun.WebPeis.AppointScheduleTimes; using Shentun.WebPeis.AppointScheduleTimes;
using Shentun.WebPeis.Models; using Shentun.WebPeis.Models;
using Shentun.WebPeis.OrganizationUnits;
using Shentun.WebPeis.SysParmValues; using Shentun.WebPeis.SysParmValues;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using static log4net.Appender.RollingFileAppender; using static log4net.Appender.RollingFileAppender;
@ -25,6 +27,7 @@ namespace Shentun.WebPeis.AppointSchedules
private readonly AppointScheduleManager _appointScheduleManager; private readonly AppointScheduleManager _appointScheduleManager;
private readonly AppointScheduleTimeManager _appointScheduleTimeManager; private readonly AppointScheduleTimeManager _appointScheduleTimeManager;
private readonly SysParmValueManager _sysParmValueManager; private readonly SysParmValueManager _sysParmValueManager;
private readonly WebPeisOrganizationUnitManager _webPeisOrganizationUnitManager;
public AppointScheduleAppService(IRepository<AppointSchedule> appointScheduleRepository, public AppointScheduleAppService(IRepository<AppointSchedule> appointScheduleRepository,
CacheService cacheService, CacheService cacheService,
@ -32,7 +35,8 @@ namespace Shentun.WebPeis.AppointSchedules
IRepository<AppointScheduleTemplate> appointScheduleTemplateRepository, IRepository<AppointScheduleTemplate> appointScheduleTemplateRepository,
IRepository<AppointScheduleTime> appointScheduleTimeRepository, IRepository<AppointScheduleTime> appointScheduleTimeRepository,
AppointScheduleTimeManager appointScheduleTimeManager, AppointScheduleTimeManager appointScheduleTimeManager,
SysParmValueManager sysParmValueManager)
SysParmValueManager sysParmValueManager,
WebPeisOrganizationUnitManager webPeisOrganizationUnitManager)
{ {
_appointScheduleRepository = appointScheduleRepository; _appointScheduleRepository = appointScheduleRepository;
_cacheService = cacheService; _cacheService = cacheService;
@ -41,6 +45,7 @@ namespace Shentun.WebPeis.AppointSchedules
_appointScheduleTimeRepository = appointScheduleTimeRepository; _appointScheduleTimeRepository = appointScheduleTimeRepository;
_appointScheduleTimeManager = appointScheduleTimeManager; _appointScheduleTimeManager = appointScheduleTimeManager;
_sysParmValueManager = sysParmValueManager; _sysParmValueManager = sysParmValueManager;
_webPeisOrganizationUnitManager = webPeisOrganizationUnitManager;
} }
/// <summary> /// <summary>
@ -51,8 +56,21 @@ namespace Shentun.WebPeis.AppointSchedules
[HttpPost("api/app/AppointSchedule/GetAppointScheduleDateList")] [HttpPost("api/app/AppointSchedule/GetAppointScheduleDateList")]
public async Task<List<AppointScheduleDateDto>> GetAppointScheduleDateListAsync(MedicalCenterIdInputDto input) public async Task<List<AppointScheduleDateDto>> GetAppointScheduleDateListAsync(MedicalCenterIdInputDto input)
{ {
var canAppointDaysStr = await _sysParmValueManager.GetSysParmValueAsync(input.MedicalCenterId, "appoint_schedule_can_appoint_days");
Guid medicalCenterId ;
if (input == null || input.MedicalCenterId == Guid.Empty || input.MedicalCenterId == null)
{
var webPeisOrganizationUnit = await _webPeisOrganizationUnitManager.GetMedicalCenterListAsync();
if (webPeisOrganizationUnit.Count > 1)
{
throw new UserFriendlyException("体检中心参数不能为空");
}
medicalCenterId = webPeisOrganizationUnit.First().Id;
}
else
{
medicalCenterId = (Guid)input.MedicalCenterId;
}
var canAppointDaysStr = await _sysParmValueManager.GetSysParmValueAsync(medicalCenterId, "appoint_schedule_can_appoint_days");
if (!int.TryParse(canAppointDaysStr, out var canAppointDays)) if (!int.TryParse(canAppointDaysStr, out var canAppointDays))
{ {
canAppointDays = 30; canAppointDays = 30;
@ -61,7 +79,7 @@ namespace Shentun.WebPeis.AppointSchedules
var appointSchedules = (from appointSchedule in await _appointScheduleRepository.GetQueryableAsync() var appointSchedules = (from appointSchedule in await _appointScheduleRepository.GetQueryableAsync()
join appointScheduleTime in await _appointScheduleTimeRepository.GetQueryableAsync() join appointScheduleTime in await _appointScheduleTimeRepository.GetQueryableAsync()
on appointSchedule.AppointScheduleId equals appointScheduleTime.AppointScheduleId on appointSchedule.AppointScheduleId equals appointScheduleTime.AppointScheduleId
where appointSchedule.MedicalCenterId == input.MedicalCenterId &&
where appointSchedule.MedicalCenterId == medicalCenterId &&
appointSchedule.AppointDate >= DateTime.Now.Date && appointSchedule.AppointDate <= DateTime.Now.Date.AddDays(canAppointDays) appointSchedule.AppointDate >= DateTime.Now.Date && appointSchedule.AppointDate <= DateTime.Now.Date.AddDays(canAppointDays)
select new select new
{ {
@ -104,34 +122,7 @@ namespace Shentun.WebPeis.AppointSchedules
} }
private async Task<List<AppointScheduleDateDto>> GetAppointScheduleDateTestListAsync()
{
var appointScheduleDateDtos = new List<AppointScheduleDateDto>();
DateTime startDate = DateTime.Now.Date;
for (var i = 0; i < 60; i++)
{
var appointScheduleDateDto = new AppointScheduleDateDto()
{
AppointDate = startDate.AddDays(i),
};
appointScheduleDateDtos.Add(new AppointScheduleDateDto()
{
AppointDate = startDate.AddDays(i),
});
if (appointScheduleDateDto.AppointDate.DayOfWeek == DayOfWeek.Sunday)
{
appointScheduleDateDto.IsWork = 'N';
}
else if (appointScheduleDateDto.AppointDate.DayOfWeek == DayOfWeek.Wednesday)
{
appointScheduleDateDto.IsFull = 'Y';
}
}
return appointScheduleDateDtos;
}
/// <summary> /// <summary>

2
src/Shentun.WebPeis.Application/MedicalCenterIdInputDto.cs

@ -8,6 +8,6 @@ namespace Shentun.WebPeis
{ {
public class MedicalCenterIdInputDto public class MedicalCenterIdInputDto
{ {
public Guid MedicalCenterId { get; set; }
public Guid? MedicalCenterId { get; set; }
} }
} }

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

@ -57,7 +57,7 @@ public class AppointScheduleTemplate : AuditedEntity, IHasConcurrencyStamp, ID
public int DisplayOrder { get; set; } public int DisplayOrder { get; set; }
public Guid MedicalCenterId { get; set; }
public string? ConcurrencyStamp { get; set; } public string? ConcurrencyStamp { get; set; }

13
src/Shentun.WebPeis.Domain/OrganizationUnits/WebPeisOrganizationUnitManager.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using AutoMapper.Internal.Mappers;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using Shentun.WebPeis.Models; using Shentun.WebPeis.Models;
using System; using System;
@ -91,6 +92,16 @@ namespace Shentun.WebPeis.OrganizationUnits
} }
public async Task<List<AppOrganizationUnit>> GetMedicalCenterListAsync()
{
var entlist = (await _appOrganizationUnitRepository.GetQueryableAsync()).
Where(u => u.IsMedicalCenter == 'Y').ToList();
return entlist;
}
/// <summary> /// <summary>
/// 获取当前用户的体检中心名称 /// 获取当前用户的体检中心名称
/// </summary> /// </summary>

1
src/Shentun.WebPeis.EntityFrameworkCore/Configures/AppointScheduleTemplateConfigure.cs

@ -43,6 +43,7 @@ namespace Shentun.WebPeis.Configures
entity.Property(e => e.PmStopTime).HasColumnName("pm_stop_time"); entity.Property(e => e.PmStopTime).HasColumnName("pm_stop_time");
entity.Property(e => e.WeekId).IsRequired().HasColumnName("week_id"); entity.Property(e => e.WeekId).IsRequired().HasColumnName("week_id");
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");
} }
} }
} }

20
test/Shentun.WebPeis.Application.Tests/AppointScheduleAppServiceTest.cs

@ -68,5 +68,25 @@ namespace Shentun.WebPeis
await unitOfWork.CompleteAsync(); await unitOfWork.CompleteAsync();
} }
} }
[Fact]
public async Task GetAppointScheduleDateListNoMedicalCenterAsync()
{
using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
{
var entity = new MedicalCenterIdInputDto()
{
// MedicalCenterId = new Guid("150da355-dfbf-466b-9697-355836a862c4")
};
var list = await _appService.GetAppointScheduleDateListAsync(null);
foreach (var item in list)
{
_output.WriteLine(item.AppointDate.ToString());
}
await unitOfWork.CompleteAsync();
}
}
} }
} }
Loading…
Cancel
Save