fix: resolucao definitiva da extracao e persistencia de comprimento de pecas e componentes

This commit is contained in:
2026-10-16 16:24:38 -03:00
parent ebcfe3c9d2
commit 1203650c2d
3 changed files with 51 additions and 32 deletions
@@ -759,6 +759,7 @@ const AdvanceSteelConverterContent: React.FC = () => {
// Aba 3: Formato Plano Oficial para Importação TrackSteel
const excelRowsImportacao: any[] = [];
extractedData.forEach((item) => {
const comprPecaNum = item.comprimentoMax === '-' ? '' : Number(item.comprimentoMax) || '';
if (item.components && item.components.length > 0) {
item.components.forEach((comp) => {
excelRowsImportacao.push({
@@ -769,6 +770,8 @@ const AdvanceSteelConverterContent: React.FC = () => {
quantidade: Number(item.quantidade),
peso_unitario: item.pesoUnit === '-' ? 0 : Number(item.pesoUnit),
peso_total: item.pesoTotal === '-' ? 0 : Number(item.pesoTotal),
comprimento: comprPecaNum,
comprimento_ref: comprPecaNum,
tratamento_superficial: item.tratamentoSuperficial || tratamentoGlobal,
material: item.material,
perfil_principal: item.perfilPrincipal,
@@ -777,6 +780,7 @@ const AdvanceSteelConverterContent: React.FC = () => {
descricao_componente: comp.perfil || item.descricao,
perfil_componente: comp.perfil || item.descricao,
peso_unitario_componente: comp.pesoUnitario || 0,
comprimento_componente: comp.comprimento || '',
quantidade_por_peca: Number(comp.quantidade) || 1
});
});
@@ -789,6 +793,8 @@ const AdvanceSteelConverterContent: React.FC = () => {
quantidade: Number(item.quantidade),
peso_unitario: item.pesoUnit === '-' ? 0 : Number(item.pesoUnit),
peso_total: item.pesoTotal === '-' ? 0 : Number(item.pesoTotal),
comprimento: comprPecaNum,
comprimento_ref: comprPecaNum,
tratamento_superficial: item.tratamentoSuperficial || tratamentoGlobal,
material: item.material,
perfil_principal: item.perfilPrincipal,
@@ -797,6 +803,7 @@ const AdvanceSteelConverterContent: React.FC = () => {
descricao_componente: '',
perfil_componente: '',
peso_unitario_componente: 0,
comprimento_componente: '',
quantidade_por_peca: 0
});
}
@@ -835,11 +842,11 @@ const AdvanceSteelConverterContent: React.FC = () => {
try {
const importacaoRows: any[] = [];
extractedData.forEach((item) => {
const comprPeca = extrairComprimentoSeguro(item.comprimentoMax);
const comprPeca = extrairComprimentoSeguro(item.comprimentoMax) ?? extrairComprimentoSeguro(item);
if (item.components && item.components.length > 0) {
item.components.forEach((comp) => {
const comprComp = extrairComprimentoComponenteSeguro(comp.comprimento);
const comprComp = extrairComprimentoComponenteSeguro(comp.comprimento) ?? extrairComprimentoComponenteSeguro(comp);
importacaoRows.push({
of_number: item.of,
@@ -882,6 +889,7 @@ const AdvanceSteelConverterContent: React.FC = () => {
descricao_componente: '',
perfil_componente: '',
peso_unitario_componente: 0,
comprimento_componente: null,
quantidade_por_peca: 0
});
}
@@ -532,11 +532,11 @@ export const BocadConverter: React.FC = () => {
try {
const importacaoRows: any[] = [];
extractedPieces.forEach((item) => {
const comprPeca = extrairComprimentoSeguro(item.comprimentoRef);
const comprPeca = extrairComprimentoSeguro(item.comprimentoRef) ?? extrairComprimentoSeguro(item);
if (item.compostoPorComponentes === 'SIM' && item.components && item.components.length > 0) {
item.components.forEach((comp) => {
const comprComp = extrairComprimentoComponenteSeguro(comp.compr);
const comprComp = extrairComprimentoComponenteSeguro(comp.compr) ?? extrairComprimentoComponenteSeguro(comp);
importacaoRows.push({
of_number: item.of,
+39 -28
View File
@@ -32,23 +32,28 @@ const CAMPOS_MONITORADOS: CampoConfig[] = [
* Suporta múltiplos aliases de importação (Bocad, Advance Steel, Excel, CSV) e formatações de string.
*/
export function extrairComprimentoSeguro(item: any): number | null {
if (!item) return null;
if (item === undefined || item === null || item === '' || item === '-') return null;
const raw =
item.comprimento ??
item.comprimento_ref ??
item.comprimentoRef ??
item.comprimentoMax ??
item.comprimento_max ??
item.comprimento_peca ??
item['Comprimento'] ??
item['Comprimento (mm)'] ??
item['Comprimento Ref. (mm)'] ??
item['Comprimento Max. (mm)'] ??
item['Comp. (mm)'] ??
item['Comp (mm)'] ??
item.compr ??
item.comp;
let raw: any;
if (typeof item === 'number' || typeof item === 'string') {
raw = item;
} else if (typeof item === 'object') {
raw =
item.comprimento ??
item.comprimento_ref ??
item.comprimentoRef ??
item.comprimentoMax ??
item.comprimento_max ??
item.comprimento_peca ??
item['Comprimento'] ??
item['Comprimento (mm)'] ??
item['Comprimento Ref. (mm)'] ??
item['Comprimento Max. (mm)'] ??
item['Comp. (mm)'] ??
item['Comp (mm)'] ??
item.compr ??
item.comp;
}
if (raw === undefined || raw === null || raw === '' || raw === '-') return null;
@@ -76,19 +81,25 @@ export function extrairComprimentoSeguro(item: any): number | null {
* Função utilitária resiliente para extrair o comprimento numérico de subcomponentes.
*/
export function extrairComprimentoComponenteSeguro(item: any): number | null {
if (!item) return null;
if (item === undefined || item === null || item === '' || item === '-') return null;
const raw =
item.comprimento_componente ??
item.comprimentoComponente ??
item.comprimento ??
item.comprimento_ref ??
item.compr ??
item.comp ??
item['Comprimento Componente'] ??
item['Comprimento (mm)'] ??
item['Comprimento'] ??
item['Comp. (mm)'];
let raw: any;
if (typeof item === 'number' || typeof item === 'string') {
raw = item;
} else if (typeof item === 'object') {
raw =
item.comprimento_componente ??
item.comprimentoComponente ??
item.comprimento ??
item.comprimento_ref ??
item.comprimentoRef ??
item.compr ??
item.comp ??
item['Comprimento Componente'] ??
item['Comprimento (mm)'] ??
item['Comprimento'] ??
item['Comp. (mm)'];
}
if (raw === undefined || raw === null || raw === '' || raw === '-') return null;