using Dlhis.Basic.Api;
using Dlhis.Jip.Api.Requests;
using Dlhis.Sys.Api;
using Hangfire;
using Kurisu.AspNetCore.Cache;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Dlhis.ScheduledTask.TaskAssignment.Controllers;
///
/// 调度任务
///
[AllowAnonymous]
[Route("api/[controller]")]
[ApiController]
public class HangfireController : ControllerBase
{
private readonly RedisCache _redisCache;
private readonly ITenantApi _tenantApi;
public HangfireController(RedisCache redisCache, ITenantApi tenantApi)
{
_redisCache = redisCache;
_tenantApi = tenantApi;
}
///
/// 手动获取人员
///
///
///
[HttpPost("sap/person/no")]
public async Task PersonManuallySync(SapNoRequest request)
{
var jobKey = $"hangfire:background:person:{request.Code}";
await using var handler = await _redisCache.LockAsync(jobKey);
if (handler.Acquired)
{
BackgroundJob.Enqueue(x => x.SyncGainfoByUserCodeAsync(request.Code));
}
}
///
/// 手动启动人事范围同步
///
///
///
[HttpPost("sap/werk/no")]
public async Task WerkManuallySync(SapNoRequest request)
{
var jobKey = $"hangfire:background:werk:{request.Code}";
await using var handler = await _redisCache.LockAsync(jobKey);
if (handler.Acquired)
{
BackgroundJob.Enqueue(x => x.SyncGainfoByWerkAsync(request.Code));
}
}
[AllowAnonymous]
[HttpPost("test")]
public async Task