using System.ComponentModel.DataAnnotations; using Dlhis.Basic.Device.Dtos; using Dlhis.Basic.Device.Request; using Dlhis.Basic.Device.Services; using Kurisu.AspNetCore.DataAccess.SqlSugar.Aop; using Kurisu.AspNetCore.UnifyResultAndValidation.Aop; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace Dlhis.Basic.Device.Controllers; /// /// 设备连接控制器 /// [Authorize] [Route("api/[controller]")] [ApiController] public class DevicesConnectController : ControllerBase { private readonly IDeviceConnectService _deviceConnectService; public DevicesConnectController(IDeviceConnectService deviceConnectService) { _deviceConnectService = deviceConnectService; } /// /// 设备心跳 /// /// /// [DisableApiLog] [HttpPost("heartbeat")] [IgnoreTenant] public async Task HeartbeatAsync(DeviceHeartbeatRequest request) { await _deviceConnectService.HeartbeatAsync(request); } /// /// 设备注册 /// /// /// [HttpPost("register")] [IgnoreTenant] public async Task RegisterAsync(DeviceRegisterRequest request) { return await _deviceConnectService.RegisterAsync(request); } /// /// 尝试连接 /// /// /// [HttpPost("tryConnect")] public async Task TryConnectAsync(DeviceConnectionTryRequest request) { return await _deviceConnectService.TryConnectAsync(request); } /// /// 获取在线设备 /// /// [HttpGet("online-devices")] public async Task> GetOnlineDeviceUniqueInfoAsync() { return await _deviceConnectService.GetOnlineDeviceUniqueInfoAsync(); } /// /// 获取品牌设备 /// /// /// /// [HttpGet("brand-devices")] [IgnoreTenant] public async Task> GetDeviceUniqueInfoByBrandAsync( [Required(ErrorMessage = "请明确设备品牌")] string brand, [Required(ErrorMessage = "请明确厂区")] string factory) { return await _deviceConnectService.GetDeviceUniqueInfoByBrandAsync(brand, factory); } }