Requisições realizadas por dia.
Dados inseridos no Postgres em Bulk.
This commit is contained in:
parent
cfe6605f49
commit
d3536ef422
@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Npgsql;
|
using Npgsql;
|
||||||
using PI_Assync_PLD.Models;
|
using PI_Assync_PLD.Models;
|
||||||
|
using Windows.Devices.Sensors;
|
||||||
|
|
||||||
public class PostgresRepository : IDataRepository
|
public class PostgresRepository : IDataRepository
|
||||||
{
|
{
|
||||||
@ -39,23 +40,33 @@ using PI_Assync_PLD.Models;
|
|||||||
|
|
||||||
using var transaction = conn.BeginTransaction();
|
using var transaction = conn.BeginTransaction();
|
||||||
|
|
||||||
string query = "INSERT INTO pld (dia_num, hora, submercado, valor, mes_ref, dia_da_semana) " +
|
var sb = new System.Text.StringBuilder();
|
||||||
"VALUES (@Dia, @Hora, @Submercado, @Valor, @MesRef, @DiaSemana)";
|
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)
|
foreach (var pld in novosPLDs)
|
||||||
{
|
{
|
||||||
cmd.Parameters.Clear();
|
sb.Append($"(@Dia{count}, @Hora{count}, @Submercado{count}, @Valor{count}, @MesRef{count}, @DiaSemana{count}),");
|
||||||
cmd.Parameters.AddWithValue("@Dia", pld.Dia.ToOADate());
|
|
||||||
cmd.Parameters.AddWithValue("@Hora", pld.Hora);
|
parametros.Add(new NpgsqlParameter($"@Dia{count}", NpgsqlTypes.NpgsqlDbType.Integer) { Value = pld.Dia.ToOADate() });
|
||||||
cmd.Parameters.AddWithValue("@Submercado", pld.Submercado);
|
parametros.Add(new NpgsqlParameter($"@Hora{count}", NpgsqlTypes.NpgsqlDbType.Integer) { Value = pld.Hora });
|
||||||
cmd.Parameters.AddWithValue("@Valor", pld.Valor);
|
parametros.Add(new NpgsqlParameter($"@Submercado{count}", NpgsqlTypes.NpgsqlDbType.Text) { Value = pld.Submercado });
|
||||||
cmd.Parameters.AddWithValue("@MesRef", pld.Mes);
|
parametros.Add(new NpgsqlParameter($"@Valor{count}", NpgsqlTypes.NpgsqlDbType.Double) { Value = pld.Valor });
|
||||||
cmd.Parameters.AddWithValue("@DiaSemana", pld.DiaSemana);
|
parametros.Add(new NpgsqlParameter($"@MesRef{count}", NpgsqlTypes.NpgsqlDbType.Text) { Value = pld.Mes });
|
||||||
cmd.ExecuteNonQuery();
|
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();
|
transaction.Commit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using System.Security.Cryptography.X509Certificates;
|
using System.Net;
|
||||||
|
using System.Security.Cryptography.X509Certificates;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
public class HttpClientService
|
public class HttpClientService
|
||||||
@ -9,7 +10,14 @@ public class HttpClientService
|
|||||||
{
|
{
|
||||||
var handler = new HttpClientHandler
|
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" } } };
|
_client = new HttpClient(handler) { DefaultRequestHeaders = { { "SOAPAction", "listarPLD" } } };
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,12 +33,11 @@ public class PLDService
|
|||||||
for (DateTime data = menorDataInicial; data < dataFinal; data = data.AddDays(1))
|
for (DateTime data = menorDataInicial; data < dataFinal; data = data.AddDays(1))
|
||||||
{
|
{
|
||||||
DateTime dataInicio = data;
|
DateTime dataInicio = data;
|
||||||
DateTime dataFim = dataInicio.AddDays(1);
|
|
||||||
|
|
||||||
tarefasRequisicoes.Add(Task.Run(async () =>
|
tarefasRequisicoes.Add(Task.Run(async () =>
|
||||||
{
|
{
|
||||||
await _requestLimiter.WaitAsync();
|
await _requestLimiter.WaitAsync();
|
||||||
string xmlResponse = await _httpClient.EnviarRequisicaoAsync(PrepararXML(dataInicio, dataFim));
|
string xmlResponse = await _httpClient.EnviarRequisicaoAsync(PrepararXML(dataInicio));
|
||||||
_requestLimiter.Release();
|
_requestLimiter.Release();
|
||||||
return xmlResponse;
|
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");
|
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"))
|
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");
|
.Replace("PAG_NUM", "1");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user