Files
jinko.yikatong/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOrganizationJob.cs
2024-02-21 17:53:53 +08:00

62 lines
1.9 KiB
C#

using Dlhis.Entity.Basic.Entity;
using Dlhis.ScheduledTask.SyncSapInfo.Dto;
using Dlhis.ScheduledTask.SyncSapInfo.Services;
using Hangfire;
using Kurisu.SqlSugar.Services;
namespace Dlhis.ScheduledTask.SyncSapInfo.Job;
/// <summary>
/// 部门同步定时任务
/// </summary>
public class SyncOrganizationJob
{
private readonly IDbContext _dbContext;
private readonly IJinkoSapService _jinkoSapService;
public SyncOrganizationJob(IDbContext dbContext, IJinkoSapService jinkoSapService)
{
_dbContext = dbContext;
_jinkoSapService = jinkoSapService;
}
public async Task SyncOrgInfo()
{
var orgResult = await _jinkoSapService.GetSapOrganizationsAsync();
if (orgResult.Org != null && orgResult.Org.Items.Count > 0)
{
await SaveOrg(orgResult.Org.Items);
}
var syncPositionJob = BackgroundJob.Enqueue<SyncPositionJob>(job => job.SyncPositionInfo());
BackgroundJob.ContinueJobWith<SyncPersonJob>(syncPositionJob, job => job.RunAsync(), JobContinuationOptions.OnlyOnSucceededState);
}
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);
}
}
}
}