From 58b90947d2ccf8529d3e372e054c6f8f580e78c8 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 21 Feb 2024 15:55:55 +0800 Subject: [PATCH 1/7] =?UTF-8?q?fix=20=E5=AD=97=E6=AE=B5=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapOrganizationItem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapOrganizationItem.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapOrganizationItem.cs index 8a4691e9..f1b239c5 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapOrganizationItem.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapOrganizationItem.cs @@ -15,7 +15,7 @@ public class SapOrganizationItem /// /// 语言 /// - public int LANGU { get; set; } + public string LANGU { get; set; } /// /// 部门id From 7fb913764e5f576f469d177217c2ac3ccb94773b Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 21 Feb 2024 16:25:37 +0800 Subject: [PATCH 2/7] =?UTF-8?q?fix=20=E6=9C=BA=E6=9E=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SyncSapInfo/Job/SyncOrganizationJob.cs | 8 +++----- .../SyncSapInfo/Services/Implements/JinkoSapService.cs | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOrganizationJob.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOrganizationJob.cs index 593df3bd..fb5a652f 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOrganizationJob.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOrganizationJob.cs @@ -28,11 +28,11 @@ public class SyncOrganizationJob if (orgResult.Org != null && orgResult.Org.Items.Count > 0) { - var modifiedOrgList = GetModifiedOrg(orgResult.Org?.Items); - await SaveOrg(modifiedOrgList); + //var modifiedOrgList = GetModifiedOrg(orgResult.Org.Items); + await SaveOrg(orgResult.Org.Items); } - var syncPositionJob = BackgroundJob.ContinueJobWith("SyncOrganizationJob", job => job.SyncPositionInfo(), JobContinuationOptions.OnlyOnSucceededState); + var syncPositionJob = BackgroundJob.Enqueue(job => job.SyncPositionInfo()); BackgroundJob.ContinueJobWith(syncPositionJob, job => job.SyncPersonInfo(), JobContinuationOptions.OnlyOnSucceededState); } @@ -49,8 +49,6 @@ public class SyncOrganizationJob private async Task SaveOrg(List modifiedOrgList) { - if (modifiedOrgList == null || modifiedOrgList.Count == 0) return; - foreach (SapOrganizationItem item in modifiedOrgList) { var department = await _dbContext.Queryable().Where(x => x.No == item.OBJID).FirstAsync(); diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs index e1abe780..3fc2872d 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs @@ -23,9 +23,9 @@ public class JinkoSapService : IJinkoSapService private HttpClient GetHttpClient() { var httpClient = _httpClientFactory.CreateClient("jinko:sap"); - //http://sappidap.jinkosolar.cn:51000 httpClient.BaseAddress = new Uri("http://sappipap01.jinkosolar.cn:50100"); httpClient.Timeout = TimeSpan.FromMinutes(10); + var credentials = string.Format("{0}:{1}", "EHS_USER", "y3R1hd2h*RICAC"); var headerValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials)); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", headerValue); From 732a477880b4b15ea01e820525692c3153427c04 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 21 Feb 2024 16:44:25 +0800 Subject: [PATCH 3/7] =?UTF-8?q?fix=20=E5=A4=84=E7=90=86=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E6=A0=91=E4=BB=8E00001000=E5=BC=80=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Organization/Services/Implements/DepartmentService.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs b/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs index 779d7de9..77f42f9a 100644 --- a/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs +++ b/Src/Dlhis.Basic/Organization/Services/Implements/DepartmentService.cs @@ -21,7 +21,8 @@ public class DepartmentService : IDepartmentService public async Task> GetTreeAsync() { var departments = await _dbContext.Queryable().ToListAsync(); - var tops = departments.Where(x => x.PNo.IsEmpty()).Adapt>(); + //00001000 一定是这个开头的 + var tops = departments.Where(x => x.PNo == "00001000").Adapt>(); tops.ForEach(x => { @@ -35,7 +36,7 @@ public class DepartmentService : IDepartmentService { var departments = await _dbContext .Queryable() - .WhereIF(!request.Search.IsEmpty(),x => x.Name.Contains(request.Search) || x.No.Contains(request.Search)).ToListAsync(); + .WhereIF(!request.Search.IsEmpty(), x => x.Name.Contains(request.Search) || x.No.Contains(request.Search)).ToListAsync(); var tops = departments.Where(x => x.PNo.IsEmpty()).Adapt>(); From 64af61754aee861237246a35283c0b7b359014fe Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 21 Feb 2024 17:03:04 +0800 Subject: [PATCH 4/7] =?UTF-8?q?fix=20postition=20LANGU=20=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapPositionItem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapPositionItem.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapPositionItem.cs index a22ed596..1d14e766 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapPositionItem.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapPositionItem.cs @@ -15,7 +15,7 @@ /// /// 语言代码 /// - public int LANGU { get; set; } + public string LANGU { get; set; } /// /// 岗位编码 From df607a6c4f7ddad2f06f789641d2e9f1daedc687 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 21 Feb 2024 17:24:09 +0800 Subject: [PATCH 5/7] =?UTF-8?q?fix=20=E5=B2=97=E4=BD=8D=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SyncSapInfo/Dto/SapPositionItem.cs | 2 +- .../SyncSapInfo/Job/SyncPositionJob.cs | 24 ++++--------------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapPositionItem.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapPositionItem.cs index 1d14e766..7cb0d9ef 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapPositionItem.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Dto/SapPositionItem.cs @@ -25,7 +25,7 @@ /// /// 岗位名称 /// - public string ZJOBANME { get; set; } + public string ZJOBNAME { get; set; } /// /// diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPositionJob.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPositionJob.cs index 1dbe1187..6be2f7f9 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPositionJob.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPositionJob.cs @@ -1,9 +1,7 @@ using Dlhis.Entity.Basic.Entity; -using Dlhis.ScheduledTask.SyncSapInfo.Comparers; using Dlhis.ScheduledTask.SyncSapInfo.Dto; using Dlhis.ScheduledTask.SyncSapInfo.Services; using Kurisu.SqlSugar.Services; -using Mapster; namespace Dlhis.ScheduledTask.SyncSapInfo.Job; @@ -12,7 +10,6 @@ namespace Dlhis.ScheduledTask.SyncSapInfo.Job; /// public class SyncPositionJob { - private List lastUpdatedPositionList = new List(); private readonly IDbContext _dbContext; private readonly IJinkoSapService _jinkoSapService; @@ -28,25 +25,12 @@ public class SyncPositionJob if (positionResult.Position != null && positionResult.Position.Items.Count > 0) { - var modifiedOrgList = GetModifiedPosition(positionResult.Position.Items); - await SaveOrg(modifiedOrgList); + await SaveOrg(positionResult.Position.Items); } } - private List GetModifiedPosition(List spaList) - { - if (lastUpdatedPositionList.Count <= 0) - { - return spaList; - } - var needRemove = spaList.Intersect(lastUpdatedPositionList, new SapPositionComparer()); - return spaList.Except(needRemove, new SapPositionComparer()).ToList(); - } - private async Task SaveOrg(List modifiedPostList) { - if (modifiedPostList == null || modifiedPostList.Count == 0) return; - var addItems = new List(); var updateItems = new List(); @@ -57,8 +41,8 @@ public class SyncPositionJob { position = new PositionEntity { - No = item.ZJOBANME, - Name = item.ZJOBANME, + No = item.ZDEPID, + Name = item.ZJOBNAME, DepartmentNo = item.ZDEPID, Grade = item.ZZWID }; @@ -67,7 +51,7 @@ public class SyncPositionJob } else { - position.Name = item.ZJOBANME; + position.Name = item.ZJOBNAME; position.DepartmentNo = item.ZDEPID; position.Grade = item.ZZWID; From 9f16e24b9d6295749ee2587c5096bbcad35bb5af Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 21 Feb 2024 17:38:35 +0800 Subject: [PATCH 6/7] =?UTF-8?q?fix=20=E4=BA=BA=E5=91=98=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Comparers/SapPositionComparer.cs | 4 +- .../SyncSapInfo/Job/SyncPersonJob.cs | 223 +++++++----------- 2 files changed, 83 insertions(+), 144 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Comparers/SapPositionComparer.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Comparers/SapPositionComparer.cs index e52b1e77..2f6a04b2 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Comparers/SapPositionComparer.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Comparers/SapPositionComparer.cs @@ -17,7 +17,7 @@ public class SapPositionComparer : IEqualityComparer && x.ENDDA == y.ENDDA && x.LANGU == y.LANGU && x.ZJOBID == y.ZJOBID - && x.ZJOBANME == y.ZJOBANME + && x.ZJOBNAME == y.ZJOBNAME && x.ZZWID == y.ZZWID && x.ZDEPID == y.ZDEPID; } @@ -26,7 +26,7 @@ public class SapPositionComparer : IEqualityComparer { return obj.BEGDA.SafeGetHashCode() ^ obj.ENDDA.SafeGetHashCode() ^ obj.LANGU.SafeGetHashCode() ^ obj.ZJOBID.SafeGetHashCode() - ^ obj.ZJOBANME.SafeGetHashCode() ^ obj.ZZWID.SafeGetHashCode() + ^ obj.ZJOBNAME.SafeGetHashCode() ^ obj.ZZWID.SafeGetHashCode() ^ obj.ZDEPID.SafeGetHashCode(); } } diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs index 0c0819d5..27c9e6d2 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs @@ -14,8 +14,9 @@ public class SyncPersonJob private readonly IDbContext _dbContext; private readonly ILogger _logger; private readonly IJinkoSapService _jinkoSapService; + private List _positions; - public SyncPersonJob(IDbContext dbContext, ILogger logger, IJinkoSapService jinkoSapService) + public SyncPersonJob(IDbContext dbContext, ILogger logger, IJinkoSapService jinkoSapService) { _dbContext = dbContext; _logger = logger; @@ -29,6 +30,7 @@ public class SyncPersonJob if (persons.Count > 0) { + _positions = await _dbContext.Queryable().ToListAsync(); var modifiedPersons = await GetModifiedPersonAsync(persons.OrderByDescending(x => x.ZSTATUS).ThenBy(x => x.ZRZRQ).ToList()); if (modifiedPersons.Count > 0) { @@ -39,173 +41,110 @@ public class SyncPersonJob private async Task SavePerson(List persons) { - + var failure = 0; var workCodes = persons.Select(x => x.ZWORKCODE).ToList(); - var index = 1; - var count = 4000; - var failure = 0; - var total = persons.Count; - - var searchCodes = workCodes.Skip((index - 1) * count).Take(count).ToList(); - while (searchCodes.Count > 0) + foreach (var searchCodes in workCodes.Chunk(4000)) { - var existsWorkCodes = _dbContext.Queryable() + var existsWorkCodes = await _dbContext.Queryable() .Where(x => searchCodes.Contains(x.Code)) .Select(x => x.Code) - .ToList(); + .ToListAsync(); var originUpdates = persons.Where(x => existsWorkCodes.Contains(x.ZWORKCODE)).ToList(); var originInserts = persons.Where(x => searchCodes.Contains(x.ZWORKCODE)).Except(originUpdates, new SapPersonComparer()).ToList(); int i = 0; - if (originUpdates.Count + originInserts.Count <= count) + var currentTotal = originUpdates.Count + originInserts.Count; + + var updates = ToGainfoSap(originUpdates); + var inserts = ToGainfoSap(originInserts); + + foreach (var item in inserts) { - var currentTotal = originUpdates.Count + originInserts.Count; - - var updates = ToGainfoSap(originUpdates); - var inserts = ToGainfoSap(originInserts); - - foreach (var item in inserts) + i++; + try { - i++; - try - { - await SavePerson(item); - //conn.Execute(SqlGeneration.InsertSql, item); - //log.Debug($"执行新增{i}/{currentTotal} name:{item.gname},ename:{item.ename}"); - } - catch (Exception ex) - { - failure++; - //log.Error($"执行新增{i}/{currentTotal} name:{item.gname},ename:{item.ename}失败 \r\n{ex.Message}"); - } - + await SavePerson(item); + //conn.Execute(SqlGeneration.InsertSql, item); + //log.Debug($"执行新增{i}/{currentTotal} name:{item.gname},ename:{item.ename}"); + } + catch (Exception ex) + { + failure++; + //log.Error($"执行新增{i}/{currentTotal} name:{item.gname},ename:{item.ename}失败 \r\n{ex.Message}"); } - foreach (var item in updates) - { - i++; - try - { - await UpdatePerson(item); - //conn.Execute(SqlGeneration.UpdateSql, item); - //log.Debug($"执行更新{i}/{currentTotal} name:{item.gname},ename:{item.ename}"); - } - catch (Exception ex) - { - failure++; - //log.Error($"执行更新{i}/{currentTotal} name:{item.gname},ename:{item.ename}失败 \r\n{ex.Message}"); - } - } } - index++; - persons = persons.Except(originUpdates).Except(originUpdates).ToList(); - searchCodes = workCodes.Skip((index - 1) * count).Take(count).ToList(); + foreach (var item in updates) + { + i++; + try + { + await UpdatePerson(item); + //conn.Execute(SqlGeneration.UpdateSql, item); + //log.Debug($"执行更新{i}/{currentTotal} name:{item.gname},ename:{item.ename}"); + } + catch (Exception ex) + { + failure++; + //log.Error($"执行更新{i}/{currentTotal} name:{item.gname},ename:{item.ename}失败 \r\n{ex.Message}"); + } + } } - return failure; + return 0; } private async Task SavePerson(GainfoSapEntity item) { - var gainfo = await _dbContext.Queryable().Where(x => x.IdNo == item.idno).FirstAsync(); - if (gainfo != null) + var info = new GainfoEntity { - gainfo.No = item.guestno; - gainfo.SapNo = item.ano; - gainfo.Type = item.@class; - gainfo.Name = item.gname; - gainfo.Code = item.ename; - gainfo.CountryNo = item.country; - gainfo.IdClass = item.idcls; - gainfo.Native = item.native; - gainfo.Gender = item.sex == "F" ? GenderEnumType.Female : GenderEnumType.Male; - gainfo.Birthday = (DateTime)item.birthday; - gainfo.Address = item.address; - gainfo.DepartmentNo = item.appellation; - gainfo.Nation = item.nation; - gainfo.Phone = item.phone; - gainfo.Degree = item.email; - gainfo.Position = item.web; - gainfo.Remark = item.remark; - gainfo.Werks = item.WERKS; - gainfo.Employed = item.isowner; //int.Parse(person.ZSTATUS) < 4 ? "T" : "F", 是否离职 - await _dbContext.UpdateAsync(gainfo); - } - else - { - var info = new GainfoEntity - { - No = item.guestno, - SapNo = item.ano, - Type = item.@class, - Name = item.gname, - Code = item.ename, - CountryNo = item.country, - IdClass = item.idcls, - IdNo = item.idno, - Native = item.native, - Gender = item.sex == "F" ? GenderEnumType.Female : GenderEnumType.Male, - Birthday = (DateTime)item.birthday, - Address = item.address, - //Marital 已婚未婚 - //Occuption = item.occuption, - DepartmentNo = item.appellation, - Nation = item.nation, - Phone = item.phone, - Degree = item.email, - Position = item.web, - //CarNo - Remark = item.remark, - Werks = item.WERKS, - Employed = item.isowner, - }; - await _dbContext.InsertAsync(info); - } + No = item.guestno, + SapNo = item.ano, + Type = item.@class, + Name = item.gname, + Code = item.ename, + CountryNo = item.country, + IdClass = item.idcls, + IdNo = item.idno, + Native = item.native, + Gender = item.sex == "F" ? GenderEnumType.Female : GenderEnumType.Male, + Birthday = (DateTime)item.birthday, + Address = item.address, + //Marital 已婚未婚 + //Occuption = item.occuption, + DepartmentNo = item.appellation, + Nation = item.nation, + Phone = item.phone, + Degree = item.email, + Position = item.web, + //CarNo + Remark = item.remark, + Werks = item.WERKS, + Employed = item.isowner, + }; + await _dbContext.InsertAsync(info); } private async Task UpdatePerson(GainfoSapEntity item) { var gainfo = await _dbContext.Queryable().Where(x => x.IdNo == item.idno).FirstAsync(); - if (gainfo != null) + await _dbContext.Updateable().SetColumns(g => new GainfoEntity { - _dbContext.Updateable().SetColumns(g => new GainfoEntity - { - SapNo = item.PERNR, - Name = item.gname, - Code = item.ename, - Position = item.web, - Phone = item.phone, - DepartmentNo = item.appellation, - Employed = item.isowner, - Remark = item.remark, - Degree = item.email, - Werks = item.WERKS - }) - .Where(g => g.IdNo == item.idno - && !_dbContext.Queryable().Any(g => g.IdNo == item.idno && g.SapNo != item.PERNR && g.Employed == "T") - && !_dbContext.Queryable().Any(g => g.IdNo == item.idno && int.Parse(g.SapNo) > int.Parse(item.PERNR) && g.Employed == item.isowner)); - } - else - { - _dbContext.Updateable().SetColumns(g => new GainfoEntity - { - SapNo = item.PERNR, - Name = item.gname, - Code = item.ename, - Position = item.web, - Phone = item.phone, - DepartmentNo = item.appellation, - Employed = item.isowner, - Remark = item.remark, - Degree = item.email, - Werks = item.WERKS - }) - .Where(g => g.SapNo == item.PERNR - && !_dbContext.Queryable().Any(g => g.Code == item.ename && g.Employed == "T") - && !_dbContext.Queryable().Any(g => g.IdNo == item.idno && int.Parse(g.SapNo) > int.Parse(item.PERNR) && g.Employed == item.isowner)); - } + SapNo = item.PERNR, + Name = item.gname, + Code = item.ename, + Position = item.web, + Phone = item.phone, + DepartmentNo = item.appellation, + Employed = item.isowner, + Remark = item.remark, + Degree = item.email, + Werks = item.WERKS + }) + .Where(x => x.Code == item.ename) + .ExecuteCommandAsync(); } private async Task> GetModifiedPersonAsync(List sapList) @@ -259,7 +198,7 @@ public class SyncPersonJob GainfoSapEntity o = null; try { - var position = string.Empty; //lastUpdatedPositionList.FirstOrDefault(x => x.ZJOBID == person.PLANS); + var position = _positions.FirstOrDefault(x => x.No == person.PLANS); var rzrq = SafeParseDate(person.ZRZRQ); var lzrq = SafeParseDate(person.ZLZRQ); @@ -302,7 +241,7 @@ public class SyncPersonJob remark = rmk, native = native, sex = sex, - //web = SubString(position?.ZJOBANME, 30), todo + web = SubString(position?.Name ?? "", 30), logdate = DateTime.Now, isowner = int.Parse(person.ZSTATUS) < 4 ? "T" : "F", @class = "C", From 5c2d40d1804a2daa34e11bbc07210d5cbefb3727 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Wed, 21 Feb 2024 17:53:53 +0800 Subject: [PATCH 7/7] =?UTF-8?q?fix=20=E4=BC=98=E5=8C=96=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/Dlhis.ScheduledTask/Packs/JobPack.cs | 6 +++++- .../SyncSapInfo/Job/SyncOrganizationJob.cs | 16 +--------------- .../SyncSapInfo/Job/SyncPersonJob.cs | 2 +- .../SyncSapInfo/Job/SyncPositionJob.cs | 10 ++-------- .../Services/Implements/JinkoSapService.cs | 3 +-- 5 files changed, 10 insertions(+), 27 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/Packs/JobPack.cs b/Src/Dlhis.ScheduledTask/Packs/JobPack.cs index c297f580..49f75fff 100644 --- a/Src/Dlhis.ScheduledTask/Packs/JobPack.cs +++ b/Src/Dlhis.ScheduledTask/Packs/JobPack.cs @@ -18,11 +18,15 @@ public class JobPack : BaseAppPack TimeZone = TimeZoneInfo.Local }); - RecurringJob.AddOrUpdate("SyncServerDateTime", s => s.RunAsync(), "0 0 0/1 * * ?", new RecurringJobOptions + RecurringJob.AddOrUpdate("SyncPerson", s => s.RunAsync(), "0 0 3 * * ?", new RecurringJobOptions { TimeZone = TimeZoneInfo.Local }); + RecurringJob.AddOrUpdate("SyncServerDateTime", s => s.RunAsync(), "0 0 0/1 * * ?", new RecurringJobOptions + { + TimeZone = TimeZoneInfo.Local + }); RecurringJob.AddOrUpdate("CreateGetAttendance", s => s.RunAsync(), "0 0/1 * * * ?", new RecurringJobOptions { diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOrganizationJob.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOrganizationJob.cs index fb5a652f..66df77bc 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOrganizationJob.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncOrganizationJob.cs @@ -1,5 +1,4 @@ using Dlhis.Entity.Basic.Entity; -using Dlhis.ScheduledTask.SyncSapInfo.Comparers; using Dlhis.ScheduledTask.SyncSapInfo.Dto; using Dlhis.ScheduledTask.SyncSapInfo.Services; using Hangfire; @@ -12,7 +11,6 @@ namespace Dlhis.ScheduledTask.SyncSapInfo.Job; /// public class SyncOrganizationJob { - private List lastUpdatedOrgList = new(); private readonly IDbContext _dbContext; private readonly IJinkoSapService _jinkoSapService; @@ -28,23 +26,11 @@ public class SyncOrganizationJob if (orgResult.Org != null && orgResult.Org.Items.Count > 0) { - //var modifiedOrgList = GetModifiedOrg(orgResult.Org.Items); await SaveOrg(orgResult.Org.Items); } var syncPositionJob = BackgroundJob.Enqueue(job => job.SyncPositionInfo()); - BackgroundJob.ContinueJobWith(syncPositionJob, job => job.SyncPersonInfo(), JobContinuationOptions.OnlyOnSucceededState); - } - - private List GetModifiedOrg(List sapList) - { - if (lastUpdatedOrgList.Count <= 0) - { - return sapList; - } - - var needRemove = sapList.Intersect(lastUpdatedOrgList, new SapOrganizationComparer()); - return sapList.Except(needRemove, new SapOrganizationComparer()).ToList(); + BackgroundJob.ContinueJobWith(syncPositionJob, job => job.RunAsync(), JobContinuationOptions.OnlyOnSucceededState); } private async Task SaveOrg(List modifiedOrgList) diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs index 27c9e6d2..4bf792b5 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPersonJob.cs @@ -23,7 +23,7 @@ public class SyncPersonJob _jinkoSapService = jinkoSapService; } - public async Task SyncPersonInfo() + public async Task RunAsync() { var personResp = await _jinkoSapService.GetPersonsAsync(); var persons = personResp.Person.Items; diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPositionJob.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPositionJob.cs index 6be2f7f9..3a5e182e 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPositionJob.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Job/SyncPositionJob.cs @@ -31,9 +31,6 @@ public class SyncPositionJob private async Task SaveOrg(List modifiedPostList) { - var addItems = new List(); - var updateItems = new List(); - foreach (var item in modifiedPostList) { var position = await _dbContext.Queryable().Where(x => x.No == item.ZJOBID).FirstAsync(); @@ -47,7 +44,7 @@ public class SyncPositionJob Grade = item.ZZWID }; - addItems.Add(position); + await _dbContext.InsertAsync(position); } else { @@ -55,11 +52,8 @@ public class SyncPositionJob position.DepartmentNo = item.ZDEPID; position.Grade = item.ZZWID; - updateItems.Add(position); + await _dbContext.UpdateAsync(position); } } - - await _dbContext.InsertAsync(addItems); - await _dbContext.UpdateAsync(updateItems); } } diff --git a/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs b/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs index 3fc2872d..292b8f8e 100644 --- a/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs +++ b/Src/Dlhis.ScheduledTask/SyncSapInfo/Services/Implements/JinkoSapService.cs @@ -87,14 +87,13 @@ public class JinkoSapService : IJinkoSapService T_PERSON = Array.Empty(), T_PNO = Array.Empty(), }; - var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); + var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json"); var response = await GetHttpClient().PostAsync(apiUrl, content); response.EnsureSuccessStatusCode(); var jsonResponse = await response.Content.ReadAsStringAsync(); - var personResp = JsonConvert.DeserializeObject(jsonResponse); if (personResp?.Person?.Items?.Any() == true) {