feat: sistema de deteccao de conflitos, conciliacao e ordem de intervencao fabril na importacao de pecas
This commit is contained in:
@@ -26,6 +26,9 @@ import * as XLSX from 'xlsx';
|
||||
import { useAppLabels } from '@/hooks/useAppLabels';
|
||||
import { usePecas } from '@/hooks/usePecas';
|
||||
import { supabase } from '@/integrations/supabase/client';
|
||||
import { analisarConflitosImportacao, consolidarPecasEComponentes } from '@/utils/importDiffService';
|
||||
import { ResultadoAnaliseImportacao } from '@/types/importDiff';
|
||||
import { ImportarPecasDiffModal } from '@/components/pecas/ImportarPecasDiffModal';
|
||||
|
||||
export interface ComponentItem {
|
||||
marca: string;
|
||||
@@ -145,6 +148,9 @@ const AdvanceSteelConverterContent: React.FC = () => {
|
||||
const [statusText, setStatusText] = useState<string>('Aguardando arquivo PDF...');
|
||||
const [currentFileName, setCurrentFileName] = useState<string>('Lista_Pecas');
|
||||
const [useIframeMode, setUseIframeMode] = useState<boolean>(false);
|
||||
const [analiseDiff, setAnaliseDiff] = useState<ResultadoAnaliseImportacao | null>(null);
|
||||
const [componentesMapDiff, setComponentesMapDiff] = useState<Map<string, any[]>>(new Map());
|
||||
const [showDiffModal, setShowDiffModal] = useState(false);
|
||||
|
||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||
const logEndRef = useRef<HTMLDivElement>(null);
|
||||
@@ -872,6 +878,18 @@ const AdvanceSteelConverterContent: React.FC = () => {
|
||||
}
|
||||
});
|
||||
|
||||
toast.info('Verificando existência e status de produção das peças...');
|
||||
const analise = await analisarConflitosImportacao(importacaoRows);
|
||||
const { componentesMap } = consolidarPecasEComponentes(importacaoRows);
|
||||
|
||||
if (analise.totalComDivergencia > 0 || analise.totalIdenticas > 0 || analise.totalComApontamento > 0) {
|
||||
setAnaliseDiff(analise);
|
||||
setComponentesMapDiff(componentesMap);
|
||||
setShowDiffModal(true);
|
||||
setIsDirectImporting(false);
|
||||
return;
|
||||
}
|
||||
|
||||
await importPecas(importacaoRows);
|
||||
toast.success(`${extractedData.length} peças e seus componentes foram importados com sucesso!`);
|
||||
addLog(`✅ Importação concluída: ${extractedData.length} peças gravadas no banco.`);
|
||||
@@ -1160,6 +1178,19 @@ const AdvanceSteelConverterContent: React.FC = () => {
|
||||
)}
|
||||
</CardContent>
|
||||
</Card>
|
||||
|
||||
{/* Modal de Detecção de Conflitos e Conciliação */}
|
||||
<ImportarPecasDiffModal
|
||||
open={showDiffModal}
|
||||
onOpenChange={setShowDiffModal}
|
||||
analise={analiseDiff}
|
||||
componentesMap={componentesMapDiff}
|
||||
ofDefault={headerOf || ''}
|
||||
onConcluido={() => {
|
||||
setShowDiffModal(false);
|
||||
addLog(`✅ Importação conciliada concluída com sucesso.`);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user