AdoS8DashboardController.cs 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using Admin.NET.Plugin.AiDOP.Dto.S8;
  2. using Admin.NET.Plugin.AiDOP.Service.S8;
  3. namespace Admin.NET.Plugin.AiDOP.Controllers.S8;
  4. [ApiController]
  5. [Route("api/aidop/s8/dashboard")]
  6. [NonUnify]
  7. public class AdoS8DashboardController : ControllerBase
  8. {
  9. private readonly S8DashboardService _svc;
  10. private readonly S8DashboardCellDataService _cellSvc;
  11. private readonly S8DashboardCellConfigService _cfgSvc;
  12. public AdoS8DashboardController(
  13. S8DashboardService svc,
  14. S8DashboardCellDataService cellSvc,
  15. S8DashboardCellConfigService cfgSvc)
  16. {
  17. _svc = svc;
  18. _cellSvc = cellSvc;
  19. _cfgSvc = cfgSvc;
  20. }
  21. [HttpGet("overview")]
  22. public async Task<IActionResult> OverviewAsync(
  23. [FromQuery] long tenantId = 1,
  24. [FromQuery] long factoryId = 1,
  25. [FromQuery] DateTime? beginTime = null,
  26. [FromQuery] DateTime? endTime = null,
  27. [FromQuery] string? severity = null,
  28. [FromQuery] string? period = null) =>
  29. Ok(await _svc.GetOverviewAsync(tenantId, factoryId, beginTime, endTime, severity, period));
  30. [HttpGet("trends")]
  31. public async Task<IActionResult> TrendsAsync([FromQuery] long tenantId = 1, [FromQuery] long factoryId = 1,
  32. [FromQuery] int days = 14, [FromQuery] string? period = null) =>
  33. Ok(await _svc.GetTrendsAsync(tenantId, factoryId, days, period));
  34. [HttpGet("distributions")]
  35. public async Task<IActionResult> DistributionsAsync([FromQuery] long tenantId = 1, [FromQuery] long factoryId = 1, [FromQuery] string? period = null) =>
  36. Ok(await _svc.GetDistributionsAsync(tenantId, factoryId, period));
  37. [HttpGet("quick-exceptions")]
  38. public async Task<IActionResult> QuickExceptionsAsync([FromQuery] long tenantId = 1, [FromQuery] long factoryId = 1,
  39. [FromQuery] string mode = "latest") =>
  40. Ok(await _svc.GetQuickExceptionsAsync(tenantId, factoryId, mode));
  41. [HttpGet("dept-backlog")]
  42. public async Task<IActionResult> DeptBacklogAsync([FromQuery] long tenantId = 1, [FromQuery] long factoryId = 1, [FromQuery] string? period = null) =>
  43. Ok(await _svc.GetDeptBacklogAsync(tenantId, factoryId, period));
  44. [HttpGet("dim-trends")]
  45. public async Task<IActionResult> DimTrendsAsync(
  46. [FromQuery] long tenantId = 1,
  47. [FromQuery] long factoryId = 1,
  48. [FromQuery] string dim = "object",
  49. [FromQuery] int days = 14,
  50. [FromQuery] string? period = null) =>
  51. Ok(await _svc.GetDimTrendsAsync(tenantId, factoryId, dim, days, period));
  52. /// <summary>
  53. /// 按配置获取单个大屏卡片的数据。配置来源 ado_s8_dashboard_cell_config。
  54. /// </summary>
  55. [HttpGet("cell-data")]
  56. public async Task<IActionResult> CellDataAsync([FromQuery] AdoS8CellDataQueryDto q)
  57. {
  58. try { return Ok(await _cellSvc.GetAsync(q)); }
  59. catch (S8BizException ex) { return BadRequest(new { message = ex.Message }); }
  60. }
  61. /// <summary>
  62. /// 按页面编码获取大屏页面结构配置(G-09 一期:四屏启动渲染入口)。
  63. /// 只返回 enabled=true 的 cell,按 layout_area + sort_no 排序。
  64. /// 不替代 cell-data,不触发 ado_s8_exception 查询。
  65. /// </summary>
  66. [HttpGet("page-config")]
  67. public async Task<IActionResult> PageConfigAsync([FromQuery] AdoS8PageConfigQueryDto q)
  68. {
  69. try { return Ok(await _cfgSvc.GetPageConfigAsync(q)); }
  70. catch (S8BizException ex) { return BadRequest(new { message = ex.Message }); }
  71. }
  72. }