Compare commits

..

No commits in common. "f27f4f54f6290f0b64395ae4c7f57f5db1f8998f" and "564f47d8ac9611631439969053e7ac735ef22219" have entirely different histories.

3 changed files with 180 additions and 97 deletions

View file

@ -58,80 +58,107 @@ 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 = tagviews.Columns.Select(x => x.Uid).ToList(); List<string> listTagsID = new List<string>();
foreach (Column tag in tagviews.Columns)
HistoricRequest historicRequest = new HistoricRequest
{ {
DataSource = NexusApiUrl.DataSource, listTagsID.Add(tag.Uid);
Resolution = NexusApiUrl.Resolution, }
Uids = listTagsID,
StartTs = dateStart.ToUnixTimeSeconds(), //HistoricRequest historicRequest = new HistoricRequest();
EndTs = dateEnd.ToUnixTimeSeconds() //historicRequest.DataSource = NexusApiUrl.DataSource;
}; //historicRequest.Resolution = NexusApiUrl.Resolution;
//historicRequest.Uids = listTagsID;
//historicRequest.StartTs = dateStart.ToUnixTimeSeconds();
//historicRequest.EndTs = dateEnd.ToUnixTimeSeconds();
WriteLineAndLog($"Obteniendo Tagviews Historic"); WriteLineAndLog($"Obteniendo Tagviews Historic");
string apiUrlHistoric = $"{apiUrlBase}/api/Documents/tagviews/{item.uid}/realtime"; string apiUrlHistoric = $"{apiUrlBase}/api/Documents/tagviews/{item.uid}/realtime";
responseData = await _apiService.PostApiResponseAsync(apiUrlHistoric, headers, listTagsID); responseData = await _apiService.PostApiResponseAsync(apiUrlHistoric, headers, listTagsID);
List<HistoricResponse> historicResponse = JsonSerializer.Deserialize<List<HistoricResponse>>(responseData, options); List<HistoricResponse> historicResponse = JsonSerializer.Deserialize<List<HistoricResponse>>(responseData, options);
TimeZoneInfo zonaHorariaChile = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time"); List<DgaMacroResultado> listDgaMacroResultados = new List<DgaMacroResultado>();
foreach (Column tag in tagviews.Columns)
if (item.name == "API - DGA - CAUDALES")
{ {
var caudalData = tagviews.Columns IEnumerable<HistoricResponse> filter = historicResponse.Where(h => h.Uid == tag.Uid);
.SelectMany(tag => foreach (HistoricResponse historic in filter)
historicResponse.Where(h => h.Uid == tag.Uid) {
.Select(h => new DGAInsert TimeZoneInfo zonaHorariaChile = TimeZoneInfo.FindSystemTimeZoneById("Pacific SA Standard Time");
{ DateTime now = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(historic.TimeStamp);
TAG = tag.Name, DateTime fechaHoraChile = TimeZoneInfo.ConvertTimeFromUtc(now, zonaHorariaChile);
VALOR = h.Value?.ToString(),
FECHAMEDICION = TimeZoneInfo.ConvertTimeFromUtc(
new DateTime(1970, 1, 1).AddSeconds(h.TimeStamp).ToUniversalTime(),
zonaHorariaChile)
})
).ToList();
await _jobs.InsertarDgaCaudal(caudalData);
}
else if (item.name == "API - DGA - NIVELES")
{
var nivelData = tagviews.Columns
.SelectMany(tag =>
historicResponse.Where(h => h.Uid == tag.Uid)
.Select(h => new DGAInsert
{
TAG = tag.Name,
VALOR = h.Value?.ToString(),
FECHAMEDICION = TimeZoneInfo.ConvertTimeFromUtc(
new DateTime(1970, 1, 1).AddSeconds(h.TimeStamp).ToUniversalTime(),
zonaHorariaChile)
})
).ToList();
await _jobs.InsertarDgaNivel(nivelData); DgaMacroResultado dgaMacroResultado = new DgaMacroResultado();
dgaMacroResultado.TagName = tag.Name;
dgaMacroResultado.Value = historic.Value;
//dgaMacroResultado.TimeStamp = new DateTime(historic.TimeStamp);
dgaMacroResultado.TimeStamp = fechaHoraChile;
listDgaMacroResultados.Add(dgaMacroResultado);
}
} }
else if (item.name == "API - DGA")
/**************/
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
{ {
var nivelData = tagviews.Columns TagName = item.TagName,
.SelectMany(tag => TimeStamp = item.TimeStamp,
historicResponse.Where(h => h.Uid == tag.Uid) Value = item.Value,
.Select(h => new Quality = item.Quality
{ }).ToList();
TAG = tag.Name,
NIVEL_FREATICO = h.Value?.ToString(), var resultSensor = await _jobs.InsertarDgaSensorResultado(listDgaSensorResultado);
FECHAMEDICION = TimeZoneInfo.ConvertTimeFromUtc(
new DateTime(1970, 1, 1).AddSeconds(h.TimeStamp).ToUniversalTime(), WriteLineAndLog($"\t Calculo DGA");
zonaHorariaChile) var resultCalculo = await _jobs.SpCalculoDga();
})
).ToList(); WriteLineAndLog($"\t descargar datos suma reversibilidad : Insertar DgaMacroResultadoSupFlujSuma");
} List<DgaMacroResultadoSupFlujSuma> listDgaMacroResultadoSupFlujSuma = listDgaMacroResultados.Select(item => new DgaMacroResultadoSupFlujSuma
{
TagName = item.TagName,
TimeStamp = item.TimeStamp,
Value = item.Value,
Quality = item.Quality
}).ToList();
var resultSupFlujSuma = await _jobs.InsertarDgaMacroResultadoSupFlujSuma(listDgaMacroResultadoSupFlujSuma);
WriteLineAndLog($"\t Calculo Suma");
var resultCalculoDgaSup = await _jobs.SpCalculoDgaSupFlujSumaSnreversibilidad();
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($"INICIO REGISTRO DE MEDICIONES DGA");
await _jobs.SpRegistrarMedicionesDga();
WriteLineAndLog($"FIN REGISTRO DE MEDICIONES DGA");
WriteLineAndLog($"FIN PROCESO DGA");
} }
catch (Exception ex) catch (Exception ex)
{ {

View file

@ -1,7 +1,6 @@
using System.Data; using System.Data;
using Dapper; using Dapper;
using Microsoft.Data.SqlClient; using Microsoft.Data.SqlClient;
using Microsoft.Identity.Client;
using Shared.DTO.Integracion_DGA; using Shared.DTO.Integracion_DGA;
using Shared.DTO.VariablesEntorno; using Shared.DTO.VariablesEntorno;
@ -9,7 +8,83 @@ namespace DAL
{ {
public class JobsDgaRepository public class JobsDgaRepository
{ {
public async Task<bool> SpRegistrarMedicionesDga() public async Task<bool> InsertarDgaMacroResultado(List<DgaMacroResultado> 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_MACRO_RESULTADO");
// 2. Insertar la lista de registros
string sql = "INSERT INTO DGA_MACRO_RESULTADO (TagName, TimeStamp, Value, Quality) VALUES (@TagName, @TimeStamp, @Value, @Quality)";
// 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> InsertarDgaSensorResultado(List<DgaSensorResultado> dgaSensorResultado)
{
try
{
using (var connection = new SqlConnection(BdConexion.StringConnection))
{
await connection.OpenAsync();
// 1. Truncar la tabla DGA_SENSOR_RESULTADO
await connection.ExecuteAsync("TRUNCATE TABLE DGA_SENSOR_RESULTADO");
// 2. Llamar al stored procedure SP_CALCULO_DGA
await connection.ExecuteAsync("SP_CALCULO_DGA", commandType: System.Data.CommandType.StoredProcedure);
// 3. Insertar todos los registros de la lista con Dapper
string sql = "INSERT INTO DGA_SENSOR_RESULTADO (TagName, TimeStamp, Value, Quality) VALUES (@TagName, @TimeStamp, @Value, @Quality)";
await connection.ExecuteAsync(sql, dgaSensorResultado);
return true;
}
}
catch (Exception ex)
{
throw new Exception($"Error: {ex.Message}");
}
}
public async Task<bool> InsertarDgaMacroResultadoSupFlujSuma(List<DgaMacroResultadoSupFlujSuma> dgaMacroResultadoSupFlujSuma)
{
try
{
// Configurar la conexión a la base de datos
using (SqlConnection connection = new SqlConnection(BdConexion.StringConnection))
{
await connection.OpenAsync();
// Truncar la tabla antes de insertar
await connection.ExecuteAsync("TRUNCATE TABLE DGA_MACRO_RESULTADO_SUP_FLUJ_SUMA");
// Crear un adaptador de datos
SqlDataAdapter adapter = new SqlDataAdapter();
// Configurar el comando de inserción
string sql = "INSERT INTO DGA_MACRO_RESULTADO_SUP_FLUJ_SUMA (TagName, TimeStamp, Value, Quality) VALUES (@TagName, @TimeStamp, @Value, @Quality)";
await connection.ExecuteAsync(sql, dgaMacroResultadoSupFlujSuma);
return true; // Éxito
}
}
catch (Exception ex)
{
throw new Exception($"Error: {ex.Message}");
}
}
public async Task<bool> SpCalculoDga()
{ {
try try
{ {
@ -17,7 +92,7 @@ namespace DAL
{ {
await connection.OpenAsync(); await connection.OpenAsync();
// Ejecuta el stored procedure sin parámetros // Ejecuta el stored procedure sin parámetros
await connection.ExecuteAsync("SP_REGISTRAR_DATOS_DGA", commandType: CommandType.StoredProcedure); await connection.ExecuteAsync("SP_CALCULO_DGA", commandType: CommandType.StoredProcedure);
} }
return true; // Éxito return true; // Éxito
} }
@ -27,21 +102,19 @@ namespace DAL
} }
} }
public async Task<bool> InsertarDgaCaudal(List<DGAInsert> dgaMacroResultados) public async Task<bool> SpCalculoDgaSupFlujSumaSnreversibilidad()
{ {
try try
{ {
using (SqlConnection connection = new SqlConnection(BdConexion.StringConnection)) using (var connection = new SqlConnection(BdConexion.StringConnection))
{ {
await connection.OpenAsync(); await connection.OpenAsync();
// 1. Truncar la tabla antes de insertar await connection.ExecuteAsync(
await connection.ExecuteAsync("TRUNCATE TABLE DGA_CAUDAL"); "SP_CALCULO_DGA_SUP_FLUJ_SUMA_SNREVERSIBILIDAD",
// 2. Insertar la lista de registros commandType: CommandType.StoredProcedure
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;
} }
return true; // Éxito
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -49,21 +122,19 @@ namespace DAL
} }
} }
public async Task<bool> InsertarDgaNivel(List<DGAInsert> dgaMacroResultados) public async Task<bool> SpTraspasoDatosAchird()
{ {
try try
{ {
using (SqlConnection connection = new SqlConnection(BdConexion.StringConnection)) using (var connection = new SqlConnection(BdConexion.StringConnection))
{ {
await connection.OpenAsync(); await connection.OpenAsync();
// 1. Truncar la tabla antes de insertar await connection.ExecuteAsync(
await connection.ExecuteAsync("TRUNCATE TABLE DGA_NIVEL"); "SP_TRASPASO_DATOS_ACHIRD",
// 2. Insertar la lista de registros commandType: CommandType.StoredProcedure
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;
} }
return true; // Éxito
} }
catch (Exception ex) catch (Exception ex)
{ {

View file

@ -1,15 +0,0 @@
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; }
}
}