添加采集服务控制API:启动、停止、刷新配置,转发到CncCollector 5800端口

main
haoliang 4 days ago
parent 28641a7ab1
commit 9a667e5a62

@ -1,10 +1,13 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
using System.Web.Http;
using CncModels.Dto;
using CncModels.Dto.Dashboard;
using CncService.Interface;
using CncWebApi.Infrastructure;
using Newtonsoft.Json;
namespace CncWebApi.Controllers
{
@ -16,6 +19,7 @@ namespace CncWebApi.Controllers
public class DashboardController : ApiController
{
private readonly IDashboardService _dashboardService;
private static readonly HttpClient _httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(10) };
/// <summary>
/// 构造函数
@ -46,7 +50,6 @@ namespace CncWebApi.Controllers
public IHttpActionResult GetWorkshopProduction(DateTime? startDate = null, DateTime? endDate = null)
{
var result = _dashboardService.GetWorkshopProduction(startDate, endDate);
// Mock约定data: { items: [...] }
return Ok(ApiResponse<object>.Success(new { items = result }));
}
@ -59,7 +62,6 @@ namespace CncWebApi.Controllers
public IHttpActionResult GetMachineRank(DateTime? startDate = null, DateTime? endDate = null, int top = 10)
{
var result = _dashboardService.GetMachineRank(startDate, endDate, top);
// Mock约定data: { items: [...] }
return Ok(ApiResponse<object>.Success(new { items = result }));
}
@ -72,7 +74,6 @@ namespace CncWebApi.Controllers
public IHttpActionResult GetWorkerRank(DateTime? startDate = null, DateTime? endDate = null, int top = 10)
{
var result = _dashboardService.GetWorkerRank(startDate, endDate, top);
// Mock约定data: { items: [...] }
return Ok(ApiResponse<object>.Success(new { items = result }));
}
@ -109,7 +110,6 @@ namespace CncWebApi.Controllers
public IHttpActionResult GetRecentAlerts(int count = 5)
{
var result = _dashboardService.GetRecentAlerts(count);
// Mock约定data: { items: [...] }
return Ok(ApiResponse<object>.Success(new { items = result }));
}
@ -124,5 +124,57 @@ namespace CncWebApi.Controllers
var result = _dashboardService.GetCollectorStatus();
return Ok(ApiResponse<object>.Success(result));
}
/// <summary>
/// 启动采集服务转发到CncCollector的5800端口
/// POST /api/admin/collector/start
/// </summary>
[HttpPost]
[Route("~/api/admin/collector/start")]
public IHttpActionResult StartCollector()
{
return ForwardToCollector("/api/collector/start");
}
/// <summary>
/// 停止采集服务
/// POST /api/admin/collector/stop
/// </summary>
[HttpPost]
[Route("~/api/admin/collector/stop")]
public IHttpActionResult StopCollector()
{
return ForwardToCollector("/api/collector/stop");
}
/// <summary>
/// 刷新采集服务配置
/// POST /api/admin/collector/refresh
/// </summary>
[HttpPost]
[Route("~/api/admin/collector/refresh")]
public IHttpActionResult RefreshCollectorConfig()
{
return ForwardToCollector("/api/collector/refresh");
}
/// <summary>
/// 转发请求到采集服务
/// </summary>
private IHttpActionResult ForwardToCollector(string path)
{
try
{
var request = new HttpRequestMessage(HttpMethod.Post, $"http://localhost:5800{path}");
request.Headers.Add("X-Api-Key", "collector_api_key_2026");
var response = _httpClient.SendAsync(request).Result;
var body = response.Content.ReadAsStringAsync().Result;
return Ok(ApiResponse<object>.Success(new { forwarded = true, collectorResponse = JsonConvert.DeserializeObject(body) }));
}
catch (Exception ex)
{
return Ok(ApiResponse<object>.Success(new { forwarded = false, error = ex.Message }));
}
}
}
}

Loading…
Cancel
Save