feat: integração da consulta sintetica com a aplicação

This commit is contained in:
Alessandro Gonçaalves 2025-10-20 23:43:13 -03:00
parent 5acdff6dd2
commit a1d22d3ac6
4 changed files with 52 additions and 10 deletions

View File

@ -335,10 +335,10 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
// Usar EXATAMENTE a mesma lógica do totalValor // Usar EXATAMENTE a mesma lógica do totalValor
const filteredData = table.getRowModel().rows.map((row) => row.original); const filteredData = table.getRowModel().rows.map((row) => row.original);
const valorRealizado = filteredData.reduce((sum, item) => { const valorRealizado = filteredData.reduce((sum, item) => {
const valor = const valor =
typeof item.valor === "string" ? parseFloat(item.valor) : item.valor; typeof item.valor === "string" ? parseFloat(item.valor) : item.valor;
return sum + (isNaN(valor) ? 0 : valor); return sum + (isNaN(valor) ? 0 : valor);
}, 0); }, 0);
return { return {
valorRealizado, valorRealizado,

View File

@ -62,7 +62,7 @@ export default function Teste() {
try { try {
setLoading(true); setLoading(true);
setError(null); setError(null);
const response = await fetch("/api/dre"); const response = await fetch("/api/dre-oracle");
if (!response.ok) { if (!response.ok) {
throw new Error(`Erro ao carregar dados: ${response.status}`); throw new Error(`Erro ao carregar dados: ${response.status}`);

View File

@ -0,0 +1,42 @@
import { NextRequest, NextResponse } from 'next/server';
import { executeOracleQuery } from '@/db/oracle';
export async function GET(request: NextRequest) {
try {
console.log('🔄 Buscando dados DRE do Oracle...');
// Query para buscar dados da tabela DRE_RESULTADO
const sql = `SELECT * FROM DRE_RESULTADO ORDER BY CODGRUPO, CODCONTA, CODCENTROCUSTO`;
const data = await executeOracleQuery(sql);
console.log('✅ Query executada com sucesso:', data.length, 'registros encontrados');
// Transformar os dados do Oracle para o formato esperado pelo componente
const transformedData = data.map((item: any) => ({
codfilial: "001", // Valor padrão
data_competencia: item.DATA || "2023-03", // Usar DATA do Oracle
data_cai: item.DATA || "2023-03", // Usar DATA do Oracle
grupo: item.GRUPO || "", // Usar GRUPO do Oracle
subgrupo: item.CENTROCUSTO || "", // Usar CENTROCUSTO como subgrupo
centro_custo: item.CODIGOCENTROCUSTO || "", // Usar CODIGOCENTROCUSTO
codigo_conta: parseInt(item.CODCONTA) || 0, // Converter CODCONTA para número
conta: item.CONTA || "", // Usar CONTA do Oracle
valor: item.VALOR?.toString() || "0", // Converter VALOR para string
}));
return NextResponse.json(transformedData);
} catch (error) {
console.error('❌ Erro ao buscar dados DRE do Oracle:', error);
return NextResponse.json(
{
success: false,
error: error instanceof Error ? error.message : 'Erro desconhecido',
details: error instanceof Error ? error.stack : undefined
},
{ status: 500 }
);
}
}

View File

@ -1,14 +1,14 @@
import type { Metadata } from 'next'; import type { Metadata } from 'next';
import { Geist, Geist_Mono } from 'next/font/google'; import { Inter, JetBrains_Mono } from 'next/font/google';
import './globals.css'; import './globals.css';
const geistSans = Geist({ const inter = Inter({
variable: '--font-geist-sans', variable: '--font-inter',
subsets: ['latin'], subsets: ['latin'],
}); });
const geistMono = Geist_Mono({ const jetbrainsMono = JetBrains_Mono({
variable: '--font-geist-mono', variable: '--font-jetbrains-mono',
subsets: ['latin'], subsets: ['latin'],
}); });
@ -25,7 +25,7 @@ export default function RootLayout({
return ( return (
<html lang="pt-BR"> <html lang="pt-BR">
<body <body
className={`${geistSans.variable} ${geistMono.variable} antialiased`} className={`${inter.variable} ${jetbrainsMono.variable} antialiased`}
> >
{children} {children}
</body> </body>