using Dlhis.Entity.Basic.Entity; using Dlhis.ScheduledTask.Common.Dto; using Dlhis.ScheduledTask.Common.Services; using Hangfire; using Kurisu.Scheduled; using Kurisu.Scheduled.Attributes; namespace Dlhis.ScheduledTask.Jobs; /// /// SAP组织架构数据同步 /// [RecurringJob(nameof(SyncOrganizationJob), "0 0 0 * * ?", Name = "SAP组织架构数据同步")] public class SyncOrganizationJob : BaseJob { private readonly IJinkoSapService _jinkoSapService; public SyncOrganizationJob(IServiceProvider serviceProvider, IJinkoSapService jinkoSapService) : base(serviceProvider) { _jinkoSapService = jinkoSapService; } public override async Task RunAsync(IServiceProvider serviceProvider) { var orgResult = await _jinkoSapService.GetSapOrganizationsAsync(); if (orgResult.Org != null && orgResult.Org.Items.Count > 0) { await SaveOrg(orgResult.Org.Items); } } private async Task SaveOrg(List modifiedOrgList) { foreach (SapOrganizationItem item in modifiedOrgList) { var department = await DbContext.Queryable().Where(x => x.No == item.OBJID).FirstAsync(); if (department == null) { department = new DepartmentEntity { No = item.OBJID, Name = item.STEXT, PNo = item.SOBID, }; await DbContext.InsertAsync(department); } else { department.PNo = item.SOBID; department.Name = item.STEXT; await DbContext.UpdateAsync(department); } } } }