diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs index d7526017..e2b3bfe0 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicesConnectController.cs @@ -1,4 +1,5 @@ -using Dlhis.Basic.Device.Dtos; +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; @@ -66,4 +67,15 @@ public class DevicesConnectController : ControllerBase { return await _deviceConnectService.GetOnlineDeviceUniqueInfoAsync(); } + + /// + /// 获取品牌设备 + /// + /// + /// + [HttpGet("brand-devices")] + public async Task> GetDeviceUniqueInfoByBrandAsync([Required(ErrorMessage = "请明确设备品牌")] string brand) + { + return await _deviceConnectService.GetDeviceUniqueInfoByBrandAsync(brand); + } } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs b/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs index e70b94f9..9e3304bc 100644 --- a/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs @@ -46,4 +46,11 @@ public interface IDeviceConnectService : IScopeDependency /// /// Task> GetOnlineDeviceUniqueInfoAsync(); + + /// + /// 根据品牌获取设备信息 + /// + /// + /// + Task> GetDeviceUniqueInfoByBrandAsync(string brand); } \ No newline at end of file diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs index a797bf00..ba73cb91 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs @@ -115,7 +115,7 @@ public class DeviceConnectService : IDeviceConnectService { return await _dbContext.Queryable() .LeftJoin((d, dr) => d.UniqueNo == dr.DeviceUniqueNo) - .Where((d, dr) => d.Enable && SqlFunc.DateAdd(dr.LastHeartbeatTime, SqlFunc.IIF(d.HeartbeatInterval == 0, 30, 30), DateType.Second) > DateTime.Now) + .Where((d, dr) => d.Enable && (d.HeartbeatInterval == 0 || SqlFunc.DateAdd(dr.LastHeartbeatTime, d.HeartbeatInterval, DateType.Second) > DateTime.Now)) .Select((d, dr) => new DeviceUniqueWithConnectionInfoDto { DeviceUnique = d.UniqueNo, @@ -123,6 +123,19 @@ public class DeviceConnectService : IDeviceConnectService }) .ToListAsync(); } + + public async Task> GetDeviceUniqueInfoByBrandAsync(string brand) + { + return await _dbContext.Queryable() + .LeftJoin((d, dt) => d.TemplateCode == dt.Code) + .Where((d, dt) => dt.Brand == brand) + .Select(d => new DeviceUniqueWithConnectionInfoDto + { + DeviceUnique = d.UniqueNo, + ConnectionInfo = d.ConnectionInfo + }) + .ToListAsync(); + } //******************************************************** help methods **********************************************************