Requisições realizadas por dia.

Dados inseridos no Postgres em Bulk.
This commit is contained in:
Adriano Serighelli 2025-03-24 11:36:42 -03:00
parent cfe6605f49
commit d3536ef422
3 changed files with 36 additions and 18 deletions

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using Npgsql;
using PI_Assync_PLD.Models;
using Windows.Devices.Sensors;
public class PostgresRepository : IDataRepository
{
@ -39,23 +40,33 @@ using PI_Assync_PLD.Models;
using var transaction = conn.BeginTransaction();
string query = "INSERT INTO pld (dia_num, hora, submercado, valor, mes_ref, dia_da_semana) " +
"VALUES (@Dia, @Hora, @Submercado, @Valor, @MesRef, @DiaSemana)";
var sb = new System.Text.StringBuilder();
sb.Append("INSERT INTO pld (dia_num, hora, submercado, valor, mes_ref, dia_da_semana) VALUES ");
using var cmd = new NpgsqlCommand(query, conn, transaction);
var parametros = new List<NpgsqlParameter>();
int count = 0;
foreach (var pld in novosPLDs)
{
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@Dia", pld.Dia.ToOADate());
cmd.Parameters.AddWithValue("@Hora", pld.Hora);
cmd.Parameters.AddWithValue("@Submercado", pld.Submercado);
cmd.Parameters.AddWithValue("@Valor", pld.Valor);
cmd.Parameters.AddWithValue("@MesRef", pld.Mes);
cmd.Parameters.AddWithValue("@DiaSemana", pld.DiaSemana);
cmd.ExecuteNonQuery();
sb.Append($"(@Dia{count}, @Hora{count}, @Submercado{count}, @Valor{count}, @MesRef{count}, @DiaSemana{count}),");
parametros.Add(new NpgsqlParameter($"@Dia{count}", NpgsqlTypes.NpgsqlDbType.Integer) { Value = pld.Dia.ToOADate() });
parametros.Add(new NpgsqlParameter($"@Hora{count}", NpgsqlTypes.NpgsqlDbType.Integer) { Value = pld.Hora });
parametros.Add(new NpgsqlParameter($"@Submercado{count}", NpgsqlTypes.NpgsqlDbType.Text) { Value = pld.Submercado });
parametros.Add(new NpgsqlParameter($"@Valor{count}", NpgsqlTypes.NpgsqlDbType.Double) { Value = pld.Valor });
parametros.Add(new NpgsqlParameter($"@MesRef{count}", NpgsqlTypes.NpgsqlDbType.Text) { Value = pld.Mes });
parametros.Add(new NpgsqlParameter($"@DiaSemana{count}", NpgsqlTypes.NpgsqlDbType.Integer) { Value = pld.DiaSemana });
count++;
}
// Removemos a última vírgula da query
sb.Length--;
using var cmd = new NpgsqlCommand(sb.ToString(), conn, transaction);
cmd.Parameters.AddRange(parametros.ToArray());
cmd.ExecuteNonQuery();
transaction.Commit();
}
}

View File

@ -1,4 +1,5 @@
using System.Security.Cryptography.X509Certificates;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Text;
public class HttpClientService
@ -9,7 +10,14 @@ public class HttpClientService
{
var handler = new HttpClientHandler
{
ClientCertificates = { new X509Certificate2("X:\\Back\\APP Smart\\Certificado\\cert_ssl.pfx", "appsmart") }
ClientCertificates = { new X509Certificate2("X:\\Back\\APP Smart\\Certificado\\cert_ssl.pfx", "appsmart") },
//// Configura o proxy do Fiddler
//Proxy = new WebProxy("127.0.0.1", 8888),
//UseProxy = true,
//// Permite qualquer certificado SSL (para evitar erros com o proxy do Fiddler)
//ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true
};
_client = new HttpClient(handler) { DefaultRequestHeaders = { { "SOAPAction", "listarPLD" } } };
}

View File

@ -33,12 +33,11 @@ public class PLDService
for (DateTime data = menorDataInicial; data < dataFinal; data = data.AddDays(1))
{
DateTime dataInicio = data;
DateTime dataFim = dataInicio.AddDays(1);
tarefasRequisicoes.Add(Task.Run(async () =>
{
await _requestLimiter.WaitAsync();
string xmlResponse = await _httpClient.EnviarRequisicaoAsync(PrepararXML(dataInicio, dataFim));
string xmlResponse = await _httpClient.EnviarRequisicaoAsync(PrepararXML(dataInicio));
_requestLimiter.Release();
return xmlResponse;
}));
@ -81,11 +80,11 @@ public class PLDService
}
}
private string PrepararXML(DateTime inicio, DateTime fim)
private string PrepararXML(DateTime inicio)
{
string xmlTemplate = System.IO.File.ReadAllText(@"X:\Back\PLD Horário\listarPLD.txt");
return xmlTemplate.Replace("DATA_INI", inicio.ToString("yyyy-MM-ddT00:00:00"))
.Replace("DATA_FIM", fim.ToString("yyyy-MM-ddT00:00:00"))
.Replace("DATA_FIM", inicio.ToString("yyyy-MM-ddT00:00:00"))
.Replace("PAG_NUM", "1");
}
}