From fb76f5737a238f2ed06c6ca5f5ba89fce439c20f Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Fri, 30 May 2025 11:55:23 +0700 Subject: [PATCH] fix cronjob --- .../Reports/InsigniaReportRepository.cs | 51 +++++++++++++++++-- BMA.EHR.Insignia/Program.cs | 3 +- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs b/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs index 68b1451f..5099b375 100644 --- a/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs +++ b/BMA.EHR.Application/Repositories/Reports/InsigniaReportRepository.cs @@ -1167,7 +1167,7 @@ namespace BMA.EHR.Application.Repositories.Reports if (matchedData != null) { resultList.Add(new - { + { rowNo = seq++.ToString().ToThaiNumber(), d.ProfileId, d.FullName, @@ -1342,10 +1342,10 @@ namespace BMA.EHR.Application.Repositories.Reports ResultOCT3 = d.ResultOCT3 ?? "-", ResultAPR4 = d.ResultAPR4 ?? "-", ResultOCT4 = d.ResultOCT4 ?? "-", - ResultAPR5 = d.ResultAPR5 ?? "-", + ResultAPR5 = d.ResultAPR5 ?? "-", ResultOCT5 = d.ResultOCT5 ?? "-", Remark = d.Reason ?? "-" - }); + }); } return resultList; @@ -1488,6 +1488,49 @@ namespace BMA.EHR.Application.Repositories.Reports } //คำนวนผู้ได้รับเครื่องราชฯ + public async Task CalInsigniaRequestBkkByType(string type = "officer") + { + var insigniaPeriods = await _dbContext.Set() + .Include(x => x.InsigniaRequests) + .AsQueryable() + .ToListAsync(); + insigniaPeriods = insigniaPeriods + .Where(x => x.StartDate < DateTime.Now.Date || x.InsigniaRequests.Count == 0).ToList(); + + foreach (var insigniaPeriod in insigniaPeriods) + { + if (insigniaPeriod.StartDate >= DateTime.Now.Date || insigniaPeriod.InsigniaRequests.Count > 0) + continue; + var organizations = await _userProfileRepository.GetActiveRootLatestAsync(AccessToken); + if (organizations == null) + continue; + insigniaPeriod.RevisionId = Guid.Parse(organizations[0].OrgRevisionId); + foreach (var organization in organizations) + { + if (organization == null) + continue; + + var result = await _repositoryInsignia.GetInsigniaRequestByTypeAsync(insigniaPeriod.Id, organization.Id, type); + if (result != null) + { + Guid period = result.PeriodId; + string requestStatus = result.RequestStatus; + var candidate = await _repositoryInsignia.GetInsigniaCandidateBKKByTypeAsync(insigniaPeriod.Id, organization.Id, type); + // ตรวจสอบว่ารายการอยู่ใน table insignia_request_new + if (requestStatus == null) + { + // บันทึกรายชื่อ + if (candidate != null) + await _repositoryInsignia.InsertCandidate(period, organization.Id, organization.OrgRootName, candidate, type); + } + + + } + } + } + } + + public async Task CalInsignaiRequestBkk() { var insigniaPeriods = await _dbContext.Set() @@ -1528,6 +1571,8 @@ namespace BMA.EHR.Application.Repositories.Reports } } } + + public async Task GetKhr5TotalReport(Guid id, string type = null, int node = -1, Guid nodeId = default) { var period = await _dbContext.Set() diff --git a/BMA.EHR.Insignia/Program.cs b/BMA.EHR.Insignia/Program.cs index 558ff818..4ccbb492 100644 --- a/BMA.EHR.Insignia/Program.cs +++ b/BMA.EHR.Insignia/Program.cs @@ -180,7 +180,8 @@ var app = builder.Build(); { manager.AddOrUpdate("แจ้งเตือนรอบเครื่องราชฯ", Job.FromExpression(x => x.NotifyInsignia()), Cron.Daily(Int32.Parse(builder.Configuration["KeycloakCron:Hour"]), Int32.Parse(builder.Configuration["KeycloakCron:Minute"])), TimeZoneInfo.Local); manager.AddOrUpdate("ล็อกข้อมูลรอบเครื่องราชฯ", Job.FromExpression(x => x.LockInsignia()), Cron.Daily(Int32.Parse(builder.Configuration["KeycloakCron:Hour"]), Int32.Parse(builder.Configuration["KeycloakCron:Minute"])), TimeZoneInfo.Local); - manager.AddOrUpdate("คำนวนผู้ได้รับเครื่องราชฯ", Job.FromExpression(x => x.CalInsignaiRequestBkk()), Cron.Daily(Int32.Parse(builder.Configuration["KeycloakCron:Hour"]), Int32.Parse(builder.Configuration["KeycloakCron:Minute"])), TimeZoneInfo.Local); + manager.AddOrUpdate("คำนวนผู้ได้รับเครื่องราชฯ", Job.FromExpression(x => x.CalInsigniaRequestBkkByType("officer")), Cron.Daily(Int32.Parse(builder.Configuration["KeycloakCron:Hour"]), Int32.Parse(builder.Configuration["KeycloakCron:Minute"])), TimeZoneInfo.Local); + manager.AddOrUpdate("คำนวนผู้ได้รับเครื่องราชฯ Employee", Job.FromExpression(x => x.CalInsigniaRequestBkkByType("employee")), Cron.Daily(Int32.Parse(builder.Configuration["KeycloakCron:Hour"]), Int32.Parse(builder.Configuration["KeycloakCron:Minute"])), TimeZoneInfo.Local); } // apply migrations