diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs index 804e52d1..9f525254 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs @@ -43,6 +43,33 @@ public class DevicesController : ControllerBase return await _deviceTemplateService.GetPageAsync(request); } + + /// + /// 设备心跳 + /// + /// + /// + [Obsolete("迁移到DeviceConnect")] + [HttpPost("heartbeat")] + [IgnoreTenant] + public async Task HeartbeatAsync(DeviceHeartbeatRequest request) + { + await _deviceConnectService.HeartbeatAsync(request); + } + + /// + /// 设备注册 + /// + /// + /// + [Obsolete("迁移到DeviceConnect")] + [HttpPost("resigter")] + [IgnoreTenant] + public async Task ResigterAsync(DeviceResigterRequest request) + { + return await _deviceConnectService.ResigterAsync(request); + } + /// /// 设备模板保存 /// @@ -78,18 +105,6 @@ public class DevicesController : ControllerBase await _deviceService.SaveAsync(request); } - /// - /// 设备注册 - /// - /// - /// - [HttpPost("resigter")] - [IgnoreTenant] - public async Task ResigterAsync(DeviceResigterRequest request) - { - return await _deviceConnectService.ResigterAsync(request); - } - /// /// 获取激活码 /// @@ -126,18 +141,6 @@ public class DevicesController : ControllerBase await _deviceConnectService.SetResigterBusinessPlaceAsync(request); } - /// - /// 设备心跳 - /// - /// - /// - [HttpPost("heartbeat")] - [IgnoreTenant] - public async Task HeartbeatAsync(DeviceHeartbeatRequest request) - { - await _deviceConnectService.HeartbeatAsync(request); - } - /// /// 检查设备是否存在 /// diff --git a/Src/Dlhis.Basic/Device/Request/DevicePageRequest.cs b/Src/Dlhis.Basic/Device/Request/DevicePageRequest.cs index e8acbe7f..111f857c 100644 --- a/Src/Dlhis.Basic/Device/Request/DevicePageRequest.cs +++ b/Src/Dlhis.Basic/Device/Request/DevicePageRequest.cs @@ -16,4 +16,9 @@ public class DevicePageRequest : PageDto /// [EnumDataType(typeof(DeviceTypeEnumType))] public DeviceTypeEnumType? Type { get; set; } + + /// + /// 启用状态 + /// + public bool? Enable { get; set; } } diff --git a/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs b/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs index 87777045..bf3045e1 100644 --- a/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs +++ b/Src/Dlhis.Basic/Device/Services/IDeviceConnectService.cs @@ -19,7 +19,6 @@ public interface IDeviceConnectService : IScopeDependency /// Task> GetNotSetBusinessPlaceDevicesAsync(); - /// /// 设置设备营业点 /// @@ -33,4 +32,11 @@ public interface IDeviceConnectService : IScopeDependency /// /// Task HeartbeatAsync(DeviceHeartbeatRequest request); + + /// + /// 尝试连接 + /// + /// + /// + Task TryConnectAsync(DeviceConnectionTryRequest request); } diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs index 810c377d..78ed4376 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceConnectService.cs @@ -1,4 +1,7 @@ -using Dlhis.Basic.Device.Request; +using System.Net; +using System.Net.Sockets; +using Dlhis.Basic.Device.Dtos; +using Dlhis.Basic.Device.Request; using Dlhis.Basic.Device.Response; using Dlhis.Entity.Basic.Entity; using Dlhis.Entity.Device.Entities; @@ -6,6 +9,7 @@ using Dlhis.Entity.Device.Enums; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.SqlSugar.Services; using Mapster; +using Newtonsoft.Json; namespace Dlhis.Basic.Device.Services.Implements; @@ -95,6 +99,26 @@ public class DeviceConnectService : IDeviceConnectService await _dbContext.UpdateAsync(registry); } + + public async Task TryConnectAsync(DeviceConnectionTryRequest request) + { + try + { + var ipInfo = request.ConnectionInfo.ToObject(); + + //超时时间 + var CancellationTokenSource = new CancellationTokenSource(300); + await new TcpClient().ConnectAsync(IPAddress.Parse(ipInfo.IP), ipInfo.Port, CancellationTokenSource.Token); + + return true; + } + catch (Exception) + { + return false; + } + } + + //******************************************************** help methods ********************************************************** /// diff --git a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs index 468ed8eb..f71f6073 100644 --- a/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs +++ b/Src/Dlhis.Basic/Device/Services/Implements/DeviceService.cs @@ -33,6 +33,7 @@ public class DeviceService : IDeviceService .LeftJoin((d, dt, dr) => d.UniqueNo == dr.DeviceUniqueNo) .LeftJoin((d, dt, dr, bp) => dr.BusinessPlaceCode == bp.Code) .WhereIF(request.Type.HasValue, (d, dt) => d.Type == request.Type) + .WhereIF(request.Enable.HasValue, (d, dt) => d.Enable == request.Enable) .WhereIF(request.Search.IsPresent(), (d) => d.UniqueNo == request.Search || d.DeployPlace.Contains(request.Search)) .Select((d, dt, dr, bp) => new DevicePageResponse {