From fee40a25a4ed5400ed285d3f71660379e51c0405 Mon Sep 17 00:00:00 2001 From: Leonel Toro Date: Thu, 3 Jul 2025 13:06:58 -0400 Subject: [PATCH] feat: se actualizan las mediciones una vez se envian y ahora se consideran solo als mediciones que hayan sido creadas durante 7 dias --- BLL/Recuperacion_DGA/EnvioDGA.cs | 14 ++++++++++++-- DAL/MedicionScadaRepository.cs | 14 ++++++++++++++ DAS/RegistrarMedicion.cs | 8 ++++---- SHARED/DTO/Envios_DGA/MedicionScada.cs | 3 ++- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/BLL/Recuperacion_DGA/EnvioDGA.cs b/BLL/Recuperacion_DGA/EnvioDGA.cs index 668a5d0..b26fc37 100644 --- a/BLL/Recuperacion_DGA/EnvioDGA.cs +++ b/BLL/Recuperacion_DGA/EnvioDGA.cs @@ -1,4 +1,5 @@ -using DAL; +using System.Text.Json; +using DAL; using DAS; using Shared.DTO.Envios_DGA; using Shared.DTO.VariablesEntorno; @@ -24,6 +25,7 @@ namespace BLL.Recuperacion_DGA await WriteLineAndLog("INICIO", "Inicio proceso de recuperación DGA", ""); WriteLineAndLog("Obteniendo Mediciones Scada", ConsoleColor.Green); var mediciones = await _dGAMedicionScadaRepository.ObtenerMedicionesAsync(); + var listaMediciones = new List(); foreach (var medicion in mediciones) { try @@ -69,6 +71,7 @@ namespace BLL.Recuperacion_DGA { await FileLoggerHelper.InsertarLogsAsync("REGISTRAR", $"Medicion {medicion.Code} no registra {string.Join(", ", vacios)}",""); } + var fechaEnvio = DateTime.UtcNow; var body = new MedicionSubterraneaRequest { @@ -87,7 +90,8 @@ namespace BLL.Recuperacion_DGA Totalizador = medicion.Totalizador.ToString() ?? "", } }; - //await _registrarMedicion.EnviarMedicionAsync(medicion.Code, body, medicion.Id); + await _registrarMedicion.EnviarMedicionAsync(medicion, body, fechaEnvio); + listaMediciones.Add(new {Id = medicion.Id,FechaEnvio = fechaEnvio.ToString("yyyy-MM-dd HH:mm:ss"), Enviado = medicion.Enviado + 1}); } } @@ -97,6 +101,12 @@ namespace BLL.Recuperacion_DGA WriteLineAndLog($"Error al enviar la medición con ID {medicion.Code}.", ConsoleColor.Red); } } + var listaMedicionesJson = JsonSerializer.Serialize(listaMediciones); + + if (listaMediciones.Count > 0) + { + await MedicionScadaRepository.ActualizarMedicionesAsync(listaMedicionesJson); + } await WriteLineAndLog("FIN","Fin proceso de recuperación DGA",""); } catch (Exception ex) diff --git a/DAL/MedicionScadaRepository.cs b/DAL/MedicionScadaRepository.cs index fd52a57..2781766 100644 --- a/DAL/MedicionScadaRepository.cs +++ b/DAL/MedicionScadaRepository.cs @@ -18,5 +18,19 @@ namespace DAL return result.ToList(); } + + public static async Task ActualizarMedicionesAsync(string medicionesJson) + { + try + { + await using var connection = new SqlConnection(BdConexion.StringConnection); + await connection.ExecuteAsync("SP_ACTUALIZAR_MEDICION_SMARTSCADA_OPERACION", new { JsonMediciones = medicionesJson }, commandType: CommandType.StoredProcedure); + return true; + } + catch (Exception ex) + { + throw new Exception($"Error: {ex.Message}"); + } + } } } diff --git a/DAS/RegistrarMedicion.cs b/DAS/RegistrarMedicion.cs index 168998a..d380475 100644 --- a/DAS/RegistrarMedicion.cs +++ b/DAS/RegistrarMedicion.cs @@ -17,14 +17,14 @@ namespace DAS _logMedicionScadaRepository = logMedicionScadaRepository; } - public async Task EnviarMedicionAsync(string codigoObra, MedicionSubterraneaRequest request, long idMedicion) + public async Task EnviarMedicionAsync(MedicionScada medicion, MedicionSubterraneaRequest request,DateTime fechaEnvio) { var timeStamp = DateTime.UtcNow.ToString("yyyy-MM-dd'T'HH:mm:ss-0000"); var json = JsonSerializer.Serialize(request); var content = new StringContent(json, Encoding.UTF8, "application/json"); - content.Headers.Add("codigoObra", codigoObra); + content.Headers.Add("codigoObra", medicion.Code); content.Headers.Add("timeStampOrigen", timeStamp); var response = await _httpClient.PostAsync($"{SubterraneaApiUrl.BaseUrl}{SubterraneaApiUrl.EndPoint}SSSSSSSSSSSSSSSSS", content); @@ -54,8 +54,8 @@ namespace DAS JsonEnviado = json, JsonRecibido = jsonRecibido, Comprobante = comprobante, - FechaEnvio = DateTime.UtcNow, - IdMedicionSmartscadaOperacion = idMedicion + FechaEnvio = fechaEnvio, + IdMedicionSmartscadaOperacion = medicion.Id }; await _logMedicionScadaRepository.InsertarLogMedicionScadaAsync(logMedicionScada); diff --git a/SHARED/DTO/Envios_DGA/MedicionScada.cs b/SHARED/DTO/Envios_DGA/MedicionScada.cs index 4127a3f..f35f57d 100644 --- a/SHARED/DTO/Envios_DGA/MedicionScada.cs +++ b/SHARED/DTO/Envios_DGA/MedicionScada.cs @@ -20,7 +20,8 @@ public decimal? Caudalsub { get; set; } public decimal? Nivel { get; set; } - + public DateTime? FechaEnvio { get; set; } + public int Enviado { get; set; } public string? tipo_empresa { get; set; } public string? nivelFreaticoDelPozo { get; set; } }