using Dlhis.Basic.Api; using Dlhis.Jip.Api; using Dlhis.Jip.Api.Request; using Dlhis.Jip.Api.Requests; 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 IJinkoJipApi _jinkoJipApi; public HangfireController(RedisCache redisCache, IJinkoJipApi jinkoJipApi) { _redisCache = redisCache; _jinkoJipApi = jinkoJipApi; } /// /// 手动获取人员 /// /// /// [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)); } } [HttpPost("test")] public async Task TestAsync() { return await _jinkoJipApi.SyncMealSupplementRecordsAsync(new List() { new() { UniqueId = "Dl-Test01", Msg = "成功", Status = "SUCCESS" } }); } }