This commit is contained in:
2026-05-13 13:17:59 +08:00
parent 7aa249231e
commit 559b8f4358

View File

@@ -504,6 +504,18 @@ public class GainfoUpdateService : IGainfoUpdateService
}
}
if (modifiedPersons.Count > 0)
{
var first = modifiedPersons[0];
SapPersonItem historyPerson = null;
var hasHistory = !string.IsNullOrWhiteSpace(first.ZWORKCODE) && lastMap.TryGetValue(first.ZWORKCODE, out historyPerson);
var diffMessage = hasHistory
? string.Join("; ", GetFirstDiffFields(first, historyPerson))
: "历史记录不存在";
_logger.LogWarning("SAP首条差异 ZWORKCODE:{workCode}, HasHistory:{hasHistory}, Diffs:{diffs}",
first.ZWORKCODE, hasHistory, diffMessage);
}
return modifiedPersons;
}
@@ -616,4 +628,48 @@ public class GainfoUpdateService : IGainfoUpdateService
idNo = idNo.TrimStart();
return idNo[..6];
}
private static List<string> GetFirstDiffFields(SapPersonItem current, SapPersonItem history)
{
var diffs = new List<string>();
AddDiff(diffs, "PERNR", current.PERNR, history.PERNR);
AddDiff(diffs, "WERKS", current.WERKS, history.WERKS);
AddDiff(diffs, "ORGEH", current.ORGEH, history.ORGEH);
AddDiff(diffs, "NAME", current.NAME, history.NAME);
AddDiff(diffs, "GBDAT", FormatDate(current.GBDAT), FormatDate(history.GBDAT));
AddDiff(diffs, "ZZ_SFZH", NormalizeIdNo(current.ZZ_SFZH), NormalizeIdNo(history.ZZ_SFZH));
AddDiff(diffs, "ZWORKCODE", current.ZWORKCODE, history.ZWORKCODE);
AddDiff(diffs, "ZMOBILE", Normalize(current.ZMOBILE), Normalize(history.ZMOBILE));
AddDiff(diffs, "ZSTATUS", Normalize(current.ZSTATUS), Normalize(history.ZSTATUS));
AddDiff(diffs, "KOSTL_XJ", Normalize(current.KOSTL_XJ), Normalize(history.KOSTL_XJ));
AddDiff(diffs, "NAME2", Normalize(current.NAME2), Normalize(history.NAME2));
AddDiff(diffs, "ZZ_ZD", Normalize(current.ZZ_ZD), Normalize(history.ZZ_ZD));
AddDiff(diffs, "Z_ZJ", Normalize(current.Z_ZJ), Normalize(history.Z_ZJ));
AddDiff(diffs, "ZRZRQ", FormatDate(current.ZRZRQ), FormatDate(history.ZRZRQ));
AddDiff(diffs, "ZLZRQ", FormatDate(current.ZLZRQ), FormatDate(history.ZLZRQ));
AddDiff(diffs, "PLANS", Normalize(current.PLANS), Normalize(history.PLANS));
AddDiff(diffs, "STELL_NM", Normalize(current.STELL_NM), Normalize(history.STELL_NM));
AddDiff(diffs, "MASSN", Normalize(current.MASSN), Normalize(history.MASSN));
AddDiff(diffs, "MNTXT", Normalize(current.MNTXT), Normalize(history.MNTXT));
AddDiff(diffs, "ZZ_GZDJD", Normalize(current.ZZ_GZDJD), Normalize(history.ZZ_GZDJD));
AddDiff(diffs, "ZZ_GZDCQ", Normalize(current.ZZ_GZDCQ), Normalize(history.ZZ_GZDCQ));
return diffs;
}
private static void AddDiff(List<string> diffs, string field, string current, string history)
{
if (!string.Equals(current ?? string.Empty, history ?? string.Empty, StringComparison.Ordinal))
{
diffs.Add($"{field}: [{history}] -> [{current}]");
}
}
private static string Normalize(string value) => value?.Trim() ?? string.Empty;
private static string NormalizeIdNo(string value) => value?.TrimStart() ?? string.Empty;
private static string FormatDate(DateTime? value) => value?.ToString("yyyy-MM-dd HH:mm:ss") ?? string.Empty;
private static string FormatDate(DateTime value) => value.ToString("yyyy-MM-dd HH:mm:ss");
}