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); } } } }