diff --git a/Program.cs b/Program.cs index 6c2fa77..4ecb135 100644 --- a/Program.cs +++ b/Program.cs @@ -32,115 +32,132 @@ internal class Plat_integ { static string ACCESS_DB_LOCATION_APP = @"X:\Middle\Informativo Setorial\Modelo Word\BD_APP.accdb"; static void Main(string[] args) { - // - DateTime searchFromMonth = DateTime.Now.AddMonths(-24); - DateTime searchFrom = new DateTime(searchFromMonth.Year, searchFromMonth.Month, 1); - string searchFromString = searchFrom.ToString("yMM"); - Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); - //transfere_PLD(); + bool Consolidada = true; //True = econ estimada; False = econ consolidada + + DateTime searchFromMonth = DateTime.Now.AddMonths(-24); + DateTime searchFrom = new DateTime(searchFromMonth.Year, searchFromMonth.Month, 1); + string searchFromString = searchFrom.ToString("yMM"); - //Console.WriteLine("Iniciando importação dos dados cadastrais"); - //transfere_DC(); - //Console.WriteLine("Finalizando importação dos dados cadastrais"); - // - //Console.WriteLine("Iniciando importação dos dados TE"); - //transfere_TE(searchFromString); - //Console.WriteLine("Finalizando importação dos dados TE"); - // - //Console.WriteLine("Iniciando importação dos dados de economia"); - //transfere_econ(searchFromString); - //Console.WriteLine("Finalizando importação dos dados de economia"); + Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); + //transfere_PLD(); - //args -> limit & offset - string limit = "1000"; //args[0]; - string offset = "0"; // args[1]; - int limitInt = Int32.Parse(limit); - int offsetInt = Int32.Parse(offset); - Console.WriteLine("Iniciando importação dos dados estimados de economia"); - transfere_econ_estimado(searchFromString, limitInt, offsetInt); - Console.WriteLine("Finalizando importação dos dados estimados de economia"); - Environment.Exit(0); - return; + if (Consolidada) + { + //Console.WriteLine("Iniciando importação dos dados cadastrais"); + //transfere_DC(); + //Console.WriteLine("Finalizando importação dos dados cadastrais"); + + //Console.WriteLine("Iniciando importação dos dados TE"); + //transfere_TE(searchFromString); + //Console.WriteLine("Finalizando importação dos dados TE"); + + Console.WriteLine("Iniciando importação dos dados de economia"); + transfere_econ(searchFromString); + Console.WriteLine("Finalizando importação dos dados de economia"); + } + else + { + //args -> limit & offset + string limit = "1000"; //args[0]; + string offset = "0"; // args[1]; + int limitInt = Int32.Parse(limit); + int offsetInt = Int32.Parse(offset); + Console.WriteLine("Iniciando importação dos dados estimados de economia"); + transfere_econ_estimado(searchFromString, limitInt, offsetInt); + Console.WriteLine("Finalizando importação dos dados estimados de economia"); + } + Environment.Exit(0); + return; } private static void transfere_econ(string searchFromString) { - string strCOM_ac, strCOM_pg; + string strCOM_ac, strCOM_pg, strCOM_ac_list; - long cod_econ, cod_smart_unidade; - string mes; - double custo_cativo, custo_livre, economia_mensal, economia_acumulada, custo_unit; + long cod_econ, cod_smart_unidade; + string mes; + double custo_cativo, custo_livre, economia_mensal, economia_acumulada, custo_unit; - //abre conexao com o Accesss - OleDbConnection conn_access = new("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ACCESS_DB_LOCATION + ";Jet OLEDB:Database Password=gds21"); - conn_access.Open(); + //abre conexao com o Accesss + OleDbConnection conn_access = new("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ACCESS_DB_LOCATION + ";Jet OLEDB:Database Password=gds21"); + conn_access.Open(); - //dados >= 2021-01-01 - strCOM_ac = "SELECT * FROM Economia WHERE mes >= " + searchFromString; - OleDbCommand tbEC = new(strCOM_ac, conn_access); - OleDbDataReader reader_access = tbEC.ExecuteReader(); + //dados >= 2021-01-01 + strCOM_ac_list = "SELECT DISTINCT cod_smart_unidade FROM Economia WHERE mes >= " + searchFromString; - //abre a conexao com o PG - NpgsqlConnection conn_pg; - if (ENVIRONMENT is "dev") { - conn_pg = new(PG_CONN_STRING_DEV); - } else { - conn_pg = new(PG_CONN_STRING_PROD); - } - conn_pg.Open(); + OleDbCommand tbList = new(strCOM_ac_list, conn_access); + OleDbDataReader reader_access_list = tbList.ExecuteReader(); - Console.WriteLine("Excluindo dados existentes de economia"); - string pg_strCOM = $"DELETE FROM economia WHERE mes::INTEGER >= {searchFromString}"; //TODO: ESTUDAR TROCA PARA TRUNCATE - NpgsqlCommand pg_tcSCDE = new(pg_strCOM, conn_pg); - NpgsqlDataReader pg_reader = pg_tcSCDE.ExecuteReader(); - pg_reader.Close(); - Console.WriteLine("Dados de economia excluídos"); + //abre a conexao com o PG + NpgsqlConnection conn_pg; + if (ENVIRONMENT is "dev") { + conn_pg = new(PG_CONN_STRING_DEV); + } else { + conn_pg = new(PG_CONN_STRING_PROD); + } + conn_pg.Open(); - using (var pg_writer = conn_pg.BeginBinaryImport("COPY economia (cod_econ, cod_smart_unidade, mes, custo_cativo, custo_livre, economia_mensal, economia_acumulada, custo_unit, dad_estimado) FROM STDIN (FORMAT BINARY)")) { - while (reader_access.Read()) { - //Console.WriteLine(reader_access["Data"]); - //Console.ReadKey(); - mes = reader_access["Mes"].ToString(); + Console.WriteLine("Excluindo dados existentes de economia"); + //string pg_strCOM = $"DELETE FROM economia WHERE mes::INTEGER >= {searchFromString}"; //TODO: ESTUDAR TROCA PARA TRUNCATE + //NpgsqlCommand pg_tcSCDE = new(pg_strCOM, conn_pg); + //NpgsqlDataReader pg_reader = pg_tcSCDE.ExecuteReader(); + //pg_reader.Close(); + Console.WriteLine("Dados de economia excluídos"); - double.TryParse(reader_access["Custo_cativo"].ToString(), out custo_cativo); - double.TryParse(reader_access["Custo_livre"].ToString(), out custo_livre); - double.TryParse(reader_access["Economia_mensal"].ToString(), out economia_mensal); - double.TryParse(reader_access["Economia_acumul"].ToString(), out economia_acumulada); - double.TryParse(reader_access["Custo_unit"].ToString(), out custo_unit); - long.TryParse(reader_access["Cod_econ"].ToString(), out cod_econ); - long.TryParse(reader_access["Cod_Smart_unidade"].ToString(), out cod_smart_unidade); + using (var pg_writer = conn_pg.BeginBinaryImport("COPY economia (cod_econ, cod_smart_unidade, mes, custo_cativo, custo_livre, economia_mensal, economia_acumulada, custo_unit, dad_estimado) FROM STDIN (FORMAT BINARY)")) { + while (reader_access_list.Read()) + { + string idUni = reader_access_list["cod_smart_unidade"].ToString()!; + strCOM_ac = $"SELECT calendario_aamm.data, IIf(a.custo_cativo IS NULL, 0, a.custo_cativo) AS custo_cativo, IIf(a.custo_livre IS NULL, 0, a.custo_livre) AS custo_livre, IIf(a.economia_mensal IS NULL, 0, a.economia_mensal) AS economia_mensal, IIf(a.economia_acumul IS NULL, 0, a.economia_acumul) AS economia_acumul, IIf(a.Custo_unit IS NULL, 0, a.economia_acumul) AS Custo_unit FROM calendario_aamm LEFT JOIN (SELECT * FROM economia WHERE cod_smart_unidade = {idUni} ORDER BY mes) AS a ON calendario_aamm.data = a.mes WHERE calendario_aamm.data >= {searchFromString} And calendario_aamm.data <= (SELECT MAX(mes) FROM economia WHERE cod_smart_unidade = {idUni})"; - //COMENTADO SO DEV -> Random rnd = new Random(); - //COMENTADO SO DEV -> custo_unit = 500 + rnd.NextDouble()*200; + OleDbCommand tbEC = new(strCOM_ac, conn_access); + OleDbDataReader reader_access = tbEC.ExecuteReader(); + while (reader_access.Read()) + { + //Console.WriteLine(reader_access["Data"]); + //Console.ReadKey(); + mes = reader_access["data"].ToString()!; - //strCOM_pg = "INSERT INTO economia (cod_econ, cod_smart_unidade, mes, custo_cativo, custo_livre, economia_mensal, economia_acumulada, custo_unit, dad_estimado)"; - //strCOM_pg += $" VALUES ({cod_econ}, {cod_smart_unidade},'{mes}', {custo_cativo}, {custo_livre}, {economia_mensal}, {economia_acumulada}, {custo_unit}, {false});"; - pg_writer.StartRow(); - pg_writer.Write(cod_econ, NpgsqlTypes.NpgsqlDbType.Bigint); - pg_writer.Write(cod_smart_unidade, NpgsqlTypes.NpgsqlDbType.Bigint); - pg_writer.Write(mes); - pg_writer.Write(custo_cativo, NpgsqlTypes.NpgsqlDbType.Numeric); - pg_writer.Write(custo_livre, NpgsqlTypes.NpgsqlDbType.Numeric); - pg_writer.Write(economia_mensal, NpgsqlTypes.NpgsqlDbType.Numeric); - pg_writer.Write(economia_acumulada, NpgsqlTypes.NpgsqlDbType.Numeric); - pg_writer.Write(custo_unit, NpgsqlTypes.NpgsqlDbType.Numeric); - pg_writer.Write(false, NpgsqlTypes.NpgsqlDbType.Boolean); + double.TryParse(reader_access["Custo_cativo"].ToString(), out custo_cativo); + double.TryParse(reader_access["Custo_livre"].ToString(), out custo_livre); + double.TryParse(reader_access["Economia_mensal"].ToString(), out economia_mensal); + double.TryParse(reader_access["Economia_acumul"].ToString(), out economia_acumulada); + double.TryParse(reader_access["Custo_unit"].ToString(), out custo_unit); + long.TryParse(String.Concat(idUni, mes), out cod_econ); + long.TryParse(idUni, out cod_smart_unidade); - //try { - // NpgsqlCommand tcDC = new(strCOM_pg, conn_pg); - // using (NpgsqlDataReader reader = tcDC.ExecuteReader()) { - // }; - //} catch (Exception ex) { - // Console.WriteLine(ex.Message); - // Console.WriteLine(strCOM_pg); - // //Console.ReadKey(); - //} - } - pg_writer.Complete(); - } + //COMENTADO SO DEV -> Random rnd = new Random(); + //COMENTADO SO DEV -> custo_unit = 500 + rnd.NextDouble()*200; - conn_access.Close(); - conn_pg.Close(); + //strCOM_pg = "INSERT INTO economia (cod_econ, cod_smart_unidade, mes, custo_cativo, custo_livre, economia_mensal, economia_acumulada, custo_unit, dad_estimado)"; + //strCOM_pg += $" VALUES ({cod_econ}, {cod_smart_unidade},'{mes}', {custo_cativo}, {custo_livre}, {economia_mensal}, {economia_acumulada}, {custo_unit}, {false});"; + pg_writer.StartRow(); + pg_writer.Write(cod_econ, NpgsqlTypes.NpgsqlDbType.Bigint); + pg_writer.Write(cod_smart_unidade, NpgsqlTypes.NpgsqlDbType.Bigint); + pg_writer.Write(mes); + pg_writer.Write(custo_cativo, NpgsqlTypes.NpgsqlDbType.Numeric); + pg_writer.Write(custo_livre, NpgsqlTypes.NpgsqlDbType.Numeric); + pg_writer.Write(economia_mensal, NpgsqlTypes.NpgsqlDbType.Numeric); + pg_writer.Write(economia_acumulada, NpgsqlTypes.NpgsqlDbType.Numeric); + pg_writer.Write(custo_unit, NpgsqlTypes.NpgsqlDbType.Numeric); + pg_writer.Write(false, NpgsqlTypes.NpgsqlDbType.Boolean); + + //try { + // NpgsqlCommand tcDC = new(strCOM_pg, conn_pg); + // using (NpgsqlDataReader reader = tcDC.ExecuteReader()) { + // }; + //} catch (Exception ex) { + // Console.WriteLine(ex.Message); + // Console.WriteLine(strCOM_pg); + // //Console.ReadKey(); + //} + } + } + pg_writer.Complete(); + } + + conn_access.Close(); + conn_pg.Close(); }