diff --git a/Program.cs b/Program.cs index 62cb271..7a16155 100644 --- a/Program.cs +++ b/Program.cs @@ -76,11 +76,8 @@ internal class Plat_integ var errosPersistentes = new ConcurrentBag(); - //using var conn = new NpgsqlConnection(PG_CONN_STRING_PROD); - //await conn.OpenAsync(); await using var dataSource = NpgsqlDataSource.Create(PG_CONN_STRING_PROD); - //client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Add("SOAPAction", "listarMedidaCincoMinutos"); var endpoint = new Uri("https://servicos.ccee.org.br/ws/v2/MedidaCincoMinutosBSv2"); @@ -88,8 +85,49 @@ internal class Plat_integ await Parallel.ForEachAsync(perfis, async (perfil, ct) => { - foreach (var item in perfis) + try { + Console.WriteLine($"{DateTime.Now}: Iniciado ponto {perfil._Codigo_SCDE}"); + if (perfil._Cod_5min == "0" || perfil._Cod_5min == string.Empty) + { + Console.WriteLine($"Pular {perfil._Codigo_SCDE} - (cod 5 min pendente)"); + errosPersistentes.Add($"{perfil._Cod_5min};{perfil._Codigo_SCDE}; cod_5min pendente"); + return; + } + string sqlSelect = @" + SELECT ponto, dia_num, minuto, origem, + ativa_consumo, ativa_geracao, reativa_consumo, reativa_geracao + FROM med_5min + WHERE ponto = @ponto AND dia_num >= @data_ini AND dia_num < @data_fim; + "; + + var existentes = new Dictionary<(string, double, int), dynamic>(); + + await using (var command = dataSource.CreateCommand(sqlSelect)) + { + + command.Parameters.AddWithValue("ponto", perfil._Codigo_SCDE + "P"); + command.Parameters.AddWithValue("data_ini", dataIni.ToOADate()); + command.Parameters.AddWithValue("data_fim", dataFim.ToOADate()); + + await using (var reader = await command.ExecuteReaderAsync(ct)) + { + while (await reader.ReadAsync()) + { + existentes[(reader.GetString(0), reader.GetDouble(1), reader.GetInt32(2))] = new + { + Origem = reader.GetString(3), + AtivaC = reader.GetDouble(4), + AtivaG = reader.GetDouble(5), + ReatC = reader.GetDouble(6), + ReatG = reader.GetDouble(7) + }; + } + } + } + + foreach (DateTime dia in datas) + { int tentativas = 0; bool sucesso = false; @@ -135,6 +173,13 @@ internal class Plat_integ } } } + Console.WriteLine($"{DateTime.Now}: Finalizado ponto {perfil._Codigo_SCDE}"); + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + }); if (errosPersistentes.Count > 0)