V4完成: 预览+云台整合 操作列JSX按钮 全链路调通

This commit is contained in:
2026-05-17 14:22:46 +08:00
parent f118e8b245
commit f9eeeed843
13 changed files with 128 additions and 85 deletions

View File

@@ -3,21 +3,45 @@
*A组接口使用 [AllowAnonymous] + NodeToken 二次认证
*所有改动在 Partial 目录,不破坏框架可升级性
*/
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VolPro.Entity.DomainModels;
using Warehouse.IServices;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
using VolPro.Core.DBManager;
using VolPro.Core.DbSqlSugar;
using VolPro.Entity.DomainModels;
using Warehouse.IRepositories;
using Warehouse.IServices;
using Warehouse.Services;
namespace Warehouse.Controllers
{
public partial class gateway_nodesController
{
private readonly Igateway_nodesService _service;//访问业务代码
private readonly Ibase_deviceService _deviceService;
private readonly Iiot_alarmService _iot_alarmService;
private readonly IHttpContextAccessor _httpContextAccessor;
[ActivatorUtilitiesConstructor]
public gateway_nodesController(
Igateway_nodesService service,
Ibase_deviceService deviceService,
Iiot_alarmService iot_alarmService,
IHttpContextAccessor httpContextAccessor
)
: base(service)
{
_service = service;
_deviceService = deviceService;
_iot_alarmService = iot_alarmService;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>A1: 网关注册Upsert。认证方式: NodeToken</summary>
[HttpPost]
[Route("/api/gateway/register")]
@@ -32,11 +56,7 @@ namespace Warehouse.Controllers
var node = await _service.RegisterNodeAsync(req.NodeCode, req.Token, req.AdapterTypes, req.BaseUrl);
// 返回当前网关的顶层设备列表
var deviceSvc = _service.GetType().Assembly.GetType("Warehouse.Services.base_deviceService")
?.GetProperty("Instance")?.GetValue(null) as Ibase_deviceService;
var devices = deviceSvc != null
? await deviceSvc.GetDevicesByGatewayNodeAsync(node.NodeId)
: new List<base_device>();
var devices = await _deviceService.GetDevicesByGatewayNodeAsync(node.NodeId);
return Ok(new { nodeId = node.NodeId, devices = devices.Select(d => new {
d.DeviceId, d.DeviceName, d.AdapterCode, d.SourceId,
@@ -125,12 +145,10 @@ namespace Warehouse.Controllers
if (node == null) return StatusCode(401, new { message = "认证失败" });
// 获取告警服务
var alarmSvcType = _service.GetType().Assembly.GetType("Warehouse.Services.iot_alarmService");
var alarmSvc = alarmSvcType?.GetProperty("Instance")?.GetValue(null) as Iiot_alarmService;
var alarmSvc = _iot_alarmService;
// 批量查询 DeviceSourceId → DeviceId 映射
var deviceSvcType = _service.GetType().Assembly.GetType("Warehouse.Services.base_deviceService");
var deviceSvc = deviceSvcType?.GetProperty("Instance")?.GetValue(null) as Ibase_deviceService;
var deviceSvc = _deviceService;
int added = 0;
foreach (var a in req.Alarms)