Files
jinko.yikatong/Src/Dlhis.ScheduledTask/Jobs/SyncOrganizationJob.cs

59 lines
1.7 KiB
C#

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;
/// <summary>
/// SAP组织架构数据同步
/// </summary>
[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<SapOrganizationItem> modifiedOrgList)
{
foreach (SapOrganizationItem item in modifiedOrgList)
{
var department = await DbContext.Queryable<DepartmentEntity>().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);
}
}
}
}