using Dlhis.Basic.Api;
using Dlhis.Basic.Api.Response;
using Dlhis.Entity.Basic.Entity;
using Dlhis.ScheduledTask.Attributes;
namespace Dlhis.ScheduledTask.Jobs;
///
/// SAP岗位信息同步
///
[RecurringJob(nameof(SyncPositionJob), "0 0 0 * * ?", Name = "SAP岗位信息同步")]
public class SyncPositionJob : BaseJob
{
private readonly ISyncApi _syncApi;
public SyncPositionJob(IServiceProvider serviceProvider, ISyncApi syncApi) : base(serviceProvider)
{
_syncApi = syncApi;
}
protected override async Task RunAsync(IServiceProvider serviceProvider)
{
var positionResult = await _syncApi.GetPositionsAsync();
if (positionResult.Position != null && positionResult.Position.Items.Count > 0)
{
Logger.LogWarning("SAP岗位数量:{count}", positionResult.Position.Items.Count);
await SaveOrg(positionResult.Position.Items);
}
}
private async Task SaveOrg(List modifiedPostList)
{
foreach (var item in modifiedPostList)
{
var position = await DbContext.Queryable().Where(x => x.No == item.ZJOBID).FirstAsync();
if (position == null)
{
position = new PositionEntity
{
No = item.ZJOBID,
Name = item.ZJOBNAME,
DepartmentNo = item.ZDEPID,
Grade = item.ZZWID
};
await DbContext.InsertAsync(position);
}
else
{
position.Name = item.ZJOBNAME;
position.DepartmentNo = item.ZDEPID;
position.Grade = item.ZZWID;
await DbContext.UpdateAsync(position);
}
}
}
}