|
|
|
@ -1,10 +1,13 @@
|
|
|
|
using System;
|
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
using System.Net.Http;
|
|
|
|
|
|
|
|
using System.Text;
|
|
|
|
using System.Web.Http;
|
|
|
|
using System.Web.Http;
|
|
|
|
using CncModels.Dto;
|
|
|
|
using CncModels.Dto;
|
|
|
|
using CncModels.Dto.Dashboard;
|
|
|
|
using CncModels.Dto.Dashboard;
|
|
|
|
using CncService.Interface;
|
|
|
|
using CncService.Interface;
|
|
|
|
using CncWebApi.Infrastructure;
|
|
|
|
using CncWebApi.Infrastructure;
|
|
|
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
|
|
|
|
|
|
|
namespace CncWebApi.Controllers
|
|
|
|
namespace CncWebApi.Controllers
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -16,6 +19,7 @@ namespace CncWebApi.Controllers
|
|
|
|
public class DashboardController : ApiController
|
|
|
|
public class DashboardController : ApiController
|
|
|
|
{
|
|
|
|
{
|
|
|
|
private readonly IDashboardService _dashboardService;
|
|
|
|
private readonly IDashboardService _dashboardService;
|
|
|
|
|
|
|
|
private static readonly HttpClient _httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(10) };
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// 构造函数
|
|
|
|
/// 构造函数
|
|
|
|
@ -46,7 +50,6 @@ namespace CncWebApi.Controllers
|
|
|
|
public IHttpActionResult GetWorkshopProduction(DateTime? startDate = null, DateTime? endDate = null)
|
|
|
|
public IHttpActionResult GetWorkshopProduction(DateTime? startDate = null, DateTime? endDate = null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var result = _dashboardService.GetWorkshopProduction(startDate, endDate);
|
|
|
|
var result = _dashboardService.GetWorkshopProduction(startDate, endDate);
|
|
|
|
// Mock约定:data: { items: [...] }
|
|
|
|
|
|
|
|
return Ok(ApiResponse<object>.Success(new { items = result }));
|
|
|
|
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)
|
|
|
|
public IHttpActionResult GetMachineRank(DateTime? startDate = null, DateTime? endDate = null, int top = 10)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var result = _dashboardService.GetMachineRank(startDate, endDate, top);
|
|
|
|
var result = _dashboardService.GetMachineRank(startDate, endDate, top);
|
|
|
|
// Mock约定:data: { items: [...] }
|
|
|
|
|
|
|
|
return Ok(ApiResponse<object>.Success(new { items = result }));
|
|
|
|
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)
|
|
|
|
public IHttpActionResult GetWorkerRank(DateTime? startDate = null, DateTime? endDate = null, int top = 10)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var result = _dashboardService.GetWorkerRank(startDate, endDate, top);
|
|
|
|
var result = _dashboardService.GetWorkerRank(startDate, endDate, top);
|
|
|
|
// Mock约定:data: { items: [...] }
|
|
|
|
|
|
|
|
return Ok(ApiResponse<object>.Success(new { items = result }));
|
|
|
|
return Ok(ApiResponse<object>.Success(new { items = result }));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -109,7 +110,6 @@ namespace CncWebApi.Controllers
|
|
|
|
public IHttpActionResult GetRecentAlerts(int count = 5)
|
|
|
|
public IHttpActionResult GetRecentAlerts(int count = 5)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var result = _dashboardService.GetRecentAlerts(count);
|
|
|
|
var result = _dashboardService.GetRecentAlerts(count);
|
|
|
|
// Mock约定:data: { items: [...] }
|
|
|
|
|
|
|
|
return Ok(ApiResponse<object>.Success(new { items = result }));
|
|
|
|
return Ok(ApiResponse<object>.Success(new { items = result }));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -124,5 +124,57 @@ namespace CncWebApi.Controllers
|
|
|
|
var result = _dashboardService.GetCollectorStatus();
|
|
|
|
var result = _dashboardService.GetCollectorStatus();
|
|
|
|
return Ok(ApiResponse<object>.Success(result));
|
|
|
|
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 }));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|