fix 同步任务调整

This commit is contained in:
2024-03-09 12:13:11 +08:00
parent 07d77f1070
commit bbd7659320
16 changed files with 392 additions and 32 deletions

View File

@@ -7,6 +7,9 @@ using Dlhis.ScheduledTask.SyncSapInfo.Comparers;
using Dlhis.ScheduledTask.SyncSapInfo.Services;
using Kurisu.AspNetCore.Scope;
using Dlhis.Entity.Basic.Enums;
using Dlhis.Sys.Api;
using Dlhis.Sys.Api.Response;
using SqlSugar;
namespace Dlhis.ScheduledTask.SyncSapInfo.Job;
@@ -14,12 +17,15 @@ public class SyncPersonJob
{
private readonly ILogger _logger;
private readonly IJinkoSapService _jinkoSapService;
private readonly ITenantApi _tenantApi;
private List<PositionEntity> _positions;
private List<TenantResponse> _tenants;
public SyncPersonJob(ILogger<SyncPersonJob> logger, IJinkoSapService jinkoSapService)
public SyncPersonJob(ILogger<SyncPersonJob> logger, IJinkoSapService jinkoSapService, ITenantApi tenantApi)
{
_logger = logger;
_jinkoSapService = jinkoSapService;
_tenantApi = tenantApi;
}
public async Task RunAsync()
@@ -44,8 +50,11 @@ public class SyncPersonJob
}
}
private int SavePerson(List<SapPersonItem> persons)
private async Task<int> SavePerson(List<SapPersonItem> persons)
{
var tenantResult = await _tenantApi.GetTenantsInternalAsync();
_tenants = tenantResult.Data;
var failure = 0;
var workCodes = persons.Select(x => x.ZWORKCODE).ToList();
var chunks = workCodes.Chunk(4000).ToList();
@@ -67,7 +76,6 @@ public class SyncPersonJob
var existsUpdateWorkCodes = originUpdates.Select(x => x.ZWORKCODE).ToList();
var originInserts = persons.Where(x => searchCodes.Contains(x.ZWORKCODE)).Where(x => !existsUpdateWorkCodes.Contains(x.ZWORKCODE)).ToList();
int i = 0;
var currentTotal = originUpdates.Count + originInserts.Count;
@@ -137,6 +145,8 @@ public class SyncPersonJob
Position = item.web,
Remark = item.remark,
Werks = item.WERKS,
Workplace = _tenants.FirstOrDefault(x => x.Name == item.ZZ_GZDJDNM)?.Code,
Factory = _tenants.FirstOrDefault(x => x.Name == item.ZZ_GZDCQNM)?.Code,
};
if (item.isowner == "T")
@@ -149,7 +159,7 @@ public class SyncPersonJob
}
}
private void UpdatePerson(IDbContext db, GainfoSapEntity item)
{
var gainfoSap = db.Queryable<GainfoSapEntity>().Where(x => x.ename == item.ename).First();
@@ -163,7 +173,9 @@ public class SyncPersonJob
isowner = item.isowner,
remark = item.remark,
email = item.email,
WERKS = item.WERKS
WERKS = item.WERKS,
ZZ_GZDJDNM = item.ZZ_GZDJDNM,
ZZ_GZDCQNM = item.ZZ_GZDCQNM,
})
.Where(x => x.ename == item.ename)
.ExecuteCommand();
@@ -180,7 +192,9 @@ public class SyncPersonJob
DepartmentNo = item.appellation,
Remark = item.remark,
Degree = item.email,
Werks = item.WERKS
Werks = item.WERKS,
Workplace = item.ZZ_GZDJDNM,
Factory = item.ZZ_GZDCQNM
})
.Where(x => x.Code == item.ename)
.ExecuteCommand();
@@ -288,15 +302,18 @@ public class SyncPersonJob
sex = sex,
web = SubString(position?.Name ?? "", 30),
logdate = DateTime.Now,
isowner = int.Parse(person.ZSTATUS) < 4 ? "T" : "F",
isowner = int.Parse(person.ZSTATUS) < 5 ? "T" : "F",
@class = "C",
country = "CN",
country = person.ZZ_COUNNM,
log_ip = "127.0.0.1",
log_shift = "1",
log_id = "XX",
address = "",
occupation = "99",
nation = "01"
nation = "01",
ZZ_COUNNM = person.ZZ_COUNNM,
ZZ_GZDJDNM = person.ZZ_GZDJDNM,
ZZ_GZDCQNM = person.ZZ_GZDCQNM,
};
return o;