This commit is contained in:
bcastrogallardo 2025-07-14 09:48:59 -04:00
parent e7372f2ae6
commit 4b5b3ae3d9
3 changed files with 113 additions and 86 deletions

View file

@ -58,105 +58,73 @@ namespace BLL.Integracion_DGA
responseData = await _apiService.GetApiResponseAsync(apiUrlTagViews, headers); responseData = await _apiService.GetApiResponseAsync(apiUrlTagViews, headers);
TagviewsResponse tagviews = JsonSerializer.Deserialize<TagviewsResponse>(responseData, options); TagviewsResponse tagviews = JsonSerializer.Deserialize<TagviewsResponse>(responseData, options);
List<string> listTagsID = new List<string>(); List<string> listTagsID = tagviews.Columns.Select(x => x.Uid).ToList();
foreach (Column tag in tagviews.Columns)
{
listTagsID.Add(tag.Uid);
}
HistoricRequest historicRequest = new HistoricRequest(); HistoricRequest historicRequest = new HistoricRequest
historicRequest.DataSource = NexusApiUrl.DataSource; {
historicRequest.Resolution = NexusApiUrl.Resolution; DataSource = NexusApiUrl.DataSource,
historicRequest.Uids = listTagsID; Resolution = NexusApiUrl.Resolution,
historicRequest.StartTs = dateStart.ToUnixTimeSeconds(); Uids = listTagsID,
historicRequest.EndTs = dateEnd.ToUnixTimeSeconds(); StartTs = dateStart.ToUnixTimeSeconds(),
EndTs = dateEnd.ToUnixTimeSeconds()
};
WriteLineAndLog($"Obteniendo Tagviews Historic"); WriteLineAndLog($"Obteniendo Tagviews Historic");
string apiUrlHistoric = $"{apiUrlBase}/api/Documents/tagviews/{item.uid}/historic"; string apiUrlHistoric = $"{apiUrlBase}/api/Documents/tagviews/{item.uid}/historic";
responseData = await _apiService.PostApiResponseAsync(apiUrlHistoric, headers, historicRequest); responseData = await _apiService.PostApiResponseAsync(apiUrlHistoric, headers, historicRequest);
List<HistoricResponse> historicResponse = JsonSerializer.Deserialize<List<HistoricResponse>>(responseData, options); List<HistoricResponse> historicResponse = JsonSerializer.Deserialize<List<HistoricResponse>>(responseData, options);
List<DgaMacroResultado> listDgaMacroResultados = new List<DgaMacroResultado>(); TimeZoneInfo zonaHorariaChile = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time");
foreach (Column tag in tagviews.Columns)
if (item.name == "API - DGA - CAUDALES")
{ {
IEnumerable<HistoricResponse> filter = historicResponse.Where(h => h.Uid == tag.Uid); var caudalData = tagviews.Columns
foreach (HistoricResponse historic in filter) .SelectMany(tag =>
{ historicResponse.Where(h => h.Uid == tag.Uid)
TimeZoneInfo zonaHorariaChile = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time"); .Select(h => new DGAInsert
DateTime now = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(historic.TimeStamp); {
DateTime fechaHoraChile = TimeZoneInfo.ConvertTimeFromUtc(now, zonaHorariaChile); TAG = tag.Name,
VALOR = h.Value?.ToString(),
FECHAMEDICION = TimeZoneInfo.ConvertTimeFromUtc(
new DateTime(1970, 1, 1).AddSeconds(h.TimeStamp).ToUniversalTime(),
zonaHorariaChile)
})
).ToList();
await _jobs.InsertarDgaCaudal(caudalData);
DgaMacroResultado dgaMacroResultado = new DgaMacroResultado();
dgaMacroResultado.TagName = $"SCADA001.{tag.Name}.F_CV";
dgaMacroResultado.Value = historic.Value;
//dgaMacroResultado.TimeStamp = new DateTime(historic.TimeStamp);
dgaMacroResultado.TimeStamp = fechaHoraChile;
listDgaMacroResultados.Add(dgaMacroResultado);
}
} }
else if (item.name == "API - DGA - NIVELES")
/**************/
WriteLineAndLog($"Inicia Envio DGA", ConsoleColor.Green);
WriteLineAndLog($"\t Descargar datos historian: Insertar DgaMacroResultado");
var resultMacro = await _jobs.InsertarDgaMacroResultado(listDgaMacroResultados);
WriteLineAndLog($"\t Descargar datos historian: Insertar DgaSensorResultado");
List<DgaSensorResultado> listDgaSensorResultado = listDgaMacroResultados.Select(item => new DgaSensorResultado
{ {
TagName = item.TagName, var nivelData = tagviews.Columns
TimeStamp = item.TimeStamp, .SelectMany(tag =>
Value = item.Value, historicResponse.Where(h => h.Uid == tag.Uid)
Quality = item.Quality .Select(h => new DGAInsert
}).ToList(); {
TAG = tag.Name,
VALOR = h.Value?.ToString(),
FECHAMEDICION = TimeZoneInfo.ConvertTimeFromUtc(
new DateTime(1970, 1, 1).AddSeconds(h.TimeStamp).ToUniversalTime(),
zonaHorariaChile)
})
).ToList();
var resultSensor = await _jobs.InsertarDgaSensorResultado(listDgaSensorResultado); await _jobs.InsertarDgaNivel(nivelData);
}
WriteLineAndLog($"\t Calculo DGA"); else if (item.name == "API - DGA")
var resultCalculo = await _jobs.SpCalculoDga();
WriteLineAndLog($"\t descargar datos suma reversibilidad : Insertar DgaMacroResultadoSupFlujSuma");
List<DgaMacroResultadoSupFlujSuma> listDgaMacroResultadoSupFlujSuma = listDgaMacroResultados.Select(item => new DgaMacroResultadoSupFlujSuma
{ {
TagName = item.TagName, var nivelData = tagviews.Columns
TimeStamp = item.TimeStamp, .SelectMany(tag =>
Value = item.Value, historicResponse.Where(h => h.Uid == tag.Uid)
Quality = item.Quality .Select(h => new
}).ToList(); {
TAG = tag.Name,
var resultSupFlujSuma = await _jobs.InsertarDgaMacroResultadoSupFlujSuma(listDgaMacroResultadoSupFlujSuma); NIVEL_FREATICO = h.Value?.ToString(),
FECHAMEDICION = TimeZoneInfo.ConvertTimeFromUtc(
WriteLineAndLog($"\t Calculo Suma"); new DateTime(1970, 1, 1).AddSeconds(h.TimeStamp).ToUniversalTime(),
var resultCalculoDgaSup = await _jobs.SpCalculoDgaSupFlujSumaSnreversibilidad(); zonaHorariaChile)
})
).ToList();
WriteLineAndLog($"\t Traspaso datos achird"); }
var result = await _jobs.SpTraspasoDatosAchird();
WriteLineAndLog($"Fin Envio DGA", ConsoleColor.Green);
/**************/
/**************/
WriteLineAndLog($"Inicio Envio DGA Sup Fluj", ConsoleColor.Green);
WriteLineAndLog($"\t Descargar datos historian: Insertar InsertarDgaMacroResultadoSupFluj");
List<DgaMacroResultadoSupFluj> listDgaMacroResultadoSupFluj = listDgaMacroResultados.Select(item => new DgaMacroResultadoSupFluj
{
TagName = item.TagName,
TimeStamp = item.TimeStamp,
Value = item.Value,
Quality = item.Quality
}).ToList();
var resultSensorSup = await _jobsSupFluj.InsertarDgaMacroResultadoSupFluj(listDgaMacroResultadoSupFluj);
WriteLineAndLog($"\t Calculo Suma");
var resultCalculoSup = await _jobsSupFluj.SpCalculoDgaSupFluj();
WriteLineAndLog($"\t Traspaso datos achird");
var resultAchirdSup = await _jobsSupFluj.SpTraspasoDatosAchirdSupFluj();
WriteLineAndLog($"Fin Envio DGA Sup Fluj", ConsoleColor.Green);
/**************/
/**************/
} }
WriteLineAndLog($"FIN Proceso DGA"); WriteLineAndLog($"FIN Proceso DGA");
} }

View file

@ -141,5 +141,49 @@ namespace DAL
throw new Exception($"Error: {ex.Message}"); throw new Exception($"Error: {ex.Message}");
} }
} }
public async Task<bool> InsertarDgaCaudal(List<DGAInsert> dgaMacroResultados)
{
try
{
using (SqlConnection connection = new SqlConnection(BdConexion.StringConnection))
{
await connection.OpenAsync();
// 1. Truncar la tabla antes de insertar
await connection.ExecuteAsync("TRUNCATE TABLE DGA_CAUDAL");
// 2. Insertar la lista de registros
string sql = "INSERT INTO DGA_CAUDAL (TAG, CAUDAL, FECHAMEDICION) VALUES (@TAG, @VALOR, @FECHAMEDICION)";
// Esto inserta todos los elementos de la lista en la tabla
await connection.ExecuteAsync(sql, dgaMacroResultados);
return true;
}
}
catch (Exception ex)
{
throw new Exception($"Error: {ex.Message}");
}
}
public async Task<bool> InsertarDgaNivel(List<DGAInsert> dgaMacroResultados)
{
try
{
using (SqlConnection connection = new SqlConnection(BdConexion.StringConnection))
{
await connection.OpenAsync();
// 1. Truncar la tabla antes de insertar
await connection.ExecuteAsync("TRUNCATE TABLE DGA_NIVEL");
// 2. Insertar la lista de registros
string sql = "INSERT INTO DGA_NIVEL (TAG, NIVEL_FREATICO, FECHAMEDICION) VALUES (@TAG, @VALOR, @FECHAMEDICION)";
// Esto inserta todos los elementos de la lista en la tabla
await connection.ExecuteAsync(sql, dgaMacroResultados);
return true;
}
}
catch (Exception ex)
{
throw new Exception($"Error: {ex.Message}");
}
}
} }
} }

View file

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shared.DTO.Integracion_DGA
{
public partial class DGAInsert
{
public string TAG { get; set; } = string.Empty;
public string? VALOR { get; set; }
public DateTime FECHAMEDICION { get; set; }
}
}