using Dlhis.Basic.Appointment.Request; using Dlhis.Basic.Appointment.Response; using Dlhis.Basic.Appointment.Services; using Dlhis.Entity.Visitor.Enums; using Kurisu.AspNetCore.DataAccess.Dto; using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace Dlhis.Basic.Appointment.Controllers; /// /// 预约 /// [Authorize] [ApiController] [Route("api/[controller]")] public class AppointmentsController : ControllerBase { private readonly IAppointmentService _appointmentService; public AppointmentsController(IAppointmentService appointmentService) { _appointmentService = appointmentService; } /// /// 预约申请分页 /// /// /// [HttpGet("page")] public async Task> GetPageAsync([FromQuery] AppointmentPageRequest request) { return await _appointmentService.GetPageAsync(request); } /// /// 获取预约明细 /// /// /// [HttpGet("details")] public async Task> GetAppointmentDetailsByIdAsync(string no) { return await _appointmentService.GetAppointmentDetailsByIdAsync(no); } /// /// 确认到达 /// /// /// [AllowAnonymous] [HttpPost("confirm")] [Transactional] [IgnoreTenant] public async Task ConfirmAsync(AppointmentConfirmRequest request) { await _appointmentService.ConfirmAsync(request); } /// /// 强制离场 /// /// [HttpPost("focusleave")] [Transactional] public async Task FocusLeaveAsync(AppointmentFocusLeaveRequest request) { await _appointmentService.FocusLeaveAsync(request.Id, request.Reason); } /// /// 人脸更新 /// /// [AllowAnonymous] [HttpPost("face/update")] [Transactional] [IgnoreTenant] public async Task UpdateFaceAsync(AppointmentConfirmRequest request) { await _appointmentService.UpdateFaceAsync(request.Id, request.Base64Image); } /// /// 根据身份证获取当天预约信息 /// /// /// /// [AllowAnonymous] [HttpGet("today")] public async Task GetTodayByIdNoAsync(string idNo, string factory) { return await _appointmentService.GetTodayByIdNoAsync(idNo, factory); } /// /// 门禁预约 /// /// /// /// /// /// /// [AllowAnonymous] [HttpGet("door/list")] public async Task> GetRecordListAsync(string factory, string search, VisitorAppointmentDetailStatusEnumType? status, DateTime start, DateTime end) { return await _appointmentService.GetRecordListAsync(factory, search, status, start, end); } /// /// 根据身份证获取预约信息分页 /// /// /// [AllowAnonymous] [HttpGet("idno/page")] public async Task> GetRecordPageByIdNoAsync([FromQuery] AppointmentIdNoPageRequest request) { return await _appointmentService.GetRecordPageByIdNoAsync(request); } /// /// 数据明细 /// /// /// /// /// [AllowAnonymous] [HttpGet("summary")] public async Task GetSummaryAsync(string factory, DateTime start, DateTime end) { end = start.Date.AddDays(1).AddMilliseconds(-1); return await _appointmentService.GetSummaryAsync(factory, start, end); } /// /// 自动离职处理 /// [AllowAnonymous] [HttpPost("autoResign")] [IgnoreTenant] public async Task AutoResignAsync() { await _appointmentService.AutoResignAsync(); } [AllowAnonymous] [HttpPost("recover")] [IgnoreTenant] public async Task RecoverAsync() { await _appointmentService.RecoverAsync(); } [AllowAnonymous] [IgnoreTenant] [HttpGet("visitor-devices")] public async Task> GetVisitorDevicesAsync(long detailId) { return await _appointmentService.GetVisitorDevicesAsync(detailId); } }