fix: .
This commit is contained in:
@@ -114,39 +114,43 @@ public class GainfoUpdateService : IGainfoUpdateService
|
||||
|
||||
private async Task SavePersonAsync(List<SapPersonItem> persons)
|
||||
{
|
||||
var validPersons = persons.Where(x => !string.IsNullOrWhiteSpace(x.ZWORKCODE)).ToList();
|
||||
if (validPersons.Count <= 0)
|
||||
var thirdPartPersons = persons.Where(x => !string.IsNullOrWhiteSpace(x.ZWORKCODE)).ToList();
|
||||
if (thirdPartPersons.Count <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var workCodes = validPersons.Select(x => x.ZWORKCODE).Distinct().ToList();
|
||||
var workCodes = thirdPartPersons.Select(x => x.ZWORKCODE).Distinct().ToList();
|
||||
var chunks = workCodes.Chunk(4000).ToList();
|
||||
var comparer = new SapPersonComparer();
|
||||
|
||||
foreach (var searchCodes in chunks)
|
||||
{
|
||||
_logger.LogWarning("SAP分批处理Chunk数量:{count}", searchCodes.Length);
|
||||
var chunkPersons = validPersons.Where(x => searchCodes.Contains(x.ZWORKCODE)).ToList();
|
||||
var currentPersons = GetCurrentPersons(chunkPersons);
|
||||
var chunkThirdPartPersons = thirdPartPersons.Where(x => searchCodes.Contains(x.ZWORKCODE)).ToList();
|
||||
var currentPersons = GetCurrentPersons(chunkThirdPartPersons);
|
||||
|
||||
var histories = await _dbContext.Queryable<GainfoSapEntity>()
|
||||
.Where(x => searchCodes.Contains(x.ename))
|
||||
.ToListAsync();
|
||||
|
||||
var historyPersons = histories.Select(ToSapPersonItem).ToList();
|
||||
var latestHistoryPersons = histories
|
||||
.OrderByDescending(x => x.logdate)
|
||||
.GroupBy(x => x.ename)
|
||||
.ToDictionary(x => x.Key, x => ToSapPersonItem(x.First()));
|
||||
|
||||
foreach (var person in chunkPersons)
|
||||
foreach (var person in chunkThirdPartPersons)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (historyPersons.Any(x => comparer.Equals(person, x)))
|
||||
if (latestHistoryPersons.TryGetValue(person.ZWORKCODE, out var latestHistory) && comparer.Equals(person, latestHistory))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var item = ToGainfoSap(person);
|
||||
await InsertGainfoSapHistoryAsync(item);
|
||||
historyPersons.Add(ToSapPersonItem(item));
|
||||
latestHistoryPersons[person.ZWORKCODE] = ToSapPersonItem(item);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -535,7 +539,6 @@ public class GainfoUpdateService : IGainfoUpdateService
|
||||
.ToListAsync();
|
||||
var latestItems = items
|
||||
.OrderByDescending(x => x.logdate)
|
||||
.ThenByDescending(x => x.id)
|
||||
.GroupBy(x => x.ename)
|
||||
.Select(x => x.First())
|
||||
.ToList();
|
||||
|
||||
Reference in New Issue
Block a user