AidopKanbanModuleRefreshController.cs 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using Admin.NET.Plugin.AiDOP.DataPlatform.MdpRebuild;
  2. using Admin.NET.Plugin.AiDOP.SmartOps;
  3. namespace Admin.NET.Plugin.AiDOP.Controllers;
  4. /// <summary>S2–S7 异步重算与 S2–S7/S9 轻量快照刷新。独立控制器,避免继承 AidopKanbanController 的 AllowAnonymous。</summary>
  5. [ApiController]
  6. [Route("api/AidopKanban")]
  7. [Authorize]
  8. [NonUnify]
  9. public class AidopKanbanModuleRefreshController : ControllerBase
  10. {
  11. private readonly S1KpiTargetSnapshotRefreshService _snapshot;
  12. private readonly ModuleRebuildService _rebuild;
  13. private readonly UserManager _userManager;
  14. public AidopKanbanModuleRefreshController(
  15. S1KpiTargetSnapshotRefreshService snapshot,
  16. ModuleRebuildService rebuild,
  17. UserManager userManager)
  18. {
  19. _snapshot = snapshot;
  20. _rebuild = rebuild;
  21. _userManager = userManager;
  22. }
  23. [HttpPost("{moduleCode}/target-snapshot/refresh")]
  24. public async Task<IActionResult> RefreshTargetSnapshot(string moduleCode, [FromQuery] long factoryId = 1, CancellationToken ct = default)
  25. {
  26. var mc = MdpRebuildScope.NormalizeModule(moduleCode);
  27. if (string.Equals(mc, "S1", StringComparison.OrdinalIgnoreCase))
  28. return NotFound();
  29. if (!MdpRebuildScope.SnapshotModules.Contains(mc))
  30. return NotFound();
  31. var tenantId = AidopTenantScope.ResolveOrThrow(_userManager);
  32. if (factoryId <= 0) factoryId = 1;
  33. var result = await _snapshot.RefreshAsync(mc, tenantId, factoryId, ct);
  34. return Ok(result);
  35. }
  36. [HttpPost("{moduleCode}/rebuild-jobs")]
  37. public async Task<IActionResult> EnqueueRebuild(string moduleCode, [FromQuery] long factoryId = 1, CancellationToken ct = default)
  38. {
  39. var mc = MdpRebuildScope.NormalizeModule(moduleCode);
  40. if (string.Equals(mc, "S1", StringComparison.OrdinalIgnoreCase) || string.Equals(mc, "S9", StringComparison.OrdinalIgnoreCase))
  41. return NotFound();
  42. if (!MdpRebuildScope.RebuildModules.Contains(mc))
  43. return NotFound();
  44. var tenantId = AidopTenantScope.ResolveOrThrow(_userManager);
  45. if (factoryId <= 0) factoryId = 1;
  46. var (status, body) = await _rebuild.EnqueueAsync(mc, tenantId, factoryId, _userManager.UserId, "MANUAL", ct);
  47. return StatusCode(status, body);
  48. }
  49. [HttpGet("{moduleCode}/rebuild-jobs/latest")]
  50. public async Task<IActionResult> LatestRebuild(string moduleCode, [FromQuery] long factoryId = 1, CancellationToken ct = default)
  51. {
  52. var mc = MdpRebuildScope.NormalizeModule(moduleCode);
  53. if (string.Equals(mc, "S1", StringComparison.OrdinalIgnoreCase) || !MdpRebuildScope.RebuildModules.Contains(mc))
  54. return NotFound();
  55. var tenantId = AidopTenantScope.ResolveOrThrow(_userManager);
  56. if (factoryId <= 0) factoryId = 1;
  57. var dto = await _rebuild.LatestAsync(mc, tenantId, factoryId, ct);
  58. return Ok(dto);
  59. }
  60. [HttpGet("{moduleCode}/rebuild-jobs/{jobId:long}")]
  61. public async Task<IActionResult> GetRebuild(string moduleCode, long jobId, [FromQuery] long factoryId = 1, CancellationToken ct = default)
  62. {
  63. var mc = MdpRebuildScope.NormalizeModule(moduleCode);
  64. if (string.Equals(mc, "S1", StringComparison.OrdinalIgnoreCase) || !MdpRebuildScope.RebuildModules.Contains(mc))
  65. return NotFound();
  66. var tenantId = AidopTenantScope.ResolveOrThrow(_userManager);
  67. if (factoryId <= 0) factoryId = 1;
  68. return Ok(await _rebuild.GetAsync(mc, jobId, tenantId, factoryId, ct));
  69. }
  70. }