AidopKanbanController.S1Refresh.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Admin.NET.Plugin.AiDOP.DataPlatform.S1Refresh;
  2. using Admin.NET.Plugin.AiDOP.SmartOps;
  3. namespace Admin.NET.Plugin.AiDOP.Controllers;
  4. /// <summary>S1 看板轻量刷新与异步重算。独立控制器以避免继承 AidopKanbanController 的 AllowAnonymous。</summary>
  5. [ApiController]
  6. [Route("api/AidopKanban")]
  7. [Authorize]
  8. [NonUnify]
  9. public class AidopKanbanS1RefreshController : ControllerBase
  10. {
  11. private readonly S1KpiTargetSnapshotRefreshService _snapshot;
  12. private readonly S1DashboardRebuildService _rebuild;
  13. private readonly UserManager _userManager;
  14. public AidopKanbanS1RefreshController(
  15. S1KpiTargetSnapshotRefreshService snapshot,
  16. S1DashboardRebuildService rebuild,
  17. UserManager userManager)
  18. {
  19. _snapshot = snapshot;
  20. _rebuild = rebuild;
  21. _userManager = userManager;
  22. }
  23. [HttpPost("s1/target-snapshot/refresh")]
  24. public async Task<IActionResult> RefreshTargetSnapshot([FromQuery] long factoryId = 1, CancellationToken ct = default)
  25. {
  26. var tenantId = AidopTenantScope.ResolveOrThrow(_userManager);
  27. if (factoryId <= 0) factoryId = 1;
  28. var result = await _snapshot.RefreshAsync(tenantId, factoryId, ct);
  29. return Ok(result);
  30. }
  31. [HttpPost("s1/rebuild-jobs")]
  32. public async Task<IActionResult> EnqueueRebuild([FromQuery] long factoryId = 1, CancellationToken ct = default)
  33. {
  34. var tenantId = AidopTenantScope.ResolveOrThrow(_userManager);
  35. if (factoryId <= 0) factoryId = 1;
  36. var (status, body) = await _rebuild.EnqueueAsync(tenantId, factoryId, _userManager.UserId, "MANUAL", ct);
  37. return StatusCode(status, body);
  38. }
  39. [HttpGet("s1/rebuild-jobs/latest")]
  40. public async Task<IActionResult> LatestRebuild([FromQuery] long factoryId = 1, CancellationToken ct = default)
  41. {
  42. var tenantId = AidopTenantScope.ResolveOrThrow(_userManager);
  43. if (factoryId <= 0) factoryId = 1;
  44. var dto = await _rebuild.LatestAsync(tenantId, factoryId, ct);
  45. return Ok(dto);
  46. }
  47. [HttpGet("s1/rebuild-jobs/{jobId:long}")]
  48. public async Task<IActionResult> GetRebuild(long jobId, [FromQuery] long factoryId = 1, CancellationToken ct = default)
  49. {
  50. var tenantId = AidopTenantScope.ResolveOrThrow(_userManager);
  51. if (factoryId <= 0) factoryId = 1;
  52. return Ok(await _rebuild.GetAsync(jobId, tenantId, factoryId, ct));
  53. }
  54. }